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

x的是3次方,要求e<10的-6次方

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
温馨提示:内容为网友见解,仅供参考
第1个回答  2008-07-09
在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*') %检验部分,红点为解本回答被网友采纳

急需MATLAB二分法求方程求求方程f(x)=x^3-sin(x)-12*x+1的全部实根,ε...
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,...

matlab编程题:用二分法求方程x^3-3*x-1=0的根
if f(c1)==0 c1 elseif f(a1)*f(c1)>0 a1=c1;c1=(a1+b1)\/2;n=n+1;elseif f(b1)*f(c1)>0 b1=c1;c1=(a1+b1)\/2;n=n+1;end end n 再建立所要求函数的f.m文件:function y=f(x)y=x^3-3*x-1;运行:fun(-100,100,10^(-4))-100 100 为根所在该区间,10^(...

求用MATLAB编制方程求根的二分法和Newton法的 Matlab 程序!!!谢谢~
f=[4*cos(x3)+4*sin(x3)+0.5*x3]disp(['迭代次数:',num2str(ii),'次'])牛顿迭代法求解:在方程f(x)=0有实数根的情况下,若能够将方程等价地转化成x=g(x)的形式,然后取一个初始值x0代入x=g(x)的右端,算得x1=g(x0),再计算x2=g(x1),这样依次类推 x(k+1)=g(x(k))...

求助利用matlab计算含三角函数的方程组的数值解,如何使数值解更为精确...
这个数字精度应该是可以设置的,float型或者是double型都可以,这样就不会取整了

matlab求参数方程
再你的代码的最后面加下列这句代码,就可以得到s1的解。s1=vpasolve(f==0)

用二分法求解非线性方程(c,c++,matlab都可以)
include<cmath> using namespace std;double fun(double x){ double y;y=exp(-x)+exp(x);return y;} int main(){ double a,b,u,v,e;a=-1.0;b=1.0;int k=0;cout<<"请输入精度 L:"<<endl;cin>>e;while(abs(u-b)>e||abs(a-v)>e){ ++k;cout<<"第"<<k<<"次"<<...

如何用matlab 求解高阶方程?
for i=1:3 xx(i,:)=x(i).^c; end aa=xx\\y %因为是一个超定方程,即方程个数小于未知数个数只能得到一个特解 结果: aa = 3.3636 0 -2.1364 0.7727 matlab如何用ode求解x’’+x=t这种二阶方程 分成两个一阶的做。 请问一个方程如何用MATLAB求解, fsolve即可 如何用matlab求解线性方程组 比如: 1...

帮忙写个Matlab小程序
例如输入下面的程序: x=linspace(0,2*pi,20); y=sin(x); plot(x,y,'r+') title('2D plot') (2)点击文件编辑器上面工具条中的保存 ,命名(例如将上面的程序命名为picture),然后保存。像这样在MATLAB文件编辑器中编写的文件叫M-文件(M-file)。 (3)运行:i)在命令窗口中输入文件名(如上面的picture...

设函数f(x)=x^3-x,g(x)=sin2x.求f [ g (π\/12) ],f { f [ f (1...
g(X)=sin2x=sin(π\/6)=1\/2 f [ g (π\/12) ]=(1\/2)^3-1\/2=-3\/8 f(1)=1-1=0 f { f [ 1 ] }=0-0=0 f { f [ f (1) ] }=0-0=0

求解关于matlab求解隐函数非线性方程组,并绘制曲线的问题,求具体代码...
用matlab是可以解的。不过你现在的问题好像没有说清楚。前面两个方程跟后面似乎完全无关。我先把它解出来吧:>> syms x y t >> eq1='5+10*cos(5*t)-x*cos(y)=0'>> eq2='10*sin(5*t)-x*sin(y)=0'>> [x y]=solve(eq1,eq2)x = 5*(5+4*cos(5*t))^(1\/2)-5*(5+...

相似回答