实验7-无穷级数与非线性方程求解(MATLAB)课件_第1页
实验7-无穷级数与非线性方程求解(MATLAB)课件_第2页
实验7-无穷级数与非线性方程求解(MATLAB)课件_第3页
实验7-无穷级数与非线性方程求解(MATLAB)课件_第4页
实验7-无穷级数与非线性方程求解(MATLAB)课件_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

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

文档简介

实验7无穷级数与非线性方程求解(MATLAB)实验71基础理论一.无穷级数设是一数列,我们把形式记号称为无穷级数,也记作2实验在Matlab中,求级数和的命令为symsum,调用格式为:symsum(s,t,a,b)表达式s中的符号变量t从a到b的级数和(t缺省时设定为x或最接近x的字母)1基础理论一.无穷级数设是一数列,我们把形式记号称为无穷例1)求(1)利用symsum处理>>symsx>>symsum(1/x,1,10)ans=7381/2520>>7381/2520ans=2.9290(2)编程建立M文件计算s=0;%累加变量置初值fori=1:10s=s+1/i;enddisp('1+1/2+1/3+...+1/10=')s>>1+1/2+1/3+...+1/10=s=2.9290例1)求(1)利用symsum处理(2)编程建立M文件例2)求无穷级数的收敛性.>>symsn>>symsum(1/n,n,1,inf)%inf表示正无穷ans=inf>>symsn>>symsum((-1)^(n-1),n,1,inf)ans=log(2)例3)求无穷级数的收敛性.例2)求无穷级数的收敛性.>>symsn>>syms二.非线性方程1基础理论把称为n次代数方程.5次以上的方程就没有现成的求根公式了,但是总知道,n次方程有n个根,包括复根,当然重根要按重数计算根的个数.它与n(≥2)次代数方程一起统称为非线性方程,记作由其它数学问题归结得到的方程中还常常包含三角函数、指数函数等超越函数如,称为超越方程,求解超越方程不仅没有一般的公式,而且若只依据方程本身,那么连有没有根、有几个根,也难以判断。二.非线性方程1基础理论把称为n次代数方程.5次以上的利用Matlab的图形功能就能帮助我们判断方程有没有根,并且确定根的近似位置。利用Matlab的图形功能就能帮助我们判断方程有没有根,2代数方程求解当f(x)为多项式时可用r=roots(c)输入多项式c(按降幂排列),输出r为f(x)=0的全部根(包括复数根),该命令为数值计算c=poly(r)输入f(x)=0的全部根r,输出c为多项式的系数(按降幂排列),该命令为数值计算solve(f,t)对f中的符号变量t解方程f=0(t缺省时设定为x或最接近x的字母),该命令为符号计算2代数方程求解(1)数值计算>>c=[8-12-26-135830];%输入多项式c(按降幂排列)>>r=roots(c)%求多项式c的全部根(包括复数根)r=2.50001.5000-1.0000+1.0000i-1.0000-1.0000i-0.5000例1)求代数方程的根所以方程的根为:2.5,1.5,-0.5,-1+i,-1-i(1)数值计算例1)求代数方程的根所以方程的根为:2.5>>symsx>>f=8*x^5-12*x^4-26*x^3-13*x^2+58*x+30;>>s=solve(f)s=[-1/2][3/2][5/2][-1+i][-1-i]所以方程的根为:-1/2,3/2,5/2,-1+i,-1-i.(2)符号计算>>symsx所以方程的根为:-1/2,3/2,5/2,>>r=[0.25-12+3i2-3i];>>c=poly(r)c=1.0000-3.25009.750010.7500-3.2500例2)求以0.25,-1.5,2+2i,2-2i为根的代数方程>>r=[0.25-12+3i2-3i];例2)求3、在Matlab中,solve采用符号解法求非线性方程(组),调用格式为:solve(f,t)对f中的符号变量t解方程f=0(t缺省时设定为x或最接近x的字母),该命令为符号计算solve(‘f=g’,t)对符号变量t解方程f=g(t缺省时设定为x或最接近x的字母),该命令为符号计算3、在Matlab中,solve采用符号解法求非线性方程>>symsx>>f=cos(2*x)+sin(x)-1;>>s=solve(f)s=[0][pi][1/6*pi][5/6*pi]1)解方程cos2x+sinx=1(在最小正周期内求解)先将方程化为cos2x+sinx-1=0>>symsx1)解方程cos2x+sinx=1(在>>s=double(s)s=0.25922.5426>>symsx>>f=5*x-exp(x);>>s=solve(f)s=[-lambertw(-1/5)][-lambertw(-1,-1/5)]例2)解方程说明原方程的解无解析表达式,此时可用double计算其值>>s=double(s)>>symsx例2)解方程>>symsxy>>[x,y]=solve('x^2+x*y+y=3','x^2-4*x+3=0')x=[1][3]y=[1][-3/2]4)解方程组所以方程组的解为(1,1),(3,-3/2).>>symsxy4)解方程组所以方程组的解为(1,14、Matlab中fzero采用数值解法求解非线性方程,其调用格式为:(1)z=fzero(‘fun’,x0)对单变量函数fun求解,返回函数的解z.fun为包含任意单变量函数的文件名字符串。(2)z=fzero(‘fun’,x0)设置解的搜索区域x0,其中x0为一个长度为2的向量,而f(x(1))的符号和f(x(2))的符号不同,调用时如果符号相同则报错。(3)z=fzero(‘fun’,x0,tol)设置解的精度,返回的函数值的相对误差必须在变量tol给定的范围内。(4)z=fzero(‘fun’,x0,tol,trace)设置显示每次的迭代信息,如果trace=0则不显示每次的迭代信息;否则就显示。4、Matlab中fzero采用数值解法求解非线性方程,其调>>z=fzero(‘x3-2*x-5’,2,1e-6,1)%第四种方法例1)解方程f(x)=x3-2x-5=0>>z=fzero(‘x3-2*x-5’,2)%第一种方法z=2.0946>>z=fzero(‘x3-2*x-5’,[03])%第二种方法z=2.0946>>z=fzero(‘x3-2*x-5’,2,1e-6)%第三种方法z=2.0946>>z=fzero(‘x3-2*x-5’,2,1e-6,1)Funcevalsxf(x)Procedure12-1initial21.94343-1.54667search32.05657-0.414934search41.92-1.76211search52.08-0.161088search61.88686-2.05602search72.113140.209619searchLookingforazerointheinterval[1.8869,2.1131]82.0922-0.0261891interpolation92.09453-0.000272594interpolation102.094556.41518e-009interpolation112.09455-4.67499e-005interpolationz=2.0946第四种方法说明经过11次迭代得到一个近似根2.0946Funcevalsxf注意1:该函数为多项式,实际的零点有3个,其余两个为一对共轭复零点。由于fzero不能求复零点,因此任意的初始估计将给出同样的结果。注意2:fzero函数认为零点是函数穿过x轴的点,时于与x轴相切的点,该函数将不能计算出来。注意1:该函数为多项式,实际的零点有3个,其余两个为注意2:例2)求方程sinx=x2/2的两个根,准确到10-6,取不同的初值计算,输出初值,根的近似值和迭代次数.>>x=-2:0.01:2;>>y1=sin(x);>>y2=x.^2/2;>>plot(x,y1,x,y2)第一步:作图估计根的大体位置令f(x)=sinx-x2/2从上图可知,方程的一个根大体在0附近,另一个根大体在1.5附近.例2)求方程sinx=x2/2的两个根,准确到10-6,取第二步:求解>>z1=fzero('sin(x)-x.^2/2',1.5)z1=1.4044>>z2=fzero('sin(x)-x.^2/2',0.1)z2=5.8892e-023>>z2=fzero('sin(x)-x.^2/2',0)z2=0>>options=optimset('Display','iter');>>z2=fzero('sin(x)-x.^2/2',0.1)第二步:求解>>z1=fzero('sin(x)-x.^2/注意:初始值的设置很关键,关系到运行次数和最终结果5、Matlab中fsolve函数采用非线性最小二乘算法求解非线性方程组,其调用格式为:x=fsolve(‘fun’,x0)x=fsolve(‘fun’,x0,options)[x,fval]=fsolve(‘fun’,x0,..)说明:非线性方程的一般描述f(x)=0,其中x为向量,f(x)为一个函数向量。x=fsolve(‘fun’,x0)非线性方程fun求根,返回解向量x,方程fun定义在M文件fun.m中,并置初始解向量为x0.注意:初始值的设置很关键,关系到运行次数和最终结果5、MatfunctionF=f710(x)F=[2*x(1)-x(2)-exp(-x(1));-x(1)+2*x(2)-exp(-x(2))]第一步:编写函数组M文件x0=-5*ones(2,1);%置初始解向量options=optimset(‘Display’,‘iter’);%设置显示输出中间反复(iteration)迭代结果x=fsolve('f710',x0,options)第二步:求解functionF=f710(x)第一步:编写函数组M文件NormofFirst-orderTrust-region迭代次数函数赋值次数函数值步最优的半径范围IterationFunc-countf(x)stepoptimalityradius0347071.22.29e+00411612003.415.75e+0031293147.0211.47e+0031312854.45213881415239.5271107151867.0412130.8162116.704219.0517242.4278812.2618270.0326580.7595110.2062.59307.03149e-0060.1119270.002942.510333.29525e-0130.001691326.36e-0072.5Optimizationterminated:first-orderoptimalityislessthanoptions.TolFun.x=0.56710.5671NormofFirst-orderTrNormofFirst-orderTrust-regionIterationFunc-countf(x)stepoptimalityradius0317.4075

温馨提示

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

评论

0/150

提交评论