急需MATLAB二分法求方程求求方程f(x)=x^3-sin(x)-12*x+1的全部实根,ε=10^-6程序 5

x的是3次方,要求e<10的-6次方... x的是3次方,要求e<10的-6次方 展开
 我来答
曲祺a3
2008-07-13 · TA获得超过674个赞
知道小有建树答主
回答量:186
采纳率:0%
帮助的人:102万
展开全部
function main
%f(x)=x3-sinx-12x+1的全部实根,ε=10-6。
x=-5:.1:5;
f=x.^3-sin(x)-12*x+1;
plot(x,f);grid on;
%http://hi.baidu.com/jingtao1016/album/item/123a761352492fc6f6039e38.html
%可以看出在实数范围(-4,-3),(0,1),(3,4)这三个区间均有根
y=inline('t^3-sin(t)-12*t+1','t');
x1=bisect(y,-4,-3,1e-6)
x2=bisect(y,0,1,1e-6)
x3=bisect(y,3,4,1e-6)

function x=bisect(fname,a,b,e)
%用途:二分法求非线性方程f(x)=0的解
%调用格式:x=bisect(fname,a,b,e)
%fname为调用函数句柄或内嵌函数表达的f(x)
%a,b为区间端点;e为精度(默认值10^-4),
%x返回解而且只能返回一个解,不管给定的区间内有多少个零点
%程序要求函数在两端点值必须异号
%fa,fb,fx引入可以最大限度减少fname调用次数,从而提高速度
if nargin<4
e=1e-4;
end
fa=feval(fname,a);fb=feval(fname,b);
if fa*fb>0
error('函数在两端点值必须异号');
end
x=(a+b)/2;
while(b-a)>(2*e)
fx=feval(fname,x);
if fa*fx<0
b=x;fb=fx;
else a=x;fa=fx;
end
x=(a+b)/2;
end

x1 =

-3.4912

x2 =

0.0770

x3 =

3.4101
wacs5
2008-07-09 · TA获得超过1.6万个赞
知道大有可为答主
回答量:3724
采纳率:82%
帮助的人:2805万
展开全部
在Matlab下输入:edit,然后将下面两行百分号之间的内容,复制进去,保存
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function y=zhidao_fx(x)
y=x.^3-sin(x)-12*x+1;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

在Matlab下输入:edit,然后将下面两行百分号之间的内容,复制进去,保存
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function x=findroot2(fx,x0,x1)
e=1e-6;
y0=eval([fx,'(x0)']);
y1=eval([fx,'(x1)']);
x=(x0+x1)/2;
y=eval([fx,'(x)']);
if (abs(x0-x1)<1e-6) return, end
if (y0*y<=0)
x=findroot2(fx,x0,x);
else
x=findroot2(fx,x,x1);
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

在Matlab命令窗口下输入以下命令

%%注:本命令只找出x0到x1之间的根,dx太大有可能出现漏解情况
x0=-5;
x1=5;
dx=0.5;
x=x0:dx:x1;
y=zhidao_fx(x);
n=length(x);
count=0;
root=[];
for i=1:n-1
if (y(i)*y(i+1)<0)
count=count+1;
root(count)=findroot2('zhidao_fx',x(i),x(i+1));
end
end
root

plot(x,y,root,zeros(size(root)),'r*') %检验部分,红点为解
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式