bisecmethod.m
来自「数值计算实践是我们必备的一门学科!这是我在学习之余利用MATLAB编写的程序」· M 代码 · 共 31 行
M
31 行
function bisecMethod(f_name,a,b)
fprintf('二分法求非线性方程得根\n\n');
tolerance=1e-6; it_limit=30;
fprintf(' It. a c b fa=f(a) ');
fprintf(' fb=f(b) abs(fb-fa)\n');
it=0;
Y_a=feval(f_name,a);Y_b=feval(f_name,b);
if (Y_a*Y_b>0)
fprintf('\n\n停止,因为f(a)f(b)>0\n');
fprintf('\n重新给出端点a或b.\n');
else
while 1
it=it+1;
c=(a+b)/2;Y_c=feval(f_name,c);
fprintf('%3.0f%10.6f%10.6f',it,a,c);
fprintf('%10.6f %10.6f %10.6f%12.3e\n',b,Y_a,Y_b,abs(Y_b-Y_a));
%fprintf('%12.3e\n',abs(Y_b-Y_a))
if (abs(b-a)<=tolerance)
fprintf('结果满足允许误差tolerance=1e-6.\n');break
end
if(it>it_limit)
fprintf('迭代超过限定次数.\n');break
end
if (Y_a*Y_c<=0)b=c;Y_b=Y_c;
else a=c;Y_a=Y_c;
end
end
fprintf('最终结果:x1=%12.6f\n',c);
end
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?