MATLAB-复杂的线/路径积分

时间:2018-12-08 16:32:05

标签: matlab integration octave

我正在尝试使用积分命令在一些圆形闭合路径上找到复杂的线/路径积分。我对逆时针旋转一次的圆{z:| z | = 2}上的1 /(z-i)^ 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)。

我在逆时针旋转一次的圆圈{z:| z-2 | = 3}上e ^ z /(z(z ^ 2-9))的积分的代码如下:

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)。

从上面可以看出,我的问题是,当圆形路径以原点为中心时,代码给出了准确的值,但否则失败了;有时给出准确的假想部分,但给出的实际部分不准确,或者给出的答案完全不准确。

任何人都可以看到出了什么问题吗?

2 个答案:

答案 0 :(得分:0)

您期望第二个问题的答案不正确。 Mathematica告诉我答案应该是:

pi*(2/45)*(5 + (exp(2))*(5*exp(1) - 9)) + (pi/9 *(exp(3) - 2))*i

= 5.435120011473026 + 6.313043326012592i

这几乎完全是您从Matlab获得的答案。

请记住,Matlab中的integral函数执行数字集成,因此您获得的结果将受到机器舍入错误的影响。这意味着您在第一个问题上得到的结果在本质上也是正确的。这可能是通过数值积分可以获得的最佳答案。

答案 1 :(得分:0)

我已经在评论中回答了第一个问题。

对于第二个问题,您在导数的计算中犯了一个错误:加性常数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)

我借此机会建议您使用“航点”方法,而不是以前的方法来计算复杂积分。 (例如,参见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))。