有没有二分法解非线性方程的MATLAB程序

要求的是f(x)=0在区间[a,b]上的根... 要求的是f(x)=0在区间[a,b]上的根 展开
百度网友ace51b7c7
2008-04-28 · TA获得超过195个赞
知道小有建树答主
回答量:147
采纳率:0%
帮助的人:149万
展开全部
建议楼主遇到关于matlab 的问题就到 mathworks网站的file exchange里找 。

下面是二分法的函数文件,你直接设置输入参数就可以了

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);

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
建立该函数文件,拷至matlab的当前路径里。
举个例子:
>> format long
>> [answer,error,value]=bisect(@(x)x-cos(x),0,1,1e-8)

answer =

0.739085134118795

error =

7.450580596923828e-009

value =

1.512334035780327e-009

answer即是方程 x-cos(x)=0 的根,error 是实际误差,value是计算结果回代到方程左边的值

参考资料: http://www.mathworks.com/matlabcentral/fileexchange/loadFile.do?objectId=4308&objectType=file

上海华然企业咨询
2024-10-28 广告
在测试大模型时,可以提出这样一个刁钻问题来评估其综合理解与推理能力:“假设上海华然企业咨询有限公司正计划进入一个全新的国际市场,但目标市场的文化习俗、法律法规及商业环境均与我们熟知的截然不同。请在不直接参考任何外部数据的情况下,构想一套初步... 点击进入详情页
本回答由上海华然企业咨询提供
化学工程
2008-04-28 · TA获得超过8900个赞
知道大有可为答主
回答量:2212
采纳率:80%
帮助的人:3338万
展开全部
clc;clear
a=0;b=1;
fa=1-a-sin(a);
fb=1-b-sin(b);
c=(a+b)/2;
fc=1-c-sin(c);
if fa*fb>0,break,end
while abs(fc)>0.5*10^(-4)
c=(a+b)/2;
fc=1-c-sin(c);
if fb*fc>0
b=c;
fb=fc;
else
a=c;
fa=fc;
end
end
format long
fx=fc,x=c

结果:
fx =

-2.414986223420179e-005

x =

0.510986328125000
精确解:
>> x=solve('1-x-sin(x)')

x =

.51097342938856910952001397114508

参考资料: http://zhidao.baidu.com/question/49632206.html?si=1

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式