主要内容

优化工具箱솔버에서의복소수

일반적으로优化工具箱™솔버는복소수값이있는목적함수또는제약조건을허용하거나처리하지않습니다。그러나최소제곱솔버lsqcurvefitlsqnonlinlsqlinfsolve솔버는이러한목적함수를처리할수있으며,여기에는다음과같은제한사항이적용됩니다。

  • 목적함수가복소함수측면에서해석적이어야합니다(자세한내용은Nevanlinna및Paatero[1]참조)。예를들어함수f(z) = Re(z) - iIm(z)는해석적이지않지만함수F (z) = exp(z)는해석적입니다。이제한사항은lsqlin에대해자동으로성립됩니다。

  • 제약조건이없어야하며범위도없어야합니다。복소수는정렬이잘되지않으므로“범위”의의미가명확하지않습니다。문제범위가있는경우비선형최소제곱솔버는복소수값이발생하는스텝을허용하지않습니다。

  • FunValCheck옵션을“上”으로설정하지마십시오。솔버가복소수값을발견할경우이옵션은즉시솔버를중단합니다。

경고

문제기반접근법은목적함수,비선형등식또는비선형부등식에서복소수값을지원하지않습니다。함수계산에중간값으로라도복소수값이포함될경우,최종결과가올바르지않을수있습니다。

최소제곱솔버와fsolve는함수값으로구성된벡터에대한노름의제곱을최소화하려고시도합니다。이는복소수값이있는경우에도적절합니다。

비해석적함수또는제약조건이있는경우문제의실수부와허수부를분리하십시오。예제는复值数据的模型拟合항목을참조하십시오。

최선의(가장작은노름)해를구하려면복소수초기점을설정해보십시오。예를 들어1 + x4= 0을풀때실수시작점을사용하면해가구해지지않습니다。

F = @(x)1+x^4;X0 = 1;X = fsolve(f,x0)
没有找到解决办法。Fsolve停止了,因为根据梯度测量,问题似乎是规则的,但函数值的向量并不是根据函数公差的默认值测量的接近零。X = 1.1176e-08

그러나복소수초기점을사용하면fsolve가방정식을푸는데성공합니다。

X0 = 1 + 1i/10;X = fsolve(f,x0)
方程解决。Fsolve完成,因为函数值的向量用函数容差的默认值测量接近于零,而且用梯度测量问题显得有规律。X = 0.7071 + 0.7071i

참고 문헌

Nevanlinna, Rolf和V. Paatero。复态分析导论。addison - wesley, 1969年。

관련 항목