matlab用sym出错,使用sym.int时出错输入参数太多

您的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无法计算积分。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值