资源描述:
《MATLAB概述 p7》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第7讲MATLAB符号计算二数学软件西南科技大学网络教育系列课程数学软件主讲教师:鲜大权副教授西南科技大学理学院数学系7.1级数7.2代数方程的符号求解7.3常微分方程的符号求解7.1.1级数的符号求和级数符号求和函数symsum,调用格式为:symsum(a,n,n0,nn)例7.1求级数之和。命令如下:n=sym('n');s1=symsum(1/n^2,n,1,inf)%求s1s2=symsum((-1)^(n+1)/n,1,inf)%求s2。未指定求和变量,缺省为ns3=symsum(n*x^n,n,1,inf)%求s3。此处的求和变量n不能省略。s4=symsum(n^2
2、,1,100)%求s4。计算有限级数的和7.1.2函数的泰勒级数MATLAB中提供了将函数展开为幂级数的函数taylor,其调用格式为:taylor(f,v,n,a)例7.2求函数在指定点的泰勒展开式。命令如下:x=sym('x');f1=(1+x+x^2)/(1-x+x^2);f2=sqrt(1-2*x+x^3)-(1-3*x+x^2)^(1/3);taylor(f1,x,5)%求(1)。展开到x的4次幂时应选择n=5taylor(f2,6)%求(2)。例7.3将多项式表示成x+1的幂的多项式。命令如下:x=sym('x');p=1+3*x+5*x^2-2*x^3;f=taylo
3、r(p,x,-1,4)例7.4应用泰勒公式近似计算。命令如下:x=sym('x');f=(1-x)^(1/12);%定义函数,4000^(1/12)=2f(96/2^12)g=taylor(f,4)%求f的泰勒展开式g,有4000^(1/12)≈2g(96/2^12)b=96/2^12;a=1-b/12-11/288*b^2-253/10368*b^3%计算g(b)2*a%求4000^(1/12)的结果4000^(1/12)%用MATLAB的乘方运算直接计算7.1.3函数的傅立叶级数MATLAB5.x版中,尚未提供求函数傅立叶级数的内部函数。下面我们自己设计一个简化的求任意函数的傅
4、立叶级数的函数文件。functionmfourier=mfourier(f,n)symsxabc;mfourier=int(f,-pi,pi)/2;%计算a0fori=1:na(i)=int(f*cos(i*x),-pi,pi);b(i)=int(f*sin(i*x),-pi,pi);mfourier=mfourier+a(i)*cos(i*x)+b(i)*sin(i*x);endreturn调用该函数时,需给出被展开的符号函数f和展开项数n,不可缺省。例7.4在[-π,π]区间展开函数为傅立叶级数。命令如下:x=sym('x');a=sym('a');f=x;mfourier(f
5、,5)%求f(x)=x的傅立叶级数的前5项f=abs(x);mfourier(f,5)%求f(x)=
6、x
7、的傅立叶级数的前5项symsa;f=cos(a*x);mfourier(f,6)%求f(x)=cos(ax)的傅立叶级数的前6项f=sin(a*x);mfourier(f,4)%求f(x)=sin(ax)的傅立叶级数的前4项7.2代数方程的符号求解7.2.1线性方程组的符号求解MATLAB中提供了一个求解线性代数方程组的函数linsolve,其调用格式为:linsolve(A,b)例7.5求线性方程组AX=b的解。解方程组(1)的命令如下:A=[34,8,4;3,34,3;3,
8、6,8];b=[4;6;2];X=linsolve(A,b)%调用linsolve函数求(1)的解Ab%用另一种方法求(1)的解解方程组(2)的命令如下:symsa11a12a13a21a22a23a31a32a33b1b2b3;A=[a11,a12,a13;a21,a22,a23;a31,a32,a33];b=[b1;b2;b3];X=linsolve(A,b)%调用linsolve函数求(2)的解XX=Ab%用左除运算求(2)的解7.2.2非线性方程组的符号求解求解非线性方程组的函数是solve,调用格式为:solve('eqn1','eqn2',…,'eqnN','var
9、1,var2,…,varN')例7.6解方程。命令如下:x=solve('1/(x+2)+4*x/(x^2-4)=1+2/(x-2)','x')%解方程(1)f=sym('x-(x^3-4*x-7)^(1/3)=1');x=solve(f)%解方程(2)x=solve('2*sin(3*x-pi/4)=1')%解方程(3)x=solve('x+x*exp(x)-10','x')%解方程(4)。仅标出方程的左端例7.7求方程组的解。命令如下:[xy]=solve('1/