非线性方程求根_第1页
非线性方程求根_第2页
非线性方程求根_第3页
非线性方程求根_第4页
非线性方程求根_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

非线性方程求根第1页,共27页,2023年,2月20日,星期四MATLAB命令例1:解方程解:在MATLAB里输入命令:

X=solve(‘8*x^9+17*x^3-3*x=-1’)可解出9个解。例2:解方程解:X=solve(‘sin(x)=0’),很可惜运行后只输出一个根x=0.缺点:用solve命令不能求出周期函数所对应的全部根。第2页,共27页,2023年,2月20日,星期四例3:解非线性方程组解:在MATLAB命令窗口输入命令:E1=sym('x^x-4=0');E2=sym('2*x*y+x=1');[x,y]=solve( E1,E2)x1=double(x),y1=double(y)出来的结果为:x=log(4)/lambertw(log(4))y=-1/2*(log(4)-lambertw(log(4)))/log(4)

第3页,共27页,2023年,2月20日,星期四

x1=2y1=-0.2500注:MATLAB系统只能做数值运算,并没有符号运算功能,符号运算工具箱(symbolicmathtoolbox)则扩充了MATLAB这方面的功能,它是由Maple的核心来完成。第4页,共27页,2023年,2月20日,星期四例4:解方程解:将方程化为,在matlab窗口输入命令>>fa=[8,0,0,0,0,0,17,0,-3,1];>>xk=roots(fa)运行后得所有根。缺点:命令roots只能求为多项式时方程的根。

第5页,共27页,2023年,2月20日,星期四一、图解法求方程的正根,设分别画出的图形,两条曲线的交点即为原方程的根,从图中观察,根大约为0.38。第6页,共27页,2023年,2月20日,星期四二、二分法对于求解给定区间的根,二分法是一种既简单又稳健的方法,可以与图解法结合使用。第7页,共27页,2023年,2月20日,星期四最终解经过n步迭代后,区间长度变为:即为可能的最大误差第8页,共27页,2023年,2月20日,星期四当给定容许误差时,所需最小迭代步数为:用于二分法计算的函数bisec_n.functionbisec_n(f_name,a,c)tolerance=0.000001;it_limit=30;fprintf('It.abcf(a)');fprintf('f(b)f(c)\n');it=0;Ya=feval(f_name,a);Yc=feval(f_name,c);if(Ya*Yc>0)fprintf('\n\nStoppedbecausef(a)f(c)>0\n');第9页,共27页,2023年,2月20日,星期四elsewhile1it=it+1;b=(a+c)/2;Yb=feval(f_name,b);fprintf('%3.0f%10.6f,%10.6f',it,a,b);fprintf('%10.6f,%10.6f,%10.6f,%10.6f\n',c,Ya,Yb,Yc);if(abs(c-a)<=tolerance)fprintf('Toleranceissatisfied.\n');breakendif(it>it_limit)fprintf('Iterationlimitexceeded.\n');breakendif(Ya*Yb<=0)c=b;Yc=Yb;elsea=b;Ya=Yb;endendfprintf('Finalresult:Root=%12.6f\n',b);end第10页,共27页,2023年,2月20日,星期四例1求函数的零点。bisec_n('fun_ex2',0.8,1.0)functionf=fun_ex2(x)f=sqrt(1+x.^2)-tan(x);解答:首先通过画图,根约为0.9,然后调用函数。结果为:Root=0.941462第11页,共27页,2023年,2月20日,星期四三、迭代法改写方程:建立迭代格式:若收敛,则必收敛到的根,即则,得到序列第12页,共27页,2023年,2月20日,星期四迭代过程的几何表示y第13页,共27页,2023年,2月20日,星期四x0=1.5;err=1;fprintf('%f',x0);whileabs(err)>0.000001x1=(x0+1).^(1/3);fprintf('%f',x1);err=x1-x0;x0=x1;end迭代收敛。第14页,共27页,2023年,2月20日,星期四x0=1.5;err=1;fprintf('%f',x0);fori=1:3x1=x0.^3+1;fprintf('%f',x1);err=x1-x0;x0=x1;end第15页,共27页,2023年,2月20日,星期四收敛充分性定理

第16页,共27页,2023年,2月20日,星期四第17页,共27页,2023年,2月20日,星期四自动生成的一个方法为:则迭代格式变为:其中为常数,可由如下方式确定:因时收敛,则也即当时,迭代收敛。其中必须与同号,当时,收敛速度最快。若在每一步迭代中,令,得到Newton迭代公式。第18页,共27页,2023年,2月20日,星期四例3求方程在内的根。解答:令的近似值为:取则迭代公式为:第19页,共27页,2023年,2月20日,星期四给出迭代法的一个M文件:function[k,piancha,xdpiancha,xk]=diedai(x0,k)%输入量--x0是初始值,k是迭代次数x(1)=x0;fori=1:kx(i+1)=fun(x(i));%程序中调用的fun.m文件

piancha=abs(x(i+1)-x(i));xdpiancha=piancha/abs(x(i+1)+eps);i=i+1;xk=x(i);[(i-1)pianchaxdpianchaxk]endif(piancha>1)&(xdpiancha>0.5)&(k>3)disp('请用户注意:此迭代序列发散,请重新输入新的迭代公式')return;end第20页,共27页,2023年,2月20日,星期四if(piancha<0.001)&(xdpiancha<0.0000005)&(k>3)disp('祝贺你!此迭代序列收敛,且收敛速度较快')return;endp=[(i-1)pianchaxdpianchaxk]’例:求方程的在区间根。解:建立M文件fun.mfunctiony1=fun(x)y1=(10-x^2)/2;在窗口输入第21页,共27页,2023年,2月20日,星期四

[k,piancha,xdpiancha,xk]=diedai(2,5)结果为:请用户注意:此迭代序列发散,请重新输入新的迭代公式若重新建立M文件:

functiony1=fun(x)y1=x-(x^2+2*x-10)/(2*x+2)在窗口输入:[k,piancha,xdpiancha,xk]=diedai(2,5)运行结果为:祝贺你!此迭代序列收敛,且收敛速度较快第22页,共27页,2023年,2月20日,星期四四、Newton迭代法设求解方程的一个根,关于初值的一阶Taylor展开为:将其看做的近似,并令为0,得到近似解:重复操作,一般地:第23页,共27页,2023年,2月20日,星期四几何解释:第24页,共27页,2023年,2月20日,星期四计算给定函数的一阶导数可能会很繁,可用差分近似代替,如:或其中h取得很小上两式分别为向前和向后差分近似。差分近似中的误差很小,对于牛顿迭代法的收敛性没有很明显的影响,然而当根的附近有奇点时使用差分近似要小心。第25页,共27页,2023年,2月20日,星期四例4推导立方根的牛顿迭代公式,并求的立方根。解:问题等价于求的零点。Newton迭代法:令,迭代3次达到精确解。n

x055.45.3718345.371686第26页,共27页,2023年,2月20日,星期四Newton迭代公式可由函数Newt_n实现。functionx=Newt_n(f_name,x0)x=x0;xb=x-999;n=0;del_x=0.01;whileabs(x-xb)>0.0001n=n+1;xb=x;ifn>300break;endy=feval(f

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论