カルダノの方法によって、解は
=-2.637834253
=1.6810829-3.0504302i
=-1.6810829‐ +3.0504302i
マラー法に比べて実装がかなり簡単だった。
精度も問題なさそうなので、まず割線法の利用を考えた方が良さそう。
clear; close all; f = @(x) x^3+6*x^2+21*x+32; buf=20; x=zeros(1,buf); x(1)=0; x(2)=-1; k=2; res=1e4; delta=1e-8; while res>delta x(k+1) = (x(k)*f(x(k-1))-x(k-1)*f(x(k)))/... (f(x(k-1))-f(x(k))); res=abs(f(x(k+1))); disp(res); k = k+1; end fprintf('ans =\n %d\n',x(k));
計算結果
ans = -2.637834e+00