您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 实验7-无穷级数与非线性方程求解(MATLAB)
数学实验实验7无穷级数与非线性方程求解(MATLAB)数学实验1基础理论一.无穷级数......21naaa设}{na是一数列,我们把形式记号1nna称为无穷级数,也记作2实验在Matlab中,求级数和的命令为symsum,调用格式为:symsum(s,t,a,b)表达式s中的符号变量t从a到b的级数和(t缺省时设定为x或最接近x的字母)数学实验例1)求101...31211(1)利用symsum处理symsxsymsum(1/x,1,10)ans=7381/25207381/2520ans=2.9290(2)编程建立M文件计算s=0;%累加变量置初值fori=1:10s=s+1/i;enddisp('1+1/2+1/3+...+1/10=')s1+1/2+1/3+...+1/10=s=2.9290数学实验例2)求无穷级数...1...31211n的收敛性.symsnsymsum(1/n,n,1,inf)%inf表示正无穷ans=infsymsnsymsum((-1)^(n-1),n,1,inf)ans=log(2)例3)求无穷级数...1)1(...312111nn的收敛性.数学实验二.非线性方程1基础理论0...0111axaxaxannnn把称为n次代数方程.5次以上的方程就没有现成的求根公式了,但是总知道,n次方程有n个根,包括复根,当然重根要按重数计算根的个数.0)(xf它与n(≥2)次代数方程一起统称为非线性方程,记作由其它数学问题归结得到的方程中还常常包含三角函数、指数函数等超越函数如sin,,lnxxex,称为超越方程,求解超越方程不仅没有一般的公式,而且若只依据方程本身,那么连有没有根、有几个根,也难以判断。数学实验利用Matlab的图形功能就能帮助我们判断方程有没有根,并且确定根的近似位置。0305813261282345xxxxx05xex数学实验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的字母),该命令为符号计算数学实验(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)求代数方程0305813261282345xxxxx的根所以方程的根为:2.5,1.5,-0.5,-1+i,-1-i数学实验symsxf=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)符号计算数学实验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为根的代数方程数学实验3、在Matlab中,solve采用符号解法求非线性方程(组),调用格式为:solve(f,t)对f中的符号变量t解方程f=0(t缺省时设定为x或最接近x的字母),该命令为符号计算solve(‘f=g’,t)对符号变量t解方程f=g(t缺省时设定为x或最接近x的字母),该命令为符号计算数学实验symsxf=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数学实验s=double(s)s=0.25922.5426symsxf=5*x-exp(x);s=solve(f)s=[-lambertw(-1/5)][-lambertw(-1,-1/5)]05xex例2)解方程说明原方程的解无解析表达式,此时可用double计算其值数学实验symsxy[x,y]=solve('x^2+x*y+y=3','x^2-4*x+3=0')x=[1][3]y=[1][-3/2]034322xxyxyx4)解方程组所以方程组的解为(1,1),(3,-3/2).数学实验4、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则不显示每次的迭代信息;否则就显示。数学实验z=fzero(‘x3-2*x-5’,2,1e-6,1)%第四种方法例1)解方程f(x)=x3-2x-5=0z=fzero(‘x3-2*x-5’,2)%第一种方法z=2.0946z=fzero(‘x3-2*x-5’,[03])%第二种方法z=2.0946z=fzero(‘x3-2*x-5’,2,1e-6)%第三种方法z=2.0946数学实验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.0946数学实验注意1:该函数为多项式,实际的零点有3个,其余两个为一对共轭复零点。由于fzero不能求复零点,因此任意的初始估计将给出同样的结果。注意2:fzero函数认为零点是函数穿过x轴的点,时于与x轴相切的点,该函数将不能计算出来。数学实验例2)求方程sinx=x2/2的两个根,准确到10-6,取不同的初值计算,输出初值,根的近似值和迭代次数.-2-1.5-1-0.500.511.52-1-0.500.511.52x=-2:0.01:2;y1=sin(x);y2=x.^2/2;plot(x,y1,x,y2)第一步:作图估计根的大体位置令f(x)=sinx-x2/2从上图可知,方程的一个根大体在0附近,另一个根大体在1.5附近.数学实验第二步:求解z1=fzero('sin(x)-x.^2/2',1.5)z1=1.4044z2=fzero('sin(x)-x.^2/2',0.1)z2=5.8892e-023z2=fzero('sin(x)-x.^2/2',0)z2=0options=optimset('Display','iter');z2=fzero('sin(x)-x.^2/2',0.1)数学实验注意:初始值的设置很关键,关系到运行次数和最终结果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.数学实验functionF=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)第二步:求解数学实验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.5671数学实验NormofFirst-orderTrust-regionIterationFunc-countf(x)stepoptimalityradius0317.40753.11169.6090212.411290.008805822.50.1062.53125.14156e-0070.05896350.0007956.254151.76204e-0150.0004574974.65e-0086.25Optimizationterminated:first-orderoptimalityislessthanoptions.TolFun.x=0.56710.5671x0=3*ones(2,1);%另置初始解向量options=optimset('Display','iter');%设置显示输出中间反复迭代结果x=fsolve('f710',x0,options)初值更改后调用情况运行结果
本文标题:实验7-无穷级数与非线性方程求解(MATLAB)
链接地址:https://www.777doc.com/doc-5024493 .html