MATLAB - комплексная линия / интеграл пути - PullRequest
0 голосов
/ 08 декабря 2018

Я пытаюсь найти сложные интегралы линии / пути по нескольким круговым замкнутым путям, используя команду интеграла.Мой код для интеграла 1 / (zi) ^ 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: | z-2 | = 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).

Как видно выше, моя проблема заключается в том, что, хотя код дает точные значения, когда круговой путь центрирован в начале координат, в противном случае происходит сбой;иногда давая точную мнимую часть, но неточную действительную часть или просто совершенно неточный ответ.

Кто-нибудь может увидеть, что идет не так?

Ответы [ 2 ]

0 голосов
/ 08 декабря 2018

Я ответил на первый вопрос в комментарии.

Для второго вопроса вы допустили ошибку в вычислении производной: аддитивная константа 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) +е ^ 3 / (27-9)).

0 голосов
/ 08 декабря 2018

Ответ, который вы ожидаете от второй проблемы, неверен.Mathematica говорит мне, что ответ должен быть:

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

= 5.435120011473026 + 6.313043326012592i

, что почти точно ответ, который вы получите от Matlab.

Помните, что функция integral в Matlab выполняет числовую интеграцию, поэтому полученные результаты будут подвержены ошибкам округления машины.Это означает, что результат, который вы получили по первой задаче, также по существу корректен;это, вероятно, лучший ответ, который вы могли бы получить с помощью числовой интеграции.

...