カルダノの方法によって、解は
=-2.637834253
=1.6810829-3.0504302i
=-1.6810829‐ +3.0504302i
2分法で計算する。
clear; close all; f = @(x) x^3+6*x^2+21*x+32; a(1)=-3; b(1)=0; c=zeros(1,100); k=2; delta=1e-10; epsilon=0.5e-5; res1=1e4; res2=1e4; while res1>delta && res2>epsilon c(k)=1/2*(a(k-1)+b(k-1)); check = f(a(k-1))*f(c(k)); if check<0 a(k) = a(k-1); b(k) = c(k); else a(k) = c(k); b(k) = b(k-1); end res1=abs(f(c(k))); res2=abs(a(k-1)-b(k-1)); k = k+1; %disp(res2); end fprintf('ans\n = %d\n',c(k-1));
計算結果
ans = -2.637833e+00
解が計算できていることがわかる。