2017-02-20 17 views
0

Я хочу использовать немного модифицированную дополнительную функцию сложного аргумента. Я сам определил его, потому что MATLAB не может работать прямо со сложными аргументами.Дополнительная функция комплексного аргумента в matlab

[email protected](p) exp(-p.^2).*double(erfc(sym(-i*p))); 

Это работает, но не для всех аргументов. В моих петель я начал получать такие неопределенные значения,

NaN + Нани

, например, для аргумента -27.4525 +0.0070*i.

Что это значит и как с ним справиться?

+1

«MATLAB не может работать прямо с комплексными аргументами». Да, да, это может –

+0

показать мне как. Я получаю ошибку, что аргумент должен быть реальным – David

ответ

0

Я не уверен, о значении ERFC для комплексных аргументов, однако, проблема заключается в том, что ERFC уходит в бесконечность:

>> syms p real 
>> limit(erfc(p*i),p,Inf) 

ans = 

1 - Inf*i 

Вы умножая ERFC с exp(-p.^2) которое 0 следовательно Inf*0=NaN.

Это работает, если вы обрабатываете все это символически и только конвертировать продукт в числовое значение, например:

>> [email protected](p) double(exp(-sym(p).^2).*erfc(sym(-i*p))); 
>> w(-27.4525 +0.0070*i) 

ans = 

0.0000 - 0.0206*i 
+0

Спасибо. Вы мне очень помогли. – David

+0

Добро пожаловать, приятно знать, что это работает. – Florian

+1

@ Давид считает приемлемым ответ –