MATLAB习题答案(清华大学)_第1页
MATLAB习题答案(清华大学)_第2页
MATLAB习题答案(清华大学)_第3页
MATLAB习题答案(清华大学)_第4页
已阅读5页,还剩278页未读 继续免费阅读

下载本文档

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

文档简介

MATLAB习题答案(清华大学)高等应用数学问题MATLAB求解习题参考解答(薛定宇著)目录第1章计算机数学语言概述2第2章MATLAB语言程序设计基础5第3章微积分问题的计算机求解17第4章线性代数问题的计算机求解29第5章积分变换与复变函数问题的计算机求解43第6章代数方程与最优化问题的计算机求解53第7章微分方程问题的计算机求解71第8章数据插值、函数逼近问题的计算机求解93第9章概率论与数理统计问题的计算机求解114第10章数学问题的非传统解法127第A章自由数学语言Scilab简介136第1章计算机数学语言概述1在你的机器上安装MATLAB语言环境,并键入demo命令,由给出的菜单系统和对话框原型演示程序,领略MATLAB语言在求解数学问题方面的能力与方法。【求解】在MATLAB提示符》下键入demo命令,则将打开如图1-1所示的窗口,窗口左侧的列表框可以选择各种不同组合的演示内容。图1-1MATLAB演示程序界面1例如,用户选择MATLAB!Graphics!VolumeVlsulization演示,则将得出如图1-2所示的演示说明,单击其中的Runthisdemo栏目,则将得出如图1-3所示的演示界面。用户可以在该界面下按按钮,逐步演示相关内容,而实现这样演示的语句将在该程序界面的下部窗口中给出。2作者用MATLAB语言编写了给出例子的源程序,读者可以自己用type语句阅读一下源程序,对照数学问题初步理解语句的含义,编写的源程序说明由下表列出。第1章计算机数学语言概述3图1-2MATLAB演示程序界面举例序号文件名程序说明例1.1clexl.m利用MATLAB的符号运算工具箱求解微分问题例1.2clex2.m分别利用MATLAB的符号运算工具箱和数值运算功能求解多项式方程,其中用数值方法得出的结果有误差例1.3clex3.m分别利用MATLAB的符号运算工具箱和数值运算功能计算Hilbert矩阵的行列式,其中用数值方法得出的结果有很大误差例1.4clex4.m令xl=y;x2=y_,则可以将原来的二阶微分方程转换成2ー阶微分方程组,然后就可以求解微分方程的数值解了,原方程是非线性微分方程,故不存在解析解。ode45()函数可以求解常微分方程组,而dde23()可以求解延迟微分方程,或更直观地采用Simulink绘制求解框图。例1.5clex5.m线性规划问题调用最优化工具箱中的linprogO函数可以立即得出结果,若想求解整数规划问题,则需要首先安装整数规划程序ipslvmexOo4第1章计算机数学语言概述图1-3MATLAB体视化演示程序界面第2章MATLAB语言程序设计基础!启动MATLAB环境,并给出语句tic,A=rand(500);B=inv(A):norm(A*B-eye(500)),toe,试运行该语句,观察得出的结果,并利用help命令对你不熟悉的语句进行帮助信息查询,逐条给出上述程序段与结果的解释。【求解】在MATLAB环境中感触如下语句,则可以看出,求解500£500随机矩阵的逆,并求出得出的逆矩阵与原矩阵的乘积,得出和单位矩阵的差,得出范数。一般来说,这样得出的逆矩阵精度可以达到10i120>>tic,A=rand(500);B=inv(A);norm(A*B-eye(500)),toc3ans=1.2333e-012Elapsedtimeis1.301000seconds.2试用符号元素工具箱支持的方式表达多项式f(x)=x5+3x4+4x3+2x2+3x+6»并令X=Si1s+1,将f(x)替换成S的函数。【求解】可以先定义出f函数,则由subs()函数将x替换成s的函数»symssxf=x-5+3*x*4+4*x*3+2*x*2+3*x+6;F=subs(f,x,(s-l)/(s+1))F二(s-1)^5/(s+l)"5+3*(s-1)"4/(s+D^4+4*(s-1)"3/(s+D*3+2*(s-1)*2/(s+1)^2+3*(s-1)/(s+1)+63用MATLAB语句输入矩阵A和B矩阵①A二26641234432134142413775;②B2664TOC\o"1-5"\h\z+ 4j 2 + 3j 3 + 2j 4 + lj4+ lj 3 + 2j 2 + 3j 1 + 4j+ 3j 3 + 2j 4 + lj 1 + 4j+ 2j 2 + 3j 4 + lj 1 + 4j775前面给出的是4£4矩阵,如果给出A(5;6)=5命令将得出什么结果?【求解】用课程介绍的方法可以直接输入这两个矩阵»A=[l234;4321;2341;3241]A=12346第2章MATLAB语言程序设计基础321523413241若给出A(5,6)=5命令,虽然这时的行和列数均大于B矩阵当前的维数,但仍然可以执行该语句,得出»A(5,6)=5A二123400432100234100324100000005复数矩阵也可以用直观的语句输入»B=[l+4i2+3i3+2i4+1i;4+1i3+2i2+3il+4i;2+3i3+2i4+lil+4i;3+2i2+3i4+lil+4i];B=1.0000+4.OOOOi2.0000+3.OOOOi3.0000+2.OOOOi4.0000+1.OOOOi4.0000+l.OOOOi3.0000+2.OOOOi2.0000+3.OOOOi1.0000+4.OOOOi2.0000+3.OOOOi3.0000+2.OOOOi4.0000+l.OOOOi1.0000+4.OOOOi3.0000+2.OOOOi2.0000+3.OOOOi4.0000+l.OOOOi1.0000+4.OOOOi4假设已知矩阵A,试给出相应的MATLAB命令,将其全部偶数行提取出来,赋给B矩阵,6用A二magic(8)命令生成A矩阵,用上述的命令检验一下结果是不是正确。【求解】魔方矩阵可以采用magic()生成,子矩阵也可以提取出来»A=magic(8),B=A(2:2:end,:)A=642361606757955541213515016TOC\o"1-5"\h\z1747 46 20 21 43 42 244026 27 37 36 30 31 333234 35 29 28 38 39 254123 22 44 45 19 18 484915 14 52 53 11 10 56858595462631B=955541213515016第2章MATLAB语言程序设计基础7402627373630313341232244451918488585954626315用MATLAB语言实现下面的分段函数y=f(x)=8<7h;x>Dh=Dx;jxj6Dih;x<iDo【求解】两种方法,其ー,巧用比较表达式解决»y=h*(x>D)+h/D*x.*(abs(x)<=D)-h*(xく-D);另外一种方法,用循环语句和条件转移语句>>fori=l:length(x)ifx(i)>D,y(i)=h;elseifabs(x(i))<=D,y(i)=h/D*x(i);else,y(i)=-h;endend其中,前者语句结构简单,但适用范围更广,允许使用矩阵型x,后者只能使用向量型的x,但不能处理矩阵问题。6用数值方法可以求出S二X63i=02i=1+2+4+8+000+262+263,试不采用循环的形式求出和式的数值解。由于数值方法采用double形式进行计算的,难以保证有效位数字,所以结果不一定精确。试采用符号运算的方法求该和式的精确值。8【求解】用符号运算的方式可以采用下面语句»sum(sym(2)."[1:63])ans=18446744073709551614由于结果有19位数值,所以用double型不能精确表示结果,该数据类型最多表示16位有效数字。其实用符号运算方式可以任意保留有效数字,例如可以求200项的和或1000项的和可以由下面语句立即得出。>>sum(sym(2),[1:200])ans=3213876088517980551083924184682325205044405987565585670602750»sum(sym(2).[1:1000])ans=2143017214372534641896850098120003621122809623411067214887500776740702102249872244986396757631391716255189345835106293650374290571384628088第2章MATLAB语言程序设计基础7196915514939714960786913554964846197084214921012474228375590836430609294996716388253479753511833108789215412582914239295537308433539208596633052487736744113361387507编写ー个矩阵相加函数matadd(),使其具体的调用格式为A=matadd(A1,A2,A3,0tい,要求该函数能接受任意多个矩阵进行解法运算。【求解】可以编写下面的函数,用varargin变量来表示可变输入变量functionA=mat_add(varargin)A=0;fori=l:length(varargin),A=A+varargin{i};end如果想得到合适的错误显示,则可以试用try,catch结构。functionA=matadd(varargin)tryA=0;fori=l:length(varargin),A=A+varargin{1};endcatch,error(lasterr);end8自己编写一个MATLAB函数,使它能自动生成一个m£m的Hanke1矩阵,并使其调用格式为v=[hl;h2;hm;hm+1;000;h2mi1];H=myhankel(v)〇【求解】解决这样的问题可以有多种方法:①最直接的方法,Hi;j=hi+jil,利用双重循环functionH=myhankel(v)m=(length(v)+1)/2;%严格说来还应该判定给定输入向量长度奇偶性lOfori=l:m,forj=l:mH(i,j)=v(i+j-l);end,end②考虑某一行(或列),ai=[hi;hi+1;000;hi+mil],就可以用单重循环生成Hanke!矩阵了functionH=myhankel(v)m=(length(v)+1)/2;%严格说来还应该判定给定输入向量长度奇偶性fori=l:m,H(i,:)=v(i:i+m-l);end③利用现有的hankelO函数,则functionH=myhankel(v)m=(length(v)+1)/2;%严格说来还应该判定给定输入向量长度奇偶性H=hankel(v(1:m),v(m:end));第2章MATLAB语言程序设计基础99已知Fibonacci数列由式ak=akj1+akj2;k=3;4;000可以生成,其中初值为al=a2=1,试编写出生成某项Fibonacci数值的MATLAB函数,要求①函数格式为尸fib(k),给出k即能求出第k项ak并赋给y向量;②编写适当语句,对输入输出变量进行检验,确保函数能正确调用;③利用递归调用的方式编写此函数。【求解】假设fib(n)可以求出Fibonacci数列的第n项,所以对n>3则可以用k=fib(nil)+fib(ni2)可以求出数列的n+1项,这可以使用递归调用的功能,11而递归调用的出口为1〇综上,可以编写出Mー函数。functiony=fib(n)ifround(n)==n&n>=lifn>=3y=fib(n-l)+fib(n-2);else,y=l;endelseerror(*nmustbepositiveinteger.*)end例如,n=10可以求出相应的项为»fib(10)ans=现在需要比较一下递归实现的速度和循环实现的速度»tic,fib(20),toeans=832040elapsed_time=62.0490>>tic,a=[l1];fori=3:30,a(i)=a(i-l)+a(i-2);end,a(30),toeans=12832040elapsed_time=0.0100应该指出,递归的调用方式速度较慢,比循环语句慢很多,所以不是特别需要,解这样问题没有必要用递归调用的方式。10第2章MATLAB语言程序设计基础10由矩阵理论可知,如果ー个矩阵M可以写成M=A+BCBT,并且其中A,B,C为相应阶数的矩阵,则M矩阵的逆矩阵可以由下面的算法求出1=A+BCBT=Ai1iAiIB3Ci1+BTAiIBBTAi1试根据上面的算法用MATLAB语句编写・个函数对矩阵M进行求逆,并通过ー个小例子来检验该程序,并和直接求逆方法进行精度上的比较。13【求解】编写这个函数functionMinv=partinv(A,B,C)Minv=inv(A)-inv(A)*B*inv(inv(C)+B'*inv(A)*B)*B'*inv(A);假设矩阵为M=2664515036165077603236608748163248683775且已知该矩阵可以分解成A二2664100000300004314775;B二266412343404000003775;C二266440000300002000013775对这个例子。可以»M=[51503616;50776032;36608748;16324868];iM=inv(M);%数值逆,直接解法15iM=0.0553-0.03890.00170.0041-0.03890.0555-0.0210-0.00210.0017-0.02100.0328-0.01370.0041-0.0021-0.01370.0244»A=diag([l234]);B=hankel([l234]);C=diag([4321]);iMl=part_inv(A,B,C)%分块矩阵的求解方法iMl=0.0553-0.03890.00170.0041-0.03890.0555-0.0210-0.00210.0017-0.02100.0328-0.01370.0041-0.0021-0.01370.0244乍看结果,似乎二者完全一致,实际上数值算法是有区别的。我们这里用解析方法得出矩阵的逆,然后用下面的语句比较两个结果的精度第2章MATLAB语言程序设计基础11»Ml=sym(M);iM0=inv(Ml)iMO=[10713/193751,-7546/193751,332/193751,796/193751][-7546/193751,10759/193751,-4068/193751,-416/193751][332/193751,-4068/193751,19075/581253,-2652/193751][796/193751,-416/193751,-2652/193751,18919/775004]16»norm(double(iMO)-iM)%直接求解的误差范数ans=7990e-017»norm(doub1e(iMO)-iM1)%间接求解的误差范数ans=6583e-016可见,用间接方法得出的逆矩阵误差更大,因为在这里新编写的函数中inv()函数使用了多次,由此产生很大的传递误差。由此可以得出结论:如果某问题存在直接解,则尽量别使用间接方法,以加大传递误差。11下面给岀了一个迭代模型(xk+1=1+yki1:4x2kyk+1=0:3xk写出求解该模型的Mー函数,如果取迭代初值为xO=0,yO=0,那么请进行30000次迭代求出ー组x和y向量,然后在所有的xk和yk坐标处点亮一个点(注意不要连线),最后绘制出所需的图形。提示这样绘制出的图形又称为Henon引力线图,它将迭代出来的随机点吸引到ー起,最后得出貌似连贯的引力线图。17【求解】用循环形式解决此问题,可以得出如图2T所示的Henon引力线图。»x=0;y二〇;fori=l:29999x(i+l)=l+y(i)-1.4*x(i)*2;y(i+l)=O.3*x(i);endplot(x,y,'・’)上述的算法由于动态定义x和y,所以每循环ー步需要重新定维,这样做是很消耗时间的,所以为加快速度,可以考虑预先定义这两个变量,如给出x二zeros(1,30000)。12用MATLAB语言的基本语句显然可以立即绘制ー个正三角形,试结合循环结构,编写ー个小程序,在同一个坐标系下绘制出该正三角形绕其中心旋转后得出的ー系列三角形,还可以调整旋转步距观察效果。12第2章MATLAB语言程序设计基础-1.5-1-0.500.511.5-0.4-0.3-0.218-0.10.10.20.30.4图2THenon引力线图【求解】假设正三角形逆时针旋转卩度,则可以得出如图2-2a所示的示意图,三角形的三个顶点为为osN;sinM),(cos(卩+120〒);sin(卩+120〒)),(cos(卩+24〇〒);sin0A+24〇〒)),可以绘制出其曲线,如图2-2b所示,试减小步距,如选择”=2;1;0:1,观察效果。卩xy6(a)示意图-1-0.500.51-1-0.5190.51(b)曲线绘制效果图2-2曲线绘制»t=[0,120,240,0]*pi/180;%变换成弧度xxx二口;yyy=[];fori=0:5:360tt=i*pi/180;xxx=[xxx;cos(tt+t)];yyy=[yyy;sin(tt+t)];end第2章MATLAB语言程序设计基础13plot(xxx',yyy','r'),axis('square*)13选择合适的步距绘制出下面的图形sin卩1t,其中t2(il;Do【求解】用普通的绘图形式,选择等间距,得出如图2-3a所示的曲线,其中x=0左右显得粗糙。20»t=-l:〇,03:1;y=sin(1./t);plot(t,y)选择不等间距方法,可以得出如图2-3b所示的曲线。»t=[-l:o.03:-0.25,-0.248:0.001:0.248,0.25:.03:1];y=sin(l./t);plot(t,y)-1-0.500.51-1-0.50.51(a)等间距曲线绘制-1-0.500.51-1-0.51(b)不等间距曲线绘制图2-3不同自变量选取下的sin(l二t)曲线14对合适的N范围选取分别绘制出下列极坐标图形①%=1:0013財,②%=cos(7^=2),③%=sin(四)=ル④%=1jcos3(7N)【求解】绘制极坐标曲线的方法很简单,用polar(%力)即可以绘制出21极坐标图,如图2-4所示。注意绘制图形时的点运算:»t=0:0.01:2*pi;subplot(221),polar(t,1.0013*t.2),%(a)subplot(222),tl=0:0.01:4*pi;polar(tl,cos(7*tl/2))%(b)subplot(223),polar(t,sin(t)./t)%(c)subplot(224),polar(t,l-(cos(7*t)).3)15用图解的方式找到下面两个方程构成的联立方程的近似解。x2+y2=3xy2;x3ix2=y2jy【求解】这两个方程应该用隐式方程绘制函数ezplotO来绘制,交点即方程的解,如图2-5a所示。14第2章MATLAB语言程序设计基础20403021060902701203002215033018000.5130210602409027012030015033018000.51302106024023902701203001503301800123021060240902701203003301800图2-4极坐标图»ezplotCx2+y~2-3*x*y-2,);24holdonezplotCx*3-x*2=y2-y1)可用局部放大的方法求出更精确的值,如图2-5b所示。从图上可以精确读出两个交点,(0:4012;j0:8916),(1:5894;0:8185)〇试将这两个点分别代入原始方程进行验证。-6-4-20246—6-4-2246xyx3-x2=y2-y=0(a)两个方程的曲线,交点为解1.58941.58941.58941.58941.58941.58941.58940.81850.81850.8185250.81850.8185xyx3-x2=y2-y=0(b)局部放大区域图2-5二元联立方程的图解法第2章MATLAB语言程序设计基础1516请分别绘制出xy和sin(xy)的三维图和等高线。【求解】(a)给出下面命令即可,得出的图形如图2-6a、b所示。»[x,y]=meshgrid(-1:.1:1);surf(x,y,x.*y),figure;contour(x,y,x.*y,30)(b)给出下面命令即可,得出的图形如图2-6c、d所示。»[x,y]=meshgrid(-pi1:pi);surf(x,y,sin(x.*y)),figure;contour(x,y,sin(x.*y),30)-11-11-126-0.500.51xy三维图ー1一0.500.51-1-0.50xy等高线ー505-505一1-0.500.5271sin(xy)三维图-3-2-10123-3-2-1123sin(xy)等高线图2-6三维图与等高线17在图形绘制语句中,若函数值为不定式NaN,则相应的部分不绘制出来,试利用该规律绘制z=sinxy的表面图,并剪切下x2+y260:52的部分。【求解】给出下面命令可以得出矩形区域的函数值,再找出x2+y260:52区域的坐标,将其函数值设辂成NaN,最终得出如图2-7所示的曲面。16第2章MATLAB语言程序设计基础>>[x,y]=meshgrid(-l:.1:1);z=sin(x.*y);ii=find(x「2+y.2<=0.5へ2);z(ii)=NaN;surf(x,y,z)-128-0.50.51-1-0.50.51-1-0.50.51图2-T得出的三维图第3章微积分问题的计算机求解1试求出如下极限。①limx!l(3x+9x)1x,②lim29x!l(x+2)x+2(X+3)x+3【求解】极限问题由下面的语句可以直接求出。»symsx;f=(3へx+9%)へ(1/x);limit(f,x,inf)ans=9>>symsx;f=(x+2)へ(x+2)*(x+3)(x+3)/(x+5)へ(2*x+5);limit(f,x,inf)ans=exp(-5)2试求下面的双重极限。①limx!j1y!2x2y+xy3(x+y)3,②limx!0y!0xyp30xy+1j1,③limx!0y!0jcosx2+y2x2+y20ex2+y2〇【求解】双重极限问题可以由下面语句直接求解。»symsxyfa=(x*2*y+x*y3)/(x+y)3;limit(limit(fa,x,-1),y,2)ans=-6»fb=x*y/(sqrt(x*y+l)-l);limitdimit(fb,x,0),y,0)ans=>>fc=(1-cos(x*2+y*2))*exp(x2+y*2)/(x*2+y*2);limit(limit(fc,x,0),y,0)ans=313求出下面函数的导数。①y(x)=qxsinxPiex,②y二1iPcosax(1icosax)③atanyx=ln(x2+y2),@y(x)=j1naInxn+axn;n>018第3章微积分问题的计算机求解【求解】由求导函数diff()可以直接得出如下结果,其中③为隐函数,32故需要用隐函数求导公式得出导数。»symsx;f=sqrt(x*sin(x)*sqrt(l-exp(x)));simple(diff(f))ans=1/2/(x*sin(x)*(1-exp(x))(1/2))"(1/2)♦(sin(x)♦(1-exp(x))(1/2)+x*cos(x)*(l-exp(x))(l/2)-l/2*x*sin(x)/(l-exp(x))*(l/2)*exp(x))»symsaxy=(1-sqrt(cos(a*x)))/(x*(l-cos(sqrt(a*x))))simple(diff(y))ans=l/2/cos(a*x)(l/2)*sin(a*x)*a/x/(l-cos((a*x)~(1/2)))-(1-cos(a*x)(l/2))/x2/(l-cos((a*x)(l/2)))-l/2*(l-cos(a*x)"(1/2))/x/(1-cos((a*x)(1/2)))2*sin((a*x)"(1/2))/(a*x)*(1/2)*a»f=atan(y/x)Tog(x2+y2);fl=simple(-diff(f,x)/diff(f,y))fl=(y+2*x)/(x-2*y)>>symsnpositive;symsa;f=-log((xn+a)/xn)/(n*a);diff(f,x)ans=-(n/x-(xへn+a)/(x*n)*n/x)/(x*n+a)*xへn/n/a用LATEX表示上面的结果,则33①1=2卩sin(x)P1jex+xcos(x)p1jexj1=2xsin(x)exp1jex1qxsin(x)P1jex②1=2sin(ax)apcos(ax)x(1icos(pax))1j34Pcos(ax)x2(1jcos(pax))j1=231jpcos(ax)'sin(pax)ax(1icos(pax))2pax③y+2xxj2y④i35gnx(xn+a)nxnxxn(xn+a)j1njlaj14试求出y(t)=s(xj1)(xi2)(xi3)(xi4)函数的4阶导数。【求解】高阶导数可以由下面语句直接得出»symsaxf=sqrt((x-l)*(x-2)/(x-3)/(x-4));simple(diff(f,x,4))ans=第3章微积分问题的计算机求解193*(16*x^ll-392*x\0+4312*x^9-28140*x,,8+121344*x^7-36456〇・x"6+783552*x~5-1214604*x"4+1342560*x'3-1015348*x"2+474596*x-103741)/((x-l)*(x-2)/(x-3)/(x-4))*(7/2)/(x-3)*8/(x-4)*8336U16x1li392xl0+4312x9i28140x8+121344x7;364560x6+783552x5;1214604x4+1342560x3;1015348x2+474596xj103741》ル(xj1)(xj2)(xj3)(xj4)U7=2(xi3)8(xi4)85在高等数学中,求解分子和分母均同时为0或1时,分式极限时可使用L'H"pital法则,即对分子分母分别求导数,再由比值得出,试用该法则limx!0ln(l+x)In(1ix)jln(ljx2)x4并和直接求出的极限结果相比较。【求解】从给出的分母看,若想使之在x=0处的值不为〇,则应该对其求4阶导数,同样,还应该对分子求4阶导数,将x=0代入结果,这样就可以使用L'H-opital法则求出极限了。>>symsX:n=log(l+x)*log(l-x)-log(l-x~2);d=x"4;37n4=diff(n,x,4);d4-diff(d,x,4);n4=subs(n4,x,0);L=n4/d41/12现在直接求极限可以验证上述结果是正确的。»limit(n/d,x,0)ans=1/126已知参数方程%x=Incosty=costjtsint,试求出dydx和d2ydx2t=p=3o【求解】参数方程的导数可以由下面语句宜接求出。38»symst;x=log(cos(t));y=cos(t)-t*sin(t);diff(y,t)/diff(x,t)ans=-(-2*sin(t)-t*cos(t))/sin(t)*cos(t)>>f=diff(y,t,2)/diff(x,t,2);subs(f,t,sym(pi)/3)ans3/8-l/24*pi*371/2)7假设u=cosj1rxy,试验证@2u@x@y=@2u@y@xo【求解】证明二者相等亦可以由二者之差为零来证明,故由下面的语句直接证明。20第3章微积分问题的计算机求解>>symsxy;u=acos(x/y);diff(diff(u,x),y)-diff(diff(u,y),x)39ans=8设(xu+yv=0yu+xv=1,试求解@x@y【求解】用下面的语句可以直接得出如下结果。»symsxyuv[u,v]=solve(,x*u+y*v二〇','y*u+x*v=l','u,v');diff(diff(u,x),y)2/(xへ2-yハ2厂2*x+8*yへ2/(xへ2-yへ2)へ3*x9假设f(x;y)=Zxyejt2dt»试求y40@2f@x2i2@2f@x@y+@2f@y2□【求解】由下面的命令可以得出所需结果。»symsxytf=int(exp(-t*2),t,0,x*y);x/y*diff(f,x,2)-2*diff(diff(f,x),y)+diff(f,y,2)simple(ans)tins~-2*exp(-xへ2*yへ2)*(-x2*yへ2+1+xへ3*y)10假设已知函数矩阵f(x;y;z)=3x+eyzx3+y2sinz,试求出其Jacobi矩阵。【求解】Jacobi矩阵可以由下面的语句直接得出。»symsxyz41F=[3*x+exp(y)*z;x3+y2*sin(z)];jacobian(F,[x,y,z])ans=[3,exp(y)*z,exp(y)][3*x*2,2*y*sin(z),y*2*cos(z)]1I试求解下面的不定积分问题。①I(x)二iZ3x2+ax2(x2+a)2dx,②I(x)=Zpx(x+1)Px+P+XdxI(x)=xeaxcosbxdx,@I(t)=Zeaxsinbxsincxdx42【求解】①该不定积分可以由下面的命令直接求出第3章微积分问题的计算机求解21»symsxaf=(3*x-2+a)/(x"2+(x'2+a)2);int(f,x)ans=12/(4+16*a)/(2+4*a+2*(l+4*a)"(1/2))"(1/2)*atan(2*x/(2+4*a+2*(l+4*a)~(1/2))"(1/2))+48/(4+16*a)/(2+4*a+2*(l+4*a)*(1/2))*(1/2)*atan(2*x/(2+4*a+2*(l+4*a)(1/2))*(1/2))*a+12/(4+16*a)/(2+4*a+2*(l+4*a)'(1/2))*(1/2)*atan(2*x/(2+4*a+2*(l+4*a)"(1/2))"(1/2))*(l+4*a)'(1/2)+16/(4+16*a)/(2+4*a+2*(1+4*a)*(1/2))*(1/2)*atan(2*x/(2+4*a+2*(l+4*a)~(1/2))~(1/2))*(l+4*a)~(1/2)*a+12/(4+16*a)/(2+4*a-2*(l+4*a)'(l/2))"(l/2)*atan(2*x/(2+4*a-2*(l+4*a)*(1/2))"(1/2))+48/(4+16*a)/(2+4*a-2*(l+4*a)*(1/2))*(1/2)*atan(2*x/(2+4*a-2*(l+4*a)*(1/2))"(1/2))*a-12/(4+16*a)/(2+4*a-2*(l+4*a)"(1/2))*(1/2)*atan(2*x/(2+4*a-2*(l+4*a)"(1/2))"(1/2))*(l+4*a)*(1/2)-16/(4+16*a)/(2+4*a-2*(l+4*a)"(l/2))"(l/2)*atan(2*x/(2+4*a-2*(1+4*a)"(1/2))"(1/2))*(1+4*a)"(1/2)*a②可以用下面的语句求出问题的解43»symsx;f=sqrt(x*(x+1))/(sqrt(x)+sqrt(x+1));int(f,x);latex(ans)并将其显示如下2=15Px(x+l)x(3x+5)Px+1i2=15Px(x+1)(x+1)(j2+3x)Px③可以求出下面的结果»symsabxf=x*exp(a*x)*cos(b*x);int(f,x);latex(ans)其数学显示为Aaxa2+b2ia2ib244(a2+b2)2eaxcos(bx)jbxa2+b2+2ab(a2+b2)2Ieaxsin(bx)用下面的语句求解,得»symsxabc;f=exp(a*x)*sin(b*x)*sin(c*x);latex(int(f,x))22第3章微积分问题的计算机求解亦即1=2aeaxcos((bjc)x)a2+(bic)2j1=2(jb+c)eaxsin((b।c)x)a2+(bjc)2j1=2aeaxcos((b+c)x)a2+(b+c)2+1=2(jbic)eaxsin((b+c)x)45a2+(b+c)212试求出下面的定积分或无穷积分。①I=Z1cosXdx,②I二Z1+x2+x4dx【求解】①可以直接求解>>symsx;int(cos(x)/sqrt(x),x,0,inf)ans=1/2*271/2)*pi*(1/2)②可以得出»symsx;int((l+x*2)/(l+x*4),x,0,1)ans=1/4*271/2)*pi13假设f(x)=ej5xsin(3x+p=3),试求出积分函数R(t)=46Ztf(x)f(t+x)dxo【求解】定义了X的函数,则可以由subs()函数定义出t+X的函数,这样由下面的语句可以直接得出R函数。»symsxt;f=exp(-5*x)*sin(3*x+sym(pi)/3);R=int(f*subs(f,x,t+x),x,0,t);simple(R)ans=1/1360*(15*exp(t)へ10*3ヘ(1/2)*cos(3*t)-25*cos(9*t)+25*exp(t)へ10*371/2)*sin(3*t)-68*cos(3*t)T5*3(l/2)*cos(9*t)-25*3*(1/2)*sin(9*t)-15*exp(t)*10*sin(3*t)+15*sin(9*t)+93*exp(t)10*cos(3*t))/exp(t)15该结果可以写成1136015(et)10p3cos(3t)i68cos(3t)j15(et)10sin(3t)i25P3sin(9t)+25(et)10p3sin(3t)+15sin(9t)j25cos(9t)j1547P3cos(9t)+93(et)10cos(3t)(et)1514对a的不同取值试求出I=Z1cosax1+x2dxo【求解】由下面的循环结构可以得出不同a值下的无穷积分值,并可以绘制出它们之间关系的曲线,如图3-1所示。第3章微积分问题的计算机求解23>>symsxa;f=cos(a*x)/(l+x2);aa=[0:0.l:pi];y二口;forn=aab=int(subs(f,a,n),x,0,inf);y=[y,double(b)];endplot(aa,y)00.511.522.533.50.20.40.6480.811.21.41.6图3T不同a值下的积分值曲线15试对下面函数进行Fourier幕级数展开。①f(x)=(pijxj)sinx;ip6xくp②f(x)=ejxj;ip6xくp③f(x)=(2x=l;0<x<1=22(1ix)=l;1=2<x<1,且1二p。【求解】①可以立即由下面的语句求出。>>symsx;f=(sym(pi)-abs(x))*sin(x);[A,B,F]=fseries(f,x,10,-pi,pi);FF=l/2*pi*sin(x)+16/9/pi*sin(2*x)+32/225/pi*sin(4*x)+48/1225/pi*sin(6*x)+64/3969/pi*sin(8*x)+80/9801/pi*sin(l0*x)该结果在LATEX下可以显示为12psinx+49169sin2xp+32225sin4xp+481225sin6xp+643969sin8xp+80980150sinlOxP②可以由下面语句求解,并得出数学公式为»symsx;f=exp(abs(x));[A,B,F]=fseries(f,x,10,-pi,pi);F得出的解析解为1=22epi2P+(iepj1)cos(x)P+(2=5epj2=5)cos(2x)P+(i1=5epi1=5)cos(3x)P24第3章微积分问题的计算机求解+(2=17epj2=17)cos(4x)p51十(i1=13epj1=13)cos(5x)p+i237epi237£cos(6x)p+(i1=25epj1=25)cos(7x)p+i265epj265ccos(8x)PI(i1=41epj1=41)cos(9x)52pI101epj2101ccos(10x)P进ー步观察结果可见,该式子可以手工化简,例如提取系数(epi(il)n)=p0或对各项系数逐项求值(保留10位有效数字)»vpa(F,10)ans=7.047601355-7.684221126*cos(x)+2.819040541*cos(2.*x)T.536844225*cos(3.*x)+.8291295709*cos(4.*x)-.5910939328*cos(5.*x)+.3809514246*cos(6.*x)-.3073688450*cos(7.*x)+.2168492724*cos(8.*x)-.1874200274*cos(9.*x)+.1395564625*cos(10.*x)③似乎求解起来更困难,巧妙利用符号运算工具箱中的heavisideO函数,则可以将原函数表示成f(x)=2Qheaviside533xip2Pxjxip=2jxjp=2这样就可以用下面的语句求出函数的Fourier级数。>>symsx;pil=sym(pi);f=2*heaviside(x-pi1/2)-2/pil*x*abs(x-pil/2)/(x-pil/2);[a,b,F]=fseries(f,x,10,-pi,pi);FF=T/4+4/piへ2*cos(x)+(4/pi+2)/pi*sin(x)-2/pi2*cos(2*x)T/pi*sin(2*x)+4/9/pi*2*cos(3*x)+(-4/9/pi+2/3)/pi*sin(3*x)-l/2/pi*sin(4*x)+4/25/pi、2*cos(5*x)+(4/25/pi+2/5)/pi*sin(5*x)-2/9/p/2*cos(6*x)-l/3/pi*sin(6*x)+4/49/piへ2*cos(7*x)+(-4/49/pi+2/7)/pi*sin(7*x)-l/4/pi*sin(8*x)+4/81/pi02*cos(9*x)+(4/81/pi+2/9)/pi*sin(9*x)-2/25/pi*2*cos(10*x)-l/5/pi*sin(10*x)i1=4+454cos(x)p2+j4pi1+20sin(x)pi2cos(2x)p2jsin(2x)p+4=9cos(3x)p2+jsin(3x)p55i1=2sin(4x)p+425cos(5x)p2+j425pj1+2=50sin(5x)pi2=9cos(6x)p2i1=3sin(6x)p+44956cos(7x)p2+ij449pi1+2=70sin(7x)pi1=4sin(8x)p+481cos(9x)p2+j481pi1+2=90sin(9x)pj57225cos(lOx)p2i1=5sin(lOx)P16试求出下面函数的Taylor暴级数展开。第3章微积分问题的计算机求解25①Zxsinttdt②In③In3x+58P1+x2(4)(1+4:2x2)0:2⑤ej5xsin(3x+p=3)分别关于x=0>x=a的冢级数展开⑥对f(x;y)=jcosx2+y2ix2+y20ex2+y2关于x=1;y=0进行二维Taylor暴级数展开。【求解】由下面的语句可以分别求出各个函数的幕级数展开,由latex(ans)函数可以得出下面的数学表示形式。>symstx;f=int(sin(t)/t,t,0,x);taylor(f,x,15)>symsx;f=log((l+x)/(l-x)),taylor(f,x,15)»symsx;f=log(x+sqrt(1+x2));taylor(f,x,15)>symsx;f=(l+4.2*x2)0.2;taylor(f,x,13)①xi1=18x3+591600x5j135280x7+13265920x9i1439084800x11+180951270400x13②2x+2=3x3+2=5x5+2=7x7+2=9x9+2=11x11+2=13x13③xj1=6x3+340x5i5112x7+351152x9j632816x11+13312x1360④1+2125x2i882625x4+5556615625x6i4084101390625x8+162955629948828125xlOj1368827291161220703125xl2⑤该函数的前4项展开为>>symsxa;f=exp(-5*x)*sin(3*x+sym(pi)/3);taylor(f,x,4,a)ej5asin33a+p3+613a+p3'j5ej5asin33a+p3''(xja)+38ej5asin33a+p3'i15ej5acos33a+p623(xia)2+333ej5acos33a+p3+5=3ej5asin33a+p3(xja)3@该函数需要使用Maple的展开函数。»symsxy;f=(1-cos(x*2+y*2))/((x*2+y*2)*exp(x*2+y2));F=maple(,mtaylor,,f,'[x=l,y]’,4)1icos(1)el+(2sin(1)i4+4cos(1))(xi1)63el+(j6cos(1)i7sin(1)+8)(xj1)2el+(sin(1)j2+2cos(1))y2el+j343+323sin(1)+16=3cos(1),(xi1)3el+(j8cos(1)+10j8sin(1))y2(xi1)el+i836j6cos(1)i343sin(1)(xi1)4(24sin(1)+16cos(1)i27)y2(xj1)2el+(i2cos(1)+5=2j2sin(1))y4el+i13415cos(1)+19415sin(1)i24415C(xi1)5el+i1643j28cos(1)i1403sin(1)cy2(xi1)3el26第3章微积分问题的计算机求解+(14sin(1)j16+10cos(1))y4(xi1)65el17试求下面级数的前n项及无穷项的和。①11£6

16£11+000+1(5ni4)(5nや,,,②卩12+13HIM66122+132+000+卩+1)2n+13nT+000【求解】下面的语句可以直接求解级数的和。»symsnk;symsum(l/(5*k-4)/(5*k+l),k,1,n)ans=-l/5/(5*n+l)+l/5»symsumd/(5*k-4)/(5*k+l),k,1,inf)ans=1/5»symsnk;symsum(l/2k+l/3k,k,1,n)ans=67-2*(l/2厂(n+l)-3/2*(l/3)-(n+l)+3/2>>symsum(l/2k+1/3k,k,1,inf)ans=3/2当然,无穷级数的和还可以通过极限的方式求出。!8试求出下面的极限。①limn!1122i1142i1+162i1+000+1(2n)2i1②lim68n!ln卩1n2+p+1n2+2p+1n2+3p+ccc+n2+np【求解】①可以用下面两种方法求解。»symskn;symsum(l/((2*k)*2-1),k,1,inf)ans=1/2»limit(symsum(l/((2*k)2-1),k,1,n),n,inf)ans=1/269②可以由下面的语句直接求解。»symsknlimit(n*symsum(l/(n*2+k*pi),k,1,n),n,inf)ans=第3章微积分问题的计算机求解27119试对下面数值描述的函数求取各阶数值微分,并用梯形法求取定积分。xi00.10.20.30.40.50.60.70.80.911.11.2yi02.20773.20583.44353.2412.81642.3111.81011.36020.981720.679070.44730.27684【求解】可以由下面的语句得出函数的各阶导数,得出的曲线如图3-2所示。»x=[0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1,1.1,1.2];y=[0,2.2077,3.2058,3.4435,3.241,2.8164,2.311,1.8101,...1.3602,0.9817,0.6791,0.4473,0.2768];[dyl,dxl]=diff_ctr(y,x(2)-x(l),1);[dy2,dx2]=diff_ctr(y,x(2)-x(l),2);[dy3,dx3]=diff_ctr(y,x(2)-x(l),3);[dy4,dx4]=diff_ctr(y,x(2)-x(l),4);plot(dxl+x(l),dyl,' dx2+x(l),dy2,'--',dx3+x(l),dy3,',dx4+x(1),dy4,'0.30.40.50.60.70.80.911.11.270一200一150-100一5050100n=ln=2图3-2各阶导数的数值解曲线20试求出以下的曲线积分。①Z1(x2+y2)ds,!为曲线x=a(cost+tsint);y=a(sintjtcost);(06t62p)〇②Z1(yx3+ey)dx+(xy3+xeyj2y)dy»其中1为a2x2+b2y2=c2正向上半椭圆。③Z71ydxjxdy+(x2+y2)dz,!为曲线x=et;y=eit;z=at,06t61,a>〇〇④Z1(exsinyimy)dx+(excosyim)dy,其中1为由(a;0)点到(0;0)再经x2+y2=ax_t正向半惻周构成的曲线。【求解】套用书中给出的第一类和第二类曲线积分公式,则可以直接得出曲线积分的结果。28第3章微积分问题的计算机求解>>symsat;x=a*(cos(t)+t*sin(t));y=a*(sin(t)-t*cos(t));f=x-2+yへ2;I=int(f*sqrt(diff(x,t)"2+diff(y,t)^2),t,0,2*pi)I=2*aハ3*piへ2+4*a"3*pi~4»symsxyabct;x=c*cos(t)/a;y=c*sin(t)/b;P=y*x"3+exp(y);Q=x*y"3+x*exp(y)-2*y;ds=[diff(x,t);diff(y,t)];I=int([PQ]*ds,t,0,pi)!二2/15*c*(2*cへ4-15*bへ4)/a/bへ4>>symst;symsapositive;x=exp(t);y=exp(-t);z=a*t;F=[y,-x,(x-2+y-2)];72ds=[diff(x,t);diff(y,t);diff(z,t)];I=int(F*ds,t,0,1)I=2+l/2*a*exp(l)2-l/2*a*exp(-1)2>>symstm;symsapositive;xl=t;yl=0;Fl=[exp(xl)*sin(yl)-m*yl,exp(x1)*cos(y1)-m];x2=a/2+a/2*cos(t);y2=a/2*sin(t);F2=[exp(x2)*sin(y2)-m*y2,exp(x2)*cos(y2)-m];Il=int(Fl*[diff(xl,t);diff(yl,t)],t,0,a)I2=int(F2*[diff(x2,t);diff(y2,t)],t,0,pi);1=11+1212=l/8*a^2*m*pi21试求出下面的曲面积分。①ZS卩2x+4y3+zds,S为平面X2+y3+z②zsx2y2zdxdy,其中S为半球面z=PR2ix2iy2的下侧。【求解】第4章线性代数问题的计算机求解Jordan矩阵是矩阵分析中一类很实用的矩阵,其一般形式为J=6664i®1000000j®1000074000¢¢¢i®7775,例如J1二66664j510000i510000i510000i510000i5377775试利用diag()函数给出构造JI的语句。【求解】利用diag()能够构造对角矩阵和次对角矩阵的性质,可以由下面语句建立起所需的矩阵。75»Jl=diag([-5-5-5-5-5])+diag([l111],1)JI=-510000-510000-510000-510000-52幕零矩阵是•类特殊的矩阵,其基本形式为Hn二2666664001000000000010000000377777576亦即,矩阵的次主对角线元素为1,其余均为〇,试验证对指定阶次的整零矩阵,有Hin=0对所有的i>n成立。【求解】可以用循环的方式构造出各阶塞零矩阵,并对其求出i+1次方,判定得出矩阵的范数,若发现范数大于〇的阶次,则显示其阶次,若为零矩阵则不显示任何内容。通过运行下面的语句,可见不显示任何内容,故iく100的幕零矩阵满足上述性质。>>fori=l:100A=diag(ones(l,i),1);ifnorm(A*(1+i))>0,disp(i);endend30第4章线性代数问题的计算机求解3试从矩阵的显示格式区分符号矩阵和数值矩阵,明确它们的含义和应用场合。若A矩阵为数值矩阵,B为符号矩阵,C=A*B运算得出的C矩阵是符号矩阵还是数值矩阵?【求解】得出的结果当然是符号矩阵,见下例。»A=ones(5);B=sym(A);A*Bans=77TOC\o"1-5"\h\z[5, 5, 5, 5, 5][5, 5, 5, 5, 5][5, 5, 5, 5, 5][5, 5, 5, 5, 5][5, 5, 5, 5, 5]4请将下面给岀的矩阵A和B输入到MATLAB环境中,并将它们转换成符号矩阵。A二2666666664TOC\o"1-5"\h\z57 6 5 1 6 523 1 0 0 1 464 2 0 6 4 439 6 3 6 6 21076007772 4 4 0 7 748 6 7 2 1 7777777775;B=266666666478TOC\o"1-5"\h\z35 5 01 2 332 5 46 2 512 113 4 635 1 52 1 2410 12 0 1i3j4j7378121i107j68153777777775【求解】矩阵的输入与转换是很直接的。»A=[5,7,6,5,1,6,5;2,3,1,0,0,1,4;6,4,2,0,6,4,4;3,9,6,3,6,6,2;10,7,6,0,0,7,7;7,2,4,4,0,7,7;4,8,6,7,2,1,7];A=sym(A)A二TOC\o"1-5"\h\z[5, 7, 6, 5, 1, 6, 5][2, 3, 1, 0, 0, 1, 4][6, 4, 2, 0, 6, 4, 4][3, 9, 6, 3, 6, 6, 2][10,7,6,0,0,7,7][7,2,4,4,0,7,7][4,8,6,7,2,1,7]»B=[3,5,5,0,1,2,3;3,2,5,4,6,2,5;1,2,1,1,3,4,6;3,5,1,5,2,1,2;4,1,0,1,2,0,1;-3,-4,-7,3,7,8,12;1,-10,7,-6,8,1,5];B=sym(B)79B=TOC\o"1-5"\h\z[3, 5,5,0, 1, 2, 3][3, 2,5,4, 6, 2, 5][1, 2,1,1, 3, 4, 6][3, 5,1,5, 2, 1, 2][4, 1,0,1, 2, 0, 1]第4章线性代数问题的计算机求解31[-3, -4,-7, 3, 7, 8, 12][1, -10,7, -6, 8, 1, 5]5试求出Vandermonde矩阵A=266664a4 a3 a2 a 1b4 b3 b2 b 1c4 c3 c2 c 1d4 d3 d2 d 1e4 e3 e2 e 1377775的行列式,并以最简的形式显示结果。【求解】利用书中编写的面向符号矩阵的vanderO函数,可以构造出Vandermonde矩阵并80可以求出该矩阵的行列式。>>symsabcde;A=vander([abcde])A二[a4,a*3,a2,a,1][b*4,b*3,b*2,b,1][c4,c3,c2fc,1][dへ4,d*3,dへ2,d,1][e4,e3,e2fe,1]»det(A),simple(ans)ans=(c-d)*(b-d)*(b-c)*(a-d)*(a-c)*(a-b)*(-d+e)*(e-c)*(e-b)*(e-a)6利用MATLAB语言提供的现成函数对习题4中给出的两个矩阵进行分析,判定它们是否为奇异矩阵,得出矩阵的秩、行列式、迹和逆矩阵,检验得出的逆矩阵是否正确。【求解】以A矩阵为例,可以对其进行如下分析。»A=[5,7,6,5,1,6,5;2,3,1,0,0,1,4;6,4,2,0,6,4,4;3,9,6,3,6,6,2;10,7,6,0,0,7,7;7,2,4,4,0,7,7;4,8,6,7,2,1,7];A=sym(A);rank(A)ans=7»det(A)81ans=-35432»trace(A)ans=27»B=inv(A);latex(B)32第4章线性代数问题的计算机求解Ail=266666666666666422974429i1157442927718858i170944291734429i12784429i1784429646588588215378858415117716jl3324429i4694429i17584429i14678858i2404717716i4651177161206413543260918858307988584827885864391771655158858i977838858418517716i14244429j7944429j8424429i4918858i616317716j887177164633543216138858i12788581271885815671771637811771625658417716219354321898858i92188584298858i335317716i922517716495917716i66633543221378858i9885826018858178517716385777777777777775TOC\o"1-5"\h\z»A*Bans=[1, 0, 0, 0, 0, 0, o][0, 1, 0, 0, 0, 0, o][0, 0, 1, 0, 0, 0, 0][0, 0, 0, 1, 0, 0, 0][0, 0, 0, 0, 1, 0, o][0, 0, 0, 0, 0, 1, 0][0, 0, 0, 0, 0, 0, 1]7试求出习题4中给出的A和B矩阵的特征多项式、特征值与特征向量,并验证Hamilton-Caylay定理,解释并验证如何运算能消除误差。【求解】仍以A矩阵为例。»A=[5,7,6,5,1,6,5;2,3,1,0,0,1,4;6,4,2,0,6,4,4;3,9,6,3,6,6,2;10,7,6,0,0,7,7;7,2,4,4,0,7,7;4,8,6,7,2,1,7];A=sym(A);eig(A)ans5.009396680079366526215873006955228.679593193974410579078264020229.27480714110743938760483528351799e-l+l.1755376247101009492093136044131*i86-1.6336795424500642956747726147329+6.974072159652656030194863510461l*i-3.4765922173751363914655588544224-1.6336795424500642956747726147329-6.974072159652656030194863510461l*i.27480714110743938760483528351799e-l-l.1755376247101009492093136044131*i»p=poly(A)p=xへ7-27*xへ6-18*xへ5T00〇・xへ4+3018*xへ3+24129*x

温馨提示

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

评论

0/150

提交评论