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

时间:2016-06-06 19:05:18

标签: maple

我有一个非线性系统方程求解器的代码。 我有一个像这样的命令很麻烦:

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

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

任何人都可以帮我吗?

2 个答案:

答案 0 :(得分:0)

点强制浮动计算

默认-2 = -2.0 正确无误。 Maple计算方式有很大差异:如果你使用-2它会计算 exacts (算术表达式),而-2.0则告诉Maple用浮点数计算(数字表达式)。

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

对于某些计算来说,这可能是一个非常重要的事情;无论是速度还是精度,都应该仔细考虑进行复杂的计算。

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

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!!!)

答案 1 :(得分:-1)

经过一番努力,我终于找到了它的作用!

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

扩展答案:(示例)

给定2个函数,我们想要计算该方程组的Jacobin矩阵

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]