我试图使用integral命令在几条封闭的循环路径上找到复杂的线/路径积分。我的1/(z-i)^2积分在反时针方向横过的圆{z:|z|=2}上的代码如下:
fun = @(z) 1 ./((z-1i) .^ 2);;
g = @(t) 2 .*(cos(t) + 1i .* sin(t));
gprime = @(t) 2 .*(-sin(t) + 1i .* cos(t));
q1 = integral(@(t) fun(g(t)) .* gprime(t),0,2 .* pi)(我希望答案是0,matlab给出6.6613*10^(-16)-4.4409*10^(-16)i)。
我的代码e^z/(z(z^2-9))在圆圈上的积分{z:而今=3}逆时针方向通过如下:
fun = @(z) exp(z) ./(z .* (z.^2-9));
g = @(t) 2+3 .*(cos(t) + 1i .* sin(t));
gprime = @(t) 2+3 .*(-sin(t) + 1i .* cos(t));
q1 = integral(@(t) fun(g(t)) .* gprime(t),0,2 .* pi)(我希望答案是pi/9(e^3-2)i,但是matlab给出了5.4351+6.3130i)。
正如上面所看到的,我的问题是,当圆路径集中在原点时,代码给出了精确的值,但却失败了;有时给出一个精确的虚部,但给出不准确的实部,或者只是给出一个完全不准确的答案。
有人能看出是怎么回事吗?
发布于 2018-12-08 18:59:24
我已在评论中回答了第一个问题。
对于第二个问题,你在计算导数时犯了一个错误:加性常数2应该消失。这样,您将得到的结果是6.3130i,完全符合理论值。
fun = @(z) exp(z) ./(z .* (z.^2-9));
g = @(t) 2+3 .*(cos(t) + 1i .* sin(t));
gprime = @(t) 3 .*(-sin(t) + 1i .* cos(t));
q1 = integral(@(t) fun(g(t)) .* gprime(t),0,2 .* pi)我借此机会建议您使用"way points“方法(例如https://uk.mathworks.com/help/matlab/math/complex-line-integrals.html)计算复杂积分,而不是以前的方法。
C=[-2+i,-2-i,5-i,5+i];
integral(@(z) (exp(z) ./(z .* (z.^2-9))),1,1,'WayPoints',C)其中,C是一个方格(更一般地说是任何正方形),它包围着所需的极点,并且只包含它们。(始终取第二个和第三个参数为1,1)
附录:用剩余定理对理论值进行快速的个人检验:
2i pi(Res(f,0)+Res(f,3))=2i pi(1/(-9)+e^3/(27-9))。
发布于 2018-12-08 18:33:26
你期待的第二个问题的答案是不正确的。Mathematica告诉我答案应该是:
pi*(2/45)*(5 + (exp(2))*(5*exp(1) - 9)) + (pi/9 *(exp(3) - 2))*i
= 5.435120011473026 + 6.313043326012592i这几乎就是你从Matlab得到的答案。
请记住,Matlab中的integral函数执行数值积分,因此得到的结果将受到机器舍入误差的影响。这意味着,对于第一个问题所得到的结果在本质上也是正确的;它可能是数值积分所能得到的最好的答案。
https://stackoverflow.com/questions/53684571
复制相似问题