matlab编程积分正无穷,matlab中,对1/(x+10^-6i)积分,积分区间是负无穷到正无穷,怎么积?...

满意答案

02ae427d08e371d7e90d5b995e828d6d.png

沁心静暖

2016.05.19

02ae427d08e371d7e90d5b995e828d6d.png

采纳率: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分享举报

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值