二分法MATLAB实现在书上看见一个关于二分法的MATLAB程序,按照书上程序却无法计算.总是显示程序错误,请高手看看这个程序是不是有问题.function [c,err,yc]=bisect(f,a,b,delta)% f是所要求解的函数% a和
来源:学生作业帮助网 编辑:作业帮 时间:2024/07/04 18:57:28
![二分法MATLAB实现在书上看见一个关于二分法的MATLAB程序,按照书上程序却无法计算.总是显示程序错误,请高手看看这个程序是不是有问题.function [c,err,yc]=bisect(f,a,b,delta)% f是所要求解的函数% a和](/uploads/image/z/3166277-5-7.jpg?t=%E4%BA%8C%E5%88%86%E6%B3%95MATLAB%E5%AE%9E%E7%8E%B0%E5%9C%A8%E4%B9%A6%E4%B8%8A%E7%9C%8B%E8%A7%81%E4%B8%80%E4%B8%AA%E5%85%B3%E4%BA%8E%E4%BA%8C%E5%88%86%E6%B3%95%E7%9A%84MATLAB%E7%A8%8B%E5%BA%8F%2C%E6%8C%89%E7%85%A7%E4%B9%A6%E4%B8%8A%E7%A8%8B%E5%BA%8F%E5%8D%B4%E6%97%A0%E6%B3%95%E8%AE%A1%E7%AE%97.%E6%80%BB%E6%98%AF%E6%98%BE%E7%A4%BA%E7%A8%8B%E5%BA%8F%E9%94%99%E8%AF%AF%2C%E8%AF%B7%E9%AB%98%E6%89%8B%E7%9C%8B%E7%9C%8B%E8%BF%99%E4%B8%AA%E7%A8%8B%E5%BA%8F%E6%98%AF%E4%B8%8D%E6%98%AF%E6%9C%89%E9%97%AE%E9%A2%98.function+%5Bc%2Cerr%2Cyc%5D%3Dbisect%28f%2Ca%2Cb%2Cdelta%29%25+f%E6%98%AF%E6%89%80%E8%A6%81%E6%B1%82%E8%A7%A3%E7%9A%84%E5%87%BD%E6%95%B0%25+a%E5%92%8C)
二分法MATLAB实现在书上看见一个关于二分法的MATLAB程序,按照书上程序却无法计算.总是显示程序错误,请高手看看这个程序是不是有问题.function [c,err,yc]=bisect(f,a,b,delta)% f是所要求解的函数% a和
二分法MATLAB实现
在书上看见一个关于二分法的MATLAB程序,按照书上程序却无法计算.总是显示程序错误,请高手看看这个程序是不是有问题.
function [c,err,yc]=bisect(f,a,b,delta)
% f是所要求解的函数
% a和b分别为有根区间左右限
% delta是所允许的误差界
% c为所求近似解
% yc为函数f在c上的值
% err是c的误差估计
if nargin0,
disp('(a,b)不是有根区间');
return,end
max1=1+round((log(b-a)-log(delta))/log(2))
for k=1:max1
c=(a+b)/2;
yc=feval('f',c);
if yc==0 a=c;b=c;break,
elseif yb>*yc>0
b=c,yb=yc;
else
a=c;ya=c;
end
if(b-a)
二分法MATLAB实现在书上看见一个关于二分法的MATLAB程序,按照书上程序却无法计算.总是显示程序错误,请高手看看这个程序是不是有问题.function [c,err,yc]=bisect(f,a,b,delta)% f是所要求解的函数% a和
>> f=inline('x^2-x-2');
>> [c,err,yc]=bisect(f,0,3,0.01)
c =
2.0010
err =
0.0059
yc =
0.0029
-----------
%使用二分法 求解上面超越方程
%下面是二分法的函数文件,你直接设置输入参数就可以了
function [c,err,yc]=bisect(f,a,b,delta)
%Input - f is the function
% - a and b are the left and right endpoints
% - delta is the tolerance
%Output - c is the zero
% - yc= f(c)
% - err is the error estimate for c
%If f is defined as an M-file function use the @ notation
% call [c,err,yc]=bisect(@f,a,b,delta).
%If f is defined as an anonymous function use the
% call [c,err,yc]=bisect(f,a,b,delta).
% NUMERICAL METHODS: Matlab Programs
% (c) 2004 by John H. Mathews and Kurtis D. Fink
% Complementary Software to accompany the textbook:
% NUMERICAL METHODS: Using Matlab, Fourth Edition
% ISBN: 0-13-065248-2
% Prentice-Hall Pub. Inc.
% One Lake Street
% Upper Saddle River, NJ 07458
ya=f(a);
yb=f(b);
if ya*yb > 0,return,end
max1=1+round((log(b-a)-log(delta))/log(2));
for k=1:max1
c=(a+b)/2;
yc=f(c);
if yc==0
a=c;
b=c;
elseif yb*yc>0
b=c;
yb=yc;
else
a=c;
ya=yc;
end
if b-a < delta, break,end
end
c=(a+b)/2;
err=abs(b-a);
yc=f(c);