概述
您的Matlab 7.12.0版本也被称为R2011a,它没有'PrincipalValue'的功能。 R2011a的文档可以在here找到。
我的Matlab的副本为您的积分返回的值是
(pi*243045032034301i)/70368744177664000 + pi^2/4000
然而,使用命令integrate(log(x) - log(1000))/(x^2 - 1000000)) from 0 to infinity与Wolfram Alpha的,没有虚部产生只有真正pi^2/4000组件。此外,Wolfram Alpha不计算主值,因为它似乎能够评估w = 1000的不确定积分,如here所示。根据Wolfram Alpha的说法,这意味着不需要像常规积分一样计算主值。 Matlab似乎不同意,因为它计算了f2的一个不同的抗衍生物。
如果你想尝试和使用Matlab的版本计算为其他功能主值,下面的脚本可以作为一个模板的工作(使用柯西主值的定义,发现了here):
syms w;
syms e;
syms b;
format long; % For long decimal display
f2=(log(w)-log(1000))/(w^2-1000000);
fake_inf = 5e60; % Really high number, gives NaN for true inf
% Cauchy Principal Value about w = 1000: compute as limit of a sum
integral1 = int(f2, w, 0, 1000-e);
integral2 = int(f2, w, 1000+e, fake_inf);
% Built-in Principal Value integral result:
% int(f2, w, 0, inf, 'PrincipalValue', true);
0.002467401100272 + 0.010850676618623i
CPV = limit(integral1+integral2, e, 0, 'right');
eval(CPV)
其输出
ans =
0.002467401100272 + 0.010850676618623i
ans =
0.002467401100272 - 0.417381909829793i
0.002467...哪里是pi^2/4000十进制扩张。由Matlab和Wolfram Alpha计算出的抗衍生物在他们的真实论证中是一致的,但在他们的虚构论证中却是不同的(Wolfram Alpha没有)。
请注意,我使用'fake_inf'变量:如果使用真实的inf值,则Matlab无法计算积分。
最后
以上就是玩命自行车为你收集整理的matlab用sym出错,使用sym.int时出错输入参数太多的全部内容,希望文章能够帮你解决matlab用sym出错,使用sym.int时出错输入参数太多所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复