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

Matlab 使用sym.int时出错输入参数过多,matlab,Matlab,我搜索了一些“输入参数太多”的问题,但没有找到答案 我是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. 如何克服此问题?您的Matlab 7.12

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

我是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.

如何克服此问题?

您的Matlab 7.12.0版本(也称为R2011a)没有
“PrincipalValue”
功能。可以找到R2011a的文档

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

(pi*243045032034301i)/70368744177664000 + pi^2/4000
但是,使用命令
integrate(log(x)-log(1000))/(x^2-1000000))将Wolfram Alpha从0到无穷大
只生成不带虚部的实
pi^2/4000
分量。此外,Wolfram Alpha没有计算主值,因为它似乎能够在
w=1000时计算不定积分,如图所示。根据Wolfram Alpha,这意味着不需要计算主值,因为存在普通积分。Matlab似乎不同意,因为它为
f2
计算了不同的反导数

如果要尝试使用您的Matlab版本计算其他函数的主值,以下脚本可以用作模板(使用找到的Cauchy主值的定义):

哪个输出

ans =

  0.002467401100272 + 0.010850676618623i


ans =

  0.002467401100272 - 0.417381909829793i
其中
0.002467…
pi^2/4000
的十进制扩展。Matlab和Wolfram Alpha计算的反导数在真实参数上是一致的,但在假想参数上是不同的(Wolfram Alpha没有)


请注意,我使用了一个“
fake\u inf
”变量:如果使用了true
inf
值,Matlab无法计算积分

上面的代码在我的系统上运行。当您通过
doc symbol/int
访问本地文档时,是否解释了
PrincipalValue
?可能此功能仅在最新版本中可用。不,本地文档中没有关于此功能的详细说明。谢谢。你知道有没有办法得到它?没有安装新的?我用7.12.0非常感谢你。你的答案是最好的!。我试着使用一个新的vers,因为我想对150个不同的常数做这个,所以我会试着和那些希望它能工作的人做一个循环,而不是用150个不同的函数崩溃:P
ans =

  0.002467401100272 + 0.010850676618623i


ans =

  0.002467401100272 - 0.417381909829793i