カルダノの方法によって、解は
=-2.637834253
=1.6810829-3.0504302i
=-1.6810829‐ +3.0504302i
xをzとおいたは解析関数(微分可能な複素関数)なので、1次元ニュートンラフソン法でも複素解が計算できる。(一般的にf(z)が解析関数であるのはまれ)
初期値を複素数に置くのがミソ。初期値が実数(たとえばz(1)=0)だと実解に収束する。
clear; close all; f = @(z) z^3+6*z^2+21*z+32; dfdz = @(z) 3*z^2+12*z+21; z=zeros(1,100); z(1)=-1-3i; delta=1e-10; res=1e4; k=2; while res>delta z(k) = z(k-1) - f(z(k-1))/dfdz(z(k-1)); res = abs(f(z(k))); %disp(res); k = k+1; end disp(z(k-1));
計算結果
-1.6811 - 3.0504i