[int.,int] 在 Maple 中意味着什么?

What does [int.,int] means in Maple?

我有一个代码可以用作非线性系统方程求解器。 我对这样的命令遇到了很多麻烦:

newt[0]:=[-2.,20]:

我不知道那个点在那里有什么用! 我认为这可能是为了显示它是 -2.0,但没有理由在默认情况下使用它 -2 = -2.0.

谁能帮我解决这个问题?

经过一段时间的使用,我终于找到了它的作用!

简答:它计算表达式的结果,其中这 2 个整数是输入。

扩展答案:(示例)

给定 2 个函数,我们要计算此方程组的雅各宾矩阵

with(linalg);
with(plots);
f := proc (x, y) -> (1/64)*(x-11)^2-(1/100)*(y-7)^2-1;
g := proc (x, y) -> (x-3)^2+(y-1)^2-400;

然后我们将函数放入向量中:

F:=(x, y) -> vector([f(x,y),g(x,y)]);
F(-2 ,20)
F(-2.,20)

结果将是这样的:

[-79/1600 -14]
[-0.049375000 -14]

点强制浮点计算

默认-2 = -2.0正确。 Maple 在计算方式上有很大的不同:如果你使用 -2 它计算 exacts (算术表达式)而 -2.0 告诉 Maple 用 floats(数值表达式).

这两个表达式 -2.*sqrt(5)-2*sqrt(5.) 在 Maple 处理它们的方式上是完全不同的,如果你注意到浮动位置的话!第一个例子的平方根是算术计算的,而第二个例子是数值计算的!

这对于某些计算来说可能是个大问题;无论是速度还是精度,在做复杂的计算时都要慎重考虑。


速度示例:x = 1,2,...,50000 计算 exp(x)。 (算术 > 数值)

CodeTools:-Usage(seq(exp(x),x=1..50000)):      # Arithmetic
memory used=19.84MiB, alloc change=0 bytes, cpu time=875.00ms, 
real time=812.00ms, gc time=265.62ms
CodeTools:-Usage(seq(exp(1.*x),x=1..50000)):   # Numerical
memory used=292.62MiB, alloc change=0 bytes, cpu time=9.67s,
real time=9.45s, gc time=1.09s

请特别注意所用内存的巨大差异。 这是使用浮点数时性能较差的示例。相反,如果我们只是进行近似,那么数值近似要快得多。

近似exp(1)(数值>算术)

CodeTools:-Usage(seq((1+1/x)^x,x=1..20000)):    # Arithmetic
memory used=0.64GiB, alloc change=0 bytes, cpu time=39.05s,
real time=40.92s, gc time=593.75ms
CodeTools:-Usage(seq((1+1./x)^x,x=1..20000)):   # Numerical
memory used=56.17MiB, alloc change=0 bytes, cpu time=1.06s,
real time=1.13s, gc time=0ns

精度示例:对于精度,如果不小心,可能会非常出错。

f:=x->(Pi-x)/sin(x);
limit(f(x),x=Pi);           # Arithmetic returns 1 (true value)
limit(f(x),x=Pi*1.);        # Numerical returns 0 (wrong!!!)