我是靠谱客的博主 玩命自行车,最近开发中收集的这篇文章主要介绍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无法计算积分。

最后

以上就是玩命自行车为你收集整理的matlab用sym出错,使用sym.int时出错输入参数太多的全部内容,希望文章能够帮你解决matlab用sym出错,使用sym.int时出错输入参数太多所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(55)

评论列表共有 0 条评论

立即
投稿
返回
顶部