为何差距这么大
mathematica吧
全部回复
仅看楼主
level 12
燎火6a 楼主
一个数用两种类型表示算出的结果为何差距这么大:
N[Integrate[
Exp[(10^(-4))*t]*ArcTan[((10^(-4)) - t)^2], {t, 0, 10^(-4)}]/
Integrate[2*t*((10^(-4)) - t), {t, 0, 10^(-4)}], 10]
1.0000000025+ 0.*10^-11i
N[Integrate[Exp[0.0001*t]*ArcTan[(0.0001 -t)^2], {t, 0, 0.0001}]/
Integrate[2*t*(0.0001 - t), {t, 0, 0.0001}], 10]
-32.7418
请教各位这是怎么回事啊[疑问]
2024年06月24日 01点06分 1
level 8
在mathematica语言中,相同小数的工作精度是不如分数的,因此下面一种写法的误差会大于上面一种。
另外,对于这种数值较小的定积分你可以尝试使用NIntegrate来代替N[Integrate],在你的例子中这两个式子在NIntegrate下给出一样的结果1.
2024年06月24日 08点06分 3
多谢解惑!但上面是求两个积分之比的值,这该怎么写,是不是要分别写两个NIntegrate?
2024年06月24日 09点06分
@燎火6a 是的,两个都要改成NIntegrate
2024年06月24日 09点06分
@星耀_XingYao 多谢多谢!
2024年06月24日 09点06分
吧务
level 15
N这个函数不能提升精度,只能把高精度数舍入为低精度数,而默认的MachinePrecision数字(不知道我在说啥的执行下 Precision[0.0001] )舍入优先级是最低的。
这个问题不用NIntegrate也是可以的,只要你精度设置得当:
With[{coef = 0.0001`32},
Integrate[Exp[coef*t]*ArcTan[(coef - t)^2], {t, 0, coef}]/
Integrate[2*t*(coef - t), {t, 0, coef}]]
(* 1.000000002500 + 0.*10^-12 I *)
2024年07月06日 01点07分 4
吧务
level 15
另参百度知道问题《Mathematica实数保留n位有效数字和保留n位小数的最简单的方法分别是什么?》(编号588921103153505885)
2024年07月06日 01点07分 5
多谢啦
2024年07月06日 22点07分
1