满意答案
沁心静暖
2016.05.19
采纳率:50% 等级:12
已帮助:4049人
积分很简单,所以先手算出积分,再正负无穷带进去让matlab算
---------------------------------------------------------------------------
∫ dx/[ x+10^(-6i) ]
= ln[ x+10^(-6i) ] .................. (在复数范围内,ln不需要再加绝对值)
所以代码为:
limit( log( x+10^(-6i) ), x = infinity) - limit( log( x+10^(-6i) ), x = -infinity)追问: 为什么不可以,这么做 syms x
s=1/(x+(10e-6).*i);
int (s,x,-inf,inf);
我这样求出来:结果是:ans=NaN
追答: 用这种方法计算积分的话,matlab会用上限的值减去下限的值,但上下限的值中都包含 inf,
于是就会出现 inf - inf 的情况
我试了一下:
>> inf-inf
ans =
NaN
这是合理的,因为无穷不能进行加减运算,所以这个积分算出来就变成NaN了
(总的来说,如果积分上下限包含 inf 的话,积分的运算就包含极限了。但 int 的主要功能是算积分,并不能求极限。所以用求积分的 function 很难行得通)
-------------------------------------
因此,为了能计算带有 inf 的极限,可以选择 limit
>> limit( log((x+10^(-6i))/(-x+10^(-6i))) , x , inf) ..................... 这里化简了一下
ans =
pi*1i
得出最终结果 πi
-------------------------------------
但是,int 可以算一些无穷的积分,比如:
∫ (1/x^2) dx.......(x 从 1 到正无穷)
>> s = @(x) 1./x^2;
>> int(s,x,1,inf)
ans =
1
int 给出了正确的答案
(所以到头来还是因为 1/(x+10^(-6i)) 这个积分太奇怪了,既包含无穷又包含复数,这也是int失效的主要原因吧)
追问: 为什么不可以,这么做 syms x
s=1/(x+(10e-6).*i);
int (s,x,-inf,inf);
我这样求出来:结果是:ans=NaN
00分享举报