使用 sym.int 时出错 输入参数过多

Posted

技术标签:

【中文标题】使用 sym.int 时出错 输入参数过多【英文标题】:Error using sym.int Too many input arguments 【发布时间】:2015-04-20 16:10:07 【问题描述】:

我搜索了一些“输入参数过多”。问题,但我没有找到答案...

我是matlab的新手,所以我有以下问题

我想使用 principalvalue 方法进行集成,但收到以下消息

 syms w
 f2=(log(w)-log(1000))/(w^2-1000000)
 int(f2, w, 0, inf, 'PrincipalValue', true)

我明白了:

Error using ==> sym.int
Too many input arguments.

我能做些什么来克服这个问题?

【问题讨论】:

上面的代码在我的系统上运行。当您通过doc symbolic/int 访问本地文档时,是否解释了PrincipalValue?也许这个功能只在最近的版本中可用。 不,本地文档中对此没有任何解释。谢谢。你知道有没有办法得到它?没有安装新的?我使用 7.12.0 【参考方案1】:

您的 Matlab 版本 7.12.0,也称为 R2011a,没有 'PrincipalValue' 功能。 R2011a 的文档可以在here找到。

我的 Matlab 副本为您的积分返回的值是

(pi*243045032034301i)/70368744177664000 + pi^2/4000

但是,使用带有 Wolfram Alpha 的命令 integrate(log(x) - log(1000))/(x^2 - 1000000)) from 0 to infinity 只会产生没有虚部的真正的 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 无法计算积分。

【讨论】:

非常感谢。您的回答是最好的!我尝试使用新版本,因为我想为 150 个不同的常量执行此操作,所以我将尝试与那些希望它能够工作并且不会因 150 个不同的函数而崩溃的循环:P

以上是关于使用 sym.int 时出错 输入参数过多的主要内容,如果未能解决你的问题,请参考以下文章

使用 ImageMagick 创建 GIF 图像时出错:异常过多和闪烁问题

使用 SOC 和 SRP 时,我应该担心代码块之间传递的参数过多吗?

使用“bvp4c”Matlab 函数求解微分方程组,错误 --> 错误使用 bvp4c 输入参数过多

“输入参数过多”是啥意思?

post提交参数过多时,取消Tomcat对 post长度限制

MATLAB subplot 函数 sys 输入参数过多