实验三MATLAB符号计算

合集下载

如何在Matlab中进行符号计算

如何在Matlab中进行符号计算

如何在Matlab中进行符号计算Matlab是一种非常强大的数学计算软件,除了常见的数值计算,也可以进行符号计算。

符号计算是一种基于数学符号的计算方法,可以进行代数运算、求解方程、求导、积分等一系列符号运算。

在Matlab中进行符号计算,可以帮助我们更好地理解数学概念、解决复杂的数学问题。

本文将介绍如何在Matlab中进行符号计算,包括符号变量的定义、基本运算、方程求解、求导和积分等方面。

一、符号变量的定义在Matlab中进行符号计算,需要首先定义符号变量。

符号变量是用来表示未知数和函数的数学符号,可以使用syms关键字来定义。

例如,我们可以定义一个符号变量x,并进行一些基本操作。

```syms x;f = x^2 + sin(x);```在上述代码中,我们定义了一个符号变量x,并定义了一个函数f,代表x的平方加上sin(x)。

在后续的运算中,可以使用这些符号变量进行计算。

二、基本运算在Matlab中进行符号计算时,可以进行基本的数学运算,包括加减乘除、幂运算、开方等。

这些运算符在符号计算中与数值计算中的用法一致。

例如,我们可以进行如下的运算:```syms x;f = x^3 + 2*x^2 - x + 1;g = diff(f, x);```在上述代码中,我们定义了一个函数f,然后使用diff函数对f进行求导,将结果赋值给变量g。

通过这样的方式,可以方便地进行复杂的数学运算。

三、方程求解在Matlab中进行符号计算时,经常需要解方程。

Matlab提供了solve函数,可以对方程进行求解。

例如,我们可以解一个简单的一次方程:```syms x;eqn = 2*x + 3 == 7;sol = solve(eqn, x);```上述代码中,我们定义了一个方程eqn,然后使用solve函数求解方程,将结果赋值给变量sol。

在Matlab中可以同时解多个方程,并得到符号解或数值解。

四、求导和积分除了基本运算和方程求解,Matlab还提供了求导和积分的函数,方便进行符号计算。

Matlab中的符号计算方法

Matlab中的符号计算方法

Matlab中的符号计算方法在数学和科学领域,符号计算是一个重要的工具。

它可以帮助我们进行精确的数学计算和推理,而不仅仅是依赖计算机的数值近似。

Matlab作为一个强大的数值计算软件,也提供了丰富的符号计算功能,用于代数运算、微积分和代数方程求解等方面。

本文将介绍Matlab中的一些常用的符号计算方法和技巧。

一、符号变量在Matlab中,我们可以通过声明符号变量来表示符号对象。

符号变量通常用小写字母表示,例如x、y、z等。

使用符号变量,我们可以进行各种代数运算,例如加法、减法、乘法和除法等。

下面是一些示例:syms x y zf = x^2 + y^2 - z^2;g = (x + y + z)^3;h = sin(x) * cos(y);通过声明符号变量,并使用这些变量进行计算,我们可以得到精确的结果,而不是使用数值近似。

二、符号表达式在Matlab中,符号表达式是由符号变量和运算符组成的一种数据类型。

使用符号表达式,我们可以构建复杂的代数表达式和方程。

例如,我们可以定义一个符号表达式f表示一个多项式函数,并对其进行运算:f = x^3 - 2*x^2 + x - 1;我们可以对符号表达式进行加减乘除等运算,并得到一个新的符号表达式。

三、代数方程求解在解决数学问题时,我们经常需要求解代数方程。

Matlab提供了强大的符号求解工具,可以帮助我们求解各种类型的代数方程。

例如,我们可以使用solve函数求解一元方程:syms xeqn = x^2 - 3*x + 2 == 0;sol = solve(eqn, x);通过solve函数,我们可以找到满足方程eqn的所有解,并将其存储到sol变量中。

除了一元方程,Matlab还支持多元方程的求解。

例如,我们可以使用solve函数求解一个二元方程组:syms x yeqn1 = x + 2*y == 5;eqn2 = x - y == 1;sol = solve([eqn1, eqn2], [x, y]);通过solve函数,我们可以找到满足方程组eqn1和eqn2的所有解,并将其存储到sol变量中。

实验MATLAB符号计算

实验MATLAB符号计算
MATLAB的升级和符号计算内核Maple的升级,决定着符号计算工具包的升级。但从用户使用角度看,这些升级所引起的变化相当细微。即使这样,本章还是及时作了相应的更新和说明。如MATLAB 6.5+版开始启用MapleVIII的计算引擎,从而克服了MapleV计算“广义Fourier变换”时的错误(详见第5.4.1节)。
5.1
5.1.1
【例5.1.1-1】符号常数形成中的差异
a1=[1/3,pi/7,sqrt(5),pi+sqrt(5)]%<1>
a2=sym([1/3,pi/7,sqrt(5),pi+sqrt(5)])%<2>
a3=sym([1/3,pi/7,sqrt(5),pi+sqrt(5)],'e')%<3>
char
CMs =
sym
(4)
isa(Mn,'double'),isa(Mc,'char'),isa(Ms,'sym')
ans =
1
ans =
1
ans =
1
(5)
whos Mn Mc Ms
Name Size Bytes Class
Mc 1x9 18 char array
Mn 2x2 32 double array
Ms 2x2 312 sym object
Grand total is 21 elements using 362 bytes
5.1.4
【例5.1.4-1】对独立自由符号变量的自动辨认。
(1)
syms a b x X Y;k=sym('3');z=sym('c*sqrt(delta)+y*sin(theta)');

MATLAB数值计算和符号运算

MATLAB数值计算和符号运算
设有400万元资金要求4年内使用完若在一年内使用资金x万元则可得效益x万元效益不能再使用当年不用的资金可存入银行年利率为10
贵州大学实验报告
学院:计算机科学与技术专业:网络工程班级:
姓名
学号
实验组
实验时间
指导教师
成绩
实验项目名称
MATLAB数值计算和符号运算
实验目的
1.掌握并理解Maltab在数值计算的基本用法。
2.理解matlab在工程领域解题的一般过程。
3. 掌握Matlab符合运算的基本方法。
实验环境
计算机一台(带有MATLAB7.0以上的软件环境)。
实验内容
1.线性系统方程:分别使用左除(\)和LU分解求解下面系统方程的解:
2. 使用quad和trapz求解 的数值积分,并与其解析解相比较(解析解利用符号运算进行求解,参考函数int);(要求:使用quad求积分时,请分别用函数文件和匿名函数的方式求解)
实验代码
第一题
a=[3 6 4;1 5 0;0 7 7]
b=[1;2;3]
x=a\b
[L,U]=lu(a)
x=U\(L\b)
第二题
functiony=fun(x)
y=x.*exp(-(x./3));
Q1=quad('fun',0,5)
Q2=quad(@(x)(x.*exp(-(x./3))),0,5)
b=[400;440;484;532.4];
x0=[0.5;0.5;0.5;0.5];
[x,fval]=fmincon('fun',x0,A,b)
实验结果
第一题
第二题
第三题
第四题
第五题
第六题ห้องสมุดไป่ตู้

MATLAB实验报告三

MATLAB实验报告三

掌握符号计算的基本方法;
三、使用仪器、材料
掌握程序设计控制流、M 函数文件、编写程序。
一台装有MATLAB7.0或以上的计算机
二、实验内容
1. 2.
计算二重积分 1
2

x2
四、实验过程原始记录(程序、数据、图表、计算等)
1
( x y )dydx。
2 2
63
1.
计算二重积分 1
2
Байду номын сангаас
x2
1
( x 2 y 2 )dydx
2.请分别写出用 for 和 while 循环语句计算 K 2i 1 2 2 2... 2 63 的程
i 0
63
序。此外,还请写出一种避免循环的计算程序。
4. 等比数列公式法
2 求一阶微分方程 x at bt, x(0) 2 的解
五、实验结果及分析
5.
2 2 求方程 x y 1, xy 2 的解。(提示:正确使用 solve)
广州大学学生实验报告
开课学院及实验室:
学院 机电学院
计算机 301B
电气 122 姓名 黄柱
2014 年
学号 成绩 指导 老师
5 月 20 日
年级、专 业、班
1207300074
实验课程名称 实验项目名称
MATLAB 语言及应用
实验三
符号计算及程序设计
姚菁
一、实验目的 二、实验内容 三、使用仪器、材料 四、实验过程原始记录(程序、数据、图表、计算等) 五、实验结果及分析 一、实验目的
请分别写出用 for 和 while 循环语句计算 K 2i 1 2 2 2... 2 63 的

MATLAB实验三参考答案

MATLAB实验三参考答案

how =collect(x)
4、求下列函数的极限(写出命令) (1) lim
cos x e x 0 x4

x2 2
syms x; limit('(cos(x)-exp(-1/2*x^2))/(x^4)',x,0) -1/12 (2) lim
2 x ln 2 x 1 x 0 1 cos x
syms n; S=symsum(1/((3*n-2)*(3*n+1)),n,1,inf) 8、试求出函数 f ( x )
sin x 的麦克劳林幂级数展开式的前 9 项,并求出关于 x=2 x 3x 2
2
的 Taylor 幂级数展开式的前 5 项。(命令 taylor 或者 taylortool)
河南财经政法大学数学与信息科学学院 1
实验报告
结果: EXPR =(x^2+x*exp(-t)+1)*(x+exp(-t)) expr1 =x^3+2*exp(-t)*x^2+(1+exp(-t)^2)*x+exp(-t) expr2 =x*exp(-t)^2+(2*x^2+1)*exp(-t)+(x^2+1)*x 3、factor(因式分解),simple(简化运算,对表达式尝试多种不同的算法进行简化,并以最 简化形式给出,How 中记录的为简化过程中使用的方法, )指令的使用 syms a x; f1=x^4-5*x^3+x^2+5*x-6; factor(f1) x^4-5*x^3+x^2+5*x-6 f2=x^2-a^2; factor(f2) (x-a)*(x+a) f3=2*sin(x)^2-cos(x)^2 [y , how]=simple(f3) y 为 f 的最优化简形式,How 中记录的为简化过程中使用的方法 y =-3*cos(x)^2+2 how =simplify [y , how]=simple(f1) y =x^4-5*x^3+x^2+5*x-6

matlab符号计算实验报告

matlab符号计算实验报告

1. 已知x=6,y=5,利用符号表达式求z =>> syms x >> z=(x+1)/(sqrt(x+3)-sqrt(y)); >> subs(z,x,5) ans =6/(8^(1/2)-y^(1/2)) >> subs(ans,6) ans = 15.83382. 分解因式。

(1)x y -44; >> syms x y >> factor(x^4-y^4) ans =(x-y)*(x+y)*(x^2+y^2)(2)x x x +++64212575151 >> syms x >> factor(125*x^6+75*x^4+15*x^2+1) ans =(5*x^2+1)^33. 化简表达式(1)sin cos cos sin ββββ-1212;>> syms x y >> f=sin(x).*cos(y)-cos(x).*sin(y); >> sfy1=simple(f) 结果:sfy1 =sin(x-y)(2)x x x +++248321>> syms x >> f=(4*x^2+8*x+3)/(2*x+1);sfy1=simplify(f) sfy1 =2*x+34、求下列极限,将完成实验的程序写到文件sy1.m 中:(1) (2) (3) (4)(5) (1)>> syms x >> F1=atan(x)/(x); >> w=limit(F1) w =1(2)>> syms x F2=((1+x)/(1-x))^(1/x); >> w=limit(F2) w =exp(2)(3)>> syms x F3=(x.*log(1+x))/(sin(x^2)); >> w=limit(F3) w =1(4)>> syms x F4=atan(x)/(x); >> w=limit(F4,x,inf) w =0(5)>> syms x F5=(1/(1-x)-1/(1-x^3)); >> w=limit(F5,x,1) w =NaN5、求下列函数的导数,将完成实验的程序写到文件sy2.m 中:1、 >> x = sym('x'); >> y1=(cos(x))^3-cos(3*x); >> diff(y1)ans =-3*cos(x)^2*sin(x)+3*sin(3*x)2、 >> x = sym('x'); >> y2=x.*sin(x).*(log(x)); >> diff(y2)ans =sin(x)*log(x)+x*cos(x)*log(x)+sin(x)3、>> x = sym('x'); >> y3=(x.*exp(x)-1)/sin(x); >> diff(y3)ans =(exp(x)+x*exp(x))/sin(x)-(x*exp(x)-1)/sin(x)^2*cos(x)4、 x x x x F 1011lim 2⎪⎭⎫ ⎝⎛-+=→31115lim()11x F x x →=---20sin )1ln(lim 3x x x F x +=→x x F x arctan lim 10→=arctan 4lim x x F x →∞=xx y 3cos cos 13-=xx x y ln sin 2=x xe y xsin 13-=cos x y e x =>> x = sym('x');y=cos(x).*exp(x); >> diff(y) ans =-sin(x)*exp(x)+cos(x)*exp(x)5、 >> x = sym('x');y=x^2.*sin(x); >> diff(y) ans = 2*x*sin(x)+x^2*cos(x)6、求下列函数的积分1、syms x a b c;int(sin(a*x).*sin(b*x).*sin(c*x)) ans =-1/4/(c+a-b)*cos((c+a-b)*x)+1/4/(-c+a-b)*cos((-c+a-b)*x)+1/4/(c+a+b)*cos((c+a+b)*x)-1/4/(-c +a+b)*cos((-c+a+b)*x) 2、>> syms x ;int(x^5+x^3-sqrt(x)/4) ans =1/6*x^6+1/4*x^4-1/6*x^(3/2)3、>> syms x ;int(x.*exp(x)/(x+1)^2,x,0,1) ans =1/2*exp(1)-1 4、 >> syms x y;F=int(int('x/(1+x*y)',x,0,1),y,0,1) F =2*log(2)-15、 由曲面22y x z +=,1=z ,2=z 所围成 >> syms x y z;F=int(int(int('x^2+y^2',x,-inf,inf),y,-inf,inf),z,1,2) F =Inf7、求下列级数的和(1) (2)(1)>> syms n;symsum(2*n-1/2^n,1,Inf) ans =Inf(2)syms n;symsum(1/n*(2*n-1),1,Inf) ans =Inf8、将函数 展开成2-x 的幂级数>> syms x;mtaylor(1/(x^2+5*x-3),x-2) 2sin 2y x x=⎰cxdx bx ax sin sin sin dx x x x )4(35⎰-+⎰+102)1(dx x xe x ⎰⎰+D dxdy xy x 1]1,0[]1,0[⨯=D ⎰⎰⎰Vzdxdydz 11212n n n I ∞=-=∑211(21)n I n n ∞==+∑21()53f x x x =+-。

matlab符号计算实验总结

matlab符号计算实验总结

matlab符号计算实验总结
在这个实验中,我们使用了MATLAB中的符号计算工具,通过创建符号变量和符号表达式来进行数学计算和推导。

这些符号计算工具能够处理代数运算、微积分、方程求解等复杂的数学问题。

在实验过程中,我们首先学习了如何创建符号变量。

通过使用
'sym'函数,我们可以将常规变量转换为符号变量,从而进行符号计算。

例如,我们可以定义一个符号变量x:x = sym('x')。

接下来,我们学习了如何使用符号变量进行代数运算。

通过将符号变量组合成符号表达式,我们可以进行加减乘除等代数运算。

例如,我们可以定义一个符号表达式y = x^2 + 2*x + 1,并对其进行简化或展开操作。

除了代数运算,我们还学习了如何进行微积分计算。

通过使用符号变量和符号表达式,我们可以对函数进行求导和积分操作。

例如,我们可以对一个符号表达式y = x^3求导,并得到其导数表达式。

在实验中,我们还学习了如何使用符号计算工具解方程。

通过使用'solve'函数,我们可以求解方程的根。

例如,我们可以解一个一元二次方程,找到其根的解析解。

通过这个实验,我深刻理解了符号计算在数学问题中的重要性。

它能够帮助我们更好地理解数学概念和定理,并能够进行复杂的数学推导和计算。

MATLAB中的符号计算工具提供了强大的功能和简便的操作,使得数学问题的解决变得更加高效和准确。

总的来说,这个实验让我对MATLAB中的符号计算有了更深入的
了解和掌握。

我相信在今后的学习和研究中,这些符号计算工具将对我有很大的帮助。

MATLAB的符号矩阵运算与符号微积分

MATLAB的符号矩阵运算与符号微积分

西北农林科技大学实验报告学院名称:理学院专业年级:2013级信计1班姓名:学号:课程:数学软件实验报告日期:2014年11月1日实验三MATLAB的符号矩阵运算与符号微积分一.实验目的MATLAB 不仅具有数值运算功能,还开发了在matlab环境下实现符号计算的工具包Symbolic Math Toolbox。

本次实验的目的对所学的符号矩阵的创建与修改、各种符号运算进行巩固,学会使用数学软件来求极限、微分、积分,解方程和解微分方程等。

二.实验要求理解符号变量、符号表达式、符号矩阵等概念,掌握符号矩阵和符号表达式的创建,了解符号运算与数值运算的不同点,会修改已有的符号矩阵,并会符号矩阵与数值矩阵的相互转换,掌握符号矩阵矩阵的运算。

熟练掌握符号求极限、符号求微分(导数)、符号求积分(不定积分和定积分),掌握符号代数方程(组)求解、符号微分方程(组)求解,了解符号积分变换。

三.实验内容符号运算一、符号变量、符号表达式、符号矩阵等概念MATLAB符号运算工具箱处理的对象主要是符号变量与符号表达式。

要实现MATLAB的符号运算,首先要将处理的对象定义为符号变量或符号表达式,其定义格式如下:1.sym ('变量名') 或sym ('表达式')2.syms 变量名1变量名. . . 变量名n二、符号运算与数值运算的不同点数值运算:求出具体的数值,不含符号。

(如解方程,求出未知数x=1.5 ,不是未知数=ab+c)符号运算:结果用符号表示。

许多问题,只有数值解,没有符号解。

三、修改已有的符号矩阵及符号矩阵与数值矩阵的相互转换1. 修改已有的符号矩阵(1).直接修改可用↑、←键找到所要修改的矩阵,直接修改(2)指令修改用A1=sym(A,*,*,'new') 来修改。

用A1=subs(A, 'new', 'old')来修改2. 符号矩阵与数值矩阵的相互转换(1)将数值矩阵转化为符号矩阵>> A=[1/3,2.5;1/0.7,2/5]A =0.3333 2.50001.4286 0.4000>> sym(A)ans =[0.333333333333333 2.50000000000000 ][ ][1.42857142857143 0.400000000000000](2) 将符号矩阵转化为数值矩阵函数调用格式:double(a)>> a=sym ('[1,3;4,6;3,4]')a =[1 3][ ][4 6][ ][3 4]>> double(a)ans =1 34 63 4四、符号运算1.符号矩阵和符号表达式的创建(1) 符号表达式的创建>> syms x y z>> x,y,zx =xy =yz =z>> f1=x^2+2*x+1f1 =2x + 2 x + 1>> f2=exp(y)+exp(z)^2f2 =2exp(y) + exp(z)>> f3=f1+f2f3 =2 2x + 2 x + 1 + exp(y) + exp(z)(2)符号矩阵创建a.用sym()创建>> exam=sym ('[1,x;y/x,1+1/y;3+3,4*r]')exam =[ 1 x ][ ][y/x 1 + 1/y][ ][ 6 4 r ] b.普通矩阵方法>> syms a1 a2 a3 a4>> A=[a1 a2;a3 a4]A =[a1 a2][ ][a3 a4] >> A(1),A(3)ans =a1ans =a2c.用矩阵元素通式创建>> syms x y c r>> a=sin((c+(r-1)*3));>> b=exp(r+(c-1)*4);>> c=(c+(r-1)*3)*x+(r+(c-1)*4)*y;>> A=symmat(3,3,a)A =[sin(1) sin(2) sin(3)][ ][sin(4) sin(5) sin(6)][ ][sin(7) sin(8) sin(9)]2.符号微积分(1)极限返回符号对象f当x→a时的极限>> limit(f,x,a)ans =[2 2][ ][4 4]返回符号对象f当x→a时的右极限>> limit(f,x,a,'right')ans =[2 2][ ][4 4]返回符号对象f当x→a时的左极限>> limit(f,x,a,'left')ans =[2 2][ ][4 4] (2).导数求符号对象f关于默认变量的微分diff(f)ans =2 2求符号对象f关于指定变量v的微分>> v=2v =2>> diff(f,v)ans =求符号对象f关于默认变量的n次微分,n为自然数1、2、3…>> n=4n =4求符号对象f关于指定变量v的n次微分>> diff(f,n)ans =[]>> diff(f, v,n)ans =Empty array: 2-by-2-by-1-by-0(3)积分求符号对象f关于默认变量的不定积分>> int(f)ans =[2 x 2 x][ ][4 x 4 x]求符号对象f关于指定变量v的不定积分>> f=v+3f =v + 3>> int(f,v)ans =21/2 v + 3 x 求符号对象f关于默认变量的从a到b的定积分>> f=v+3f =5>> a=2,b=3a =2b =3>> int(f,a,b)ans =53.符号线性代数(1).解符号代数方程>> solve('f=a*x^2+b*x+c',x)ans =[ 2 1/2 ][ -b + (-4 a c + 4 a f + b ) ][1/2 ----------------------------- ][ a ][ ][ 2 1/2][ b + (-4 a c + 4 a f + b ) ][- 1/2 ----------------------------][ a ](2).解微分方程>> dsolve('Dy=1+y^2')ans =tan(t + _C1)四、实验总结通过本次试验,我了解到MATLAB 不仅具有数值运算功能,还开发了在matlab 环境下实现符号计算的工具包Symbolic Math Toolbox。

MATLAB符号运算实验

MATLAB符号运算实验

MATLAB 符号运算实验1、 用符号函数法求解方程a t 2+b*t +c=0。

clc;clear;solve('a*t^2+b*t+c')ans =-(b + (b^2 - 4*a*c)^(1/2))/(2*a) -(b - (b^2 - 4*a*c)^(1/2))/(2*a)2、 用符号计算验证三角等式:sin(ϕ1)cos(ϕ2)-cos(ϕ1)sin(ϕ2) =sin(ϕ1-ϕ2)、clc;clear; syms a bexpand(sin(a)*cos(b)-cos(a)*sin(b)-sin(a-b))ans = 0因为sin(a)*cos(b)-cos(a)*sin(b)-sin(a-b)=0,所以sin(a)*cos(b)-cos(a)*sin(b)=sin(a-b)。

3、 用符号函数法求矩阵⎥⎦⎤⎢⎣⎡=22211211a a a a A 的行列式值、逆和特征根。

clc;clear;syms a11 a12 a21 a22 M=[a11,a12;a21,a22]; [m,n]=size(M) inv(M) [V,x]=eig(M)m = 2 n = 2 ans =[ a22/(a11*a22 - a12*a21), -a12/(a11*a22 - a12*a21)][ -a21/(a11*a22 - a12*a21), a11/(a11*a22 - a12*a21)] V =[ -(a22 - a11 + (a11^2 - 2*a11*a22 + a22^2 + 4*a12*a21)^(1/2))/(2*a21), (a11 - a22 + (a11^2 - 2*a11*a22 + a22^2 + 4*a12*a21)^(1/2))/(2*a21)] [1, 1] x =[ a11/2 + a22/2 - (a11^2 - 2*a11*a22 + a22^2 + 4*a12*a21)^(1/2)/2, 0][0, a11/2 + a22/2 + (a11^2 - 2*a11*a22 + a22^2 + 4*a12*a21)^(1/2)/2] 4、 用符号函数法求因式分解:6555234-++-x x x xclc;clear; syms xfactor(x^4-5*x^3+5*x^2+5*x-6)ans =(x - 1)*(x - 2)*(x - 3)*(x + 1) 5、 ⎥⎥⎦⎤⎢⎢⎣⎡=)sin()log(12x x ex x af ax ,用符号微分求df/dx 。

MATLAB实验报告3-符号运算

MATLAB实验报告3-符号运算
>> F=subs(gy,{x,y},{x-1,y-2})
F =
((x - 1)^3 - 5)/(2*(x - 1)^2 + 7)
2)
>> clear
>> syms x y;
>> g=(x^3*y-5*y)/(2*x^2+7);
>> gxy=diff(diff(g,x),y);
>> G=subs(gxy,{x},{x-1})
>> int(y)
ans =
log(x + 1)
>> int(y,0,1)
ans =
log(2)
>> syms t;
>> int(y,0,t)
ans =
log(t + 1)
>> clear
>> syms x y;
>> z=sin(y)/(x^2*y+1);
>> int(z,-inf,+inf)
ans =
8.积分中值定理:设 ,存在 ,使得 .检验存在 ,使得 .
四、实验步骤和运行结果(如运行有错误,请指出)
1.
>> syms u v x;
>> f=sqrt(1+u^2);
>> g=log(v);
>> h=exp(-x);
>> p=compose(g,h)
p =
log(exp(-x))
>> compose(f,p)
(pi*sin(y))/y^(1/2)

如何使用MATLAB进行符号计算

如何使用MATLAB进行符号计算

如何使用MATLAB进行符号计算1. 引言在科学计算和工程应用中,符号计算是一项重要的任务。

符号计算可以帮助我们推导数学公式、解方程、进行代数化简等等。

MATLAB作为一种强大的科学计算工具,也提供了符号计算的功能。

本文将介绍如何使用MATLAB进行符号计算。

2. 符号计算基础在MATLAB中,符号计算通过符号工具箱提供。

首先需要将变量声明为符号变量,使用`syms`关键字来完成。

例如,下面的代码将变量x和y声明为符号变量:```syms x y```其次,我们可以使用`sym`函数将数值转换为符号类型。

例如,下面的代码将整数2转换为符号类型:```a = sym(2)```最后,我们可以使用各种符号运算进行符号计算。

例如,下面的代码演示了符号变量之间的加法运算:```x + y```3. 推导数学公式符号计算的一个常见用途是推导数学公式。

MATLAB提供了一系列函数来进行推导,如`diff`、`int`等。

例如,下面的代码计算了函数sin(x)的导数: ```syms xf = sin(x);df = diff(f, x);```在这个例子中,`diff`函数用于计算导数,第一个参数是要计算导数的函数,第二个参数是相对于哪个变量求导数。

4. 解方程另一个常见的符号计算任务是解方程。

MATLAB提供了`solve`函数来解方程。

例如,下面的代码解了方程x^2 - 2 = 0:```syms xsol = solve(x^2 - 2);```解方程的结果是一个结构体数组,每个元素代表一个解。

5. 代数化简符号计算还可以用于代数化简。

MATLAB提供了`simplify`函数来进行代数化简。

例如,下面的代码对表达式(x+1)^2进行化简:```syms xexpr = (x+1)^2;simplified_expr = simplify(expr);````simplify`函数将表达式化简为最简形式。

实验三MATLAB的符号运算

实验三MATLAB的符号运算

实验三 MATLAB 的符号运算一 实验目的:1.掌握符号对象的创建及符号表达式化简的基本方法;2.掌握符号微积分、符号方程的求解的基本方法。

二 实验装置:计算机三 实验内容:1.符号对象的创建(1) 建立符号变量使用sym 函数把字符表达式'2*sin(x)*cos(x)'转换为符号变量。

2.符号表达式的化简(1)因式分解对表达式f=x 3-1 进行因式分解。

(2) 符号表达式的展开对符号表达式f=cos(x+y)进行展开。

(3)符号表达式的同类项合并对于表达式f=(2x 2*(x+3)-10)*t ,分别将自变量x 和t 的同类项合并。

(4)符号表达式的化简(5)符号表达式的分式通分对表达式 进行通分。

(6)符号表达式的替换用新变量替换表达式a+b 中变量b 。

3.符号微积分(1) 符号极限计算表达式 的极限。

(2)符号微分计算表达式f=sinx 的微分。

(3)符号积分。

例:简化32381261+++=xx x f 22x y y x f +=xtgx x lim 0→()⎰+dzz x31计算表达式 的积分。

(4)符号求和计算表达式 4.符号方程的求解求解代数方程组 四 实验要求:1.按照要求预习实验;2.在MATLAB 中运行实验程序验证仿真结果;3. 按照要求完成实验报告。

.10005∑k⎪⎩⎪⎨⎧=--=-+=+-043035218472z y x z y x z y x。

实验三 MATLAB符号计算

实验三 MATLAB符号计算
都可以在矩阵意义下进行。但应注意这些函数作用于符号矩阵 时,是分别作用于矩阵的每一个元素。 由于符号矩阵是一个矩阵,所以符号矩阵还能进行有关矩阵的运 算。MATLAB还有一些专用于符号矩阵的函数,这些函数作用于 单个的数据无意义。例如 transpose(s):返回s矩阵的转置矩阵。 determ(s):返回s矩阵的行列式值。 其实,曾介绍过的许多应用于数值矩阵的函数,如diag、triu、 tril、
expr1 =
x^3+2*exp(-t)*x^2+(1+exp(-t)^2)*x+exp(-t) expr2 = x*exp(-t)^2+(2*x^2+1)*exp(-t)+(x^2+1)*x
expand使用指令 y=0.14-(1.2e+002)*(-2.4005*(0.445-x)^7+4.2505*(0.445x)^6-2.2336*(0.445-x)^5+0.4993*(0.445-x)^40.0514*(0.445-x)^3+0.0025*(0.445-x)^2);
符号矩阵的生成
符号矩阵可通过函数sym来生成。符号矩阵中的元素是任何不带等号的符 号表达式,各符号表达式的长度可以不相同;符号矩阵中,以空格或逗号 分隔的元素指定的是不同列的元素而分号分隔的元素指定的是不同行的元 素。 例:
syms x; A=sym(‘[cos(x),sin(x),x;-x+1 x^2+x+1 tan(x)]’) A= [ cos(x), sin(x), x] [ -x+1, x^2+x+1, tan(x)] >> size(A) %求符号矩阵的大小 ans = 2 3 > a=[1 2 3 4;4 5 6 7]; >> b=sym(a) b= [ 1, 2, 3, 4] [ 4, 5, 6, 7]

matlab符号计算实验总结

matlab符号计算实验总结

matlab符号计算实验总结
MATLAB 是一种广泛使用的数学软件,其中包括符号计算功能。

符号计算实验可以帮助用户了解如何使用 MATLAB 进行符号计算,以及如何解决实际问题。

以下是 MATLAB 符号计算实验的总结:
1. 熟悉 MATLAB 符号计算环境:MATLAB 符号计算环境包括Symbolic and Algebraic Calculator(SAC) 和 Symbolic Math Kernel(SMK)。

SAC 是一个交互式计算器,可用于符号计算和代数计算。

SMK 是一个内核,可嵌入到 MATLAB 主程序中,用于符号计算和数学推理。

2. 掌握 MATLAB 符号计算基本语法:MATLAB 符号计算的基本语法包括变量名、符号表达式、对数、指数、三角函数、反函数等。

此外,MATLAB 还支持特殊的符号运算符,如+、-、*、/和^。

3. 熟悉 MATLAB 符号计算工具箱:MATLAB 提供了许多符号计算工具箱,包括高级代数、符号微积分、符号微分方程、符号计算物理等。

使用这些工具箱可以更高效地进行符号计算。

4. 掌握 MATLAB 符号计算算法:MATLAB 符号计算算法包括对称群、对称矩阵、雅可比矩阵、特征值和特征向量等。

掌握这些算法可以更好地理解符号计算的原理和实现方法。

5. 实践 MATLAB 符号计算:通过实践 MATLAB 符号计算,可以更好地掌握其语法和算法。

可以尝试解决一些简单的符号计算问题,如求根、解方程、求导、积分等。

MATLAB 符号计算实验可以帮助用户了解符号计算的原理和实现
方法,提高其符号计算技能。

matlab符号计算实验总结

matlab符号计算实验总结

matlab符号计算实验总结
在本次实验中,我们学习了 Matlab 符号计算工具箱,并进行了一些基本的符号计算实验,总结如下:
1. Matlab 符号计算工具箱提供了方便的符号计算环境,可以进行代数运算、微积分、线性代数等操作,适合数学建模、符号计算、科学计算等领域。

2. 在 Matlab 符号计算工具箱中,可以使用符号变量来表示数学表达式,这些可以包含未知量、函数、常数以及一些特殊符号等。

3. 不同于数值计算,符号计算可以处理精确的数学表达式,因此可以应用于一些需要保证精度的计算,比如微分方程、符号积分、级数求和等问题。

4. 在 Matlab 中,我们可以使用符号表达式来进行计算。

需要注意的是,在使用符号计算工具进行复杂运算时,计算速度较慢,因此需要谨慎考虑计算的复杂度。

5. Matlab 符号计算工具箱提供了多种符号计算函数,如求导函数、积分函数、解代数方程函数、解微分方程函数等。

学习和掌握这些函数对于进行符号计算实验非常有帮助。

6. Matlab 符号计算工具箱的应用范围广泛,在数学、物理、化学、工程等领域都有应用。

学习和熟练掌握 Matlab 的符号计算工具箱对于各类科学计算工作都是很有帮助的。

总之,本次实验学习了 Matlab 符号计算工具箱,了解了符号计算基本原理和方法,并进行了一些简单的符号计算实验。

这对于进一步掌握 Matlab 符号计算工具箱有很大帮助,也有益于我们将来的科学计算工作。

matlab符号运算实验原理

matlab符号运算实验原理

matlab符号运算实验原理
MATLAB中的符号运算是一种使用符号变量和表达式的运算方式,与数值
运算不同。

其原理主要基于以下方面:
1. 符号表达式的创建:MATLAB中的符号运算使用符号常量、符号变量和
符号表达式。

这些都可以通过`sym`函数创建。

例如,`A=sym('1')`会创建
一个符号常量,`B=sym('x')`会创建一个符号变量,而`f=sym('2x^2+3y-
1')`则会创建一个符号表达式。

2. 符号运算的执行:符号运算主要包括基本的四则运算(加、减、乘、除)、复合运算、求导和积分等。

对于初等函数,这些运算可以直接使用基本的数学公式进行。

例如,求导和积分可以使用基本的初等函数导数公式和积分公式,以及四则运算法则和复合函数链式求导法则。

3. 结果的表示:符号运算的结果可以是数值或者符号。

对于数值结果,MATLAB会自动进行数值化表示。

对于符号结果,MATLAB会以符号形式
表示。

4. 特殊情况的处理:对于一些特殊情况,如求高次多项式的零点或者对一些特殊函数进行积分等,可能需要特殊的处理方法或者预存的求根或求积套路。

总的来说,MATLAB的符号运算实验原理主要基于符号表达式的创建、使
用基本的数学公式进行运算以及对特殊情况的处理。

这些原理使得
MATLAB能够方便地进行数学上的符号运算,为数学研究和工程计算提供了强大的工具。

关于matlab符号计算的综合实例

关于matlab符号计算的综合实例

关于matlab符号计算的综合实例在科学计算领域,matlab是一种非常常用的软件工具,它具有强大的符号计算功能,可以对符号表达式进行求导、积分、解方程等操作,为科学研究和工程设计提供了便利。

本文将通过一些实例,介绍matlab符号计算功能的应用和操作技巧。

一、符号变量的定义和基本运算我们需要明白matlab中符号计算需要先定义符号变量。

在matlab中,可以使用syms命令定义符号变量,比如:syms x y这样就定义了两个符号变量x和y。

接下来,我们就可以进行基本的符号运算,比如加法、减法、乘法和除法,示例代码如下:1. 加法:z = x + y2. 减法:w = x - y3. 乘法:4. 除法:v = x / y通过这些简单的示例,我们可以看到,matlab对于符号变量的基本运算操作和数学运算规则是一致的,只是使用符号变量进行运算,可以得到符号表达式作为结果。

二、符号函数的求导和积分在科学计算中,求导和积分是非常常见的操作,matlab可以对符号函数进行求导和积分操作,示例代码如下:1. 求导:f = x^2 + 3*x + 2df = diff(f, x)2. 积分:F = int(f, x)通过这些示例,我们可以看到,matlab可以对符号函数进行求导和积分操作,并得到相应的结果。

这对于解决一些数学问题和工程问题非三、符号方程的求解在科学研究和工程设计中,经常会遇到需要求解符号方程的情况,matlab提供了符号求解方程的功能,示例代码如下:1. 求解一元方程:syms xeqn = x^2 - 4*x + 3 == 0;sol = solve(eqn, x)2. 求解多元方程:syms x yeqn1 = x + y == 3;eqn2 = x - y == 1;sol = solve([eqn1,eqn2],[x,y])通过这些示例,我们可以看到,matlab可以对符号方程进行求解,并得到相应的结果。

MATLAB符号计算

MATLAB符号计算

实验报告实验4: 符号计算符号运算中,解算数学表达式、方程时,不是在离散化的数值点上进行,而是凭借一系列恒等式和数学定理,通过推理和演绎,获得解析结果。

这种计算建立在数值完全准确表达和推演严格解析的基础上,所得结果一般是完全准确,而没有近似的。

一、实验目的:1.通过完成实验,掌握MATLAB的符号计算。

2.熟悉MATLAB 符号计算的极限、微分、积分、泰勒展式,代数方程、常微分方程求解等运算的命令,以及符号运算的基本运用。

3.了解符号运算和数值运算的特点、区别和优缺点二、实验内容1.使用sym或syms定义符号变量,求时下式的极限x=sym('x');%定义符号变量h=sym('h');y=(sin(h+x)-sin(x))/h;%给y赋符号变量值limit((sin(h+x)-sin(x))/h,h,0)ans =%求h——>0时y的极限2. 分解因式1) ,2) ,结果分别是几个式子相乘syms x y a b c z;y=factor(9*x^4-3*x^3+7*x^2-3*x-2)y =%分解因式,结果分别是三个因式相乘z=factor(a^3+b^3+c^3-3*a*b*c)z =3. 求函数在指定点()处的幂级数展开式,然后按照x-1的幂次排序,看看完全计算机结果是什么,如果手工会写成什么(只写计算机没写好的项)。

syms x;f=1/(x*(x+3));y=taylor(f,x,1)y =%对f符号表达式在x=1处进行泰勒级数展开collect(y,x-1)ans =4.,试求符号微分、,并化简-,化简式子说明什么,还记得吗?syms x y z;z=(x^2+y^2)*exp((x+y^2)/(x*y));diff(z,'x')ans =%对符号表达式z求关于x的导数diff(z,'y')ans =f=diff(diff(z,'y'),'x')-diff(diff(z,'x'),'y')f = 05. 求定积分syms x y;y=x/(sin(x))^2;f=int(y,x,pi/4,pi/3)f =%求定积分6. 求解1)代数方程,分别求y(x) 和x(y) ;2)方程组,其中x、y、z为未知自变量,、、为已知。

MATLAB的符号运算

MATLAB的符号运算

MATLAB 的符号运算前面介绍的内容基本上是MATLAB 的数值计算功能,参与运算过程的变量都是被赋了值的数值变量.在MATLAB 环境下,符号运算是指参与运算的变量都是符号变量,即使是数字也认为是符号变量. 数值变量和符号变量是不同的.1 符号微积分下面着重介绍一些与微积分有关的指令,这些指令都需要符号表达式作为输入宗量. 求和symsum(S) 对通项S 求和,其中k 为变量且从0变到k-1.symsum(S,v) 对通项S 求和,指定其中v 为变量且v 从0变到v-1. symsum(S,a,b) 对通项S 求和,其中k 为变量且从a 变到b .symsum(S,v,a,b) 对通项S 求和,指定其中v 为变量且v 从a 变到b . 例:求∑-=10k i i ,键入k=sym('k') % k 是一个符号变量;symsum(k)得 ans = 1/2*k^2-1/2*k例:求∑=1002k k,键入:symsum(k^2,0,10)得 ans = 385 例:求∑+∞=0!k kk x 键入 symsum('x'^k/sym('k!'),k,0,inf),得 ans = exp(x)这最后的一个例子是无穷项求和.求极限limit(P) 表达式P 中自变量趋于零时的极限limit(P,a) 表达式P 中自变量趋于a 时的极限limit(P,x,a,'left') 表达式P 中自变量x 趋于a 时的左极限limit(P,x,a,'right') 表达式P 中自变量x 趋于a 时的右极限 例:求xx x sin lim 0→,键入 P=sym('sin(x)/x');limit(P)得 ans = 1例:求xx 1lim 0+→ 键入 P=sym('1/x');limit(P,'x',0,'right')得 ans = inf 例:求hx h x h sin )sin(lim 0-+→,键入: P=sym('(sin(x+h)-sin(x))/h');h=sym('h');limit(P,h,0)得ans = cos(x) 例:求)lim , )1(lim (-x x x x e xa -∞→-∞→+, 键入 v=sym('[(1+a/x)^x,exp(-x)]');limit(v,'x',inf,'left')得 ans = [ exp(a), 0]求导数diff(S,v) 求表达式S 对变量v 的一阶导数.diff(S,v,n) 求表达式S 对变量v 的n 阶导数.例如:设A=⎪⎪⎪⎭⎫ ⎝⎛++21cos 11x e x x b a ,求dx dA 键入命令: syms a b x; A= [1/(1+a),(b+x)/cos(x);1,exp(x^2)];diff(A,'x')得 ans = [0, 1/cos(x)+(b+x)/cos(x)^2*sin(x)][0, 2*x*exp(x^2)]例:求y=sinx+e x 的三阶导数,键入命令:diff('sin(x)+x*exp(x)',3)得 ans = -cos(x)+3*exp(x)+x*exp(x) 例:设⎪⎪⎪⎭⎫ ⎝⎛+=xyi n e xy y x y x A 1sin ,求A 的先对x 再对y 的混合偏导数.可键入命令: S=sym('[x*sin(y),x^n+y;1/x/y,exp(i*x*y)]');dsdxdy=diff(diff(S,'x'),'y')得: dsdxdy = [ cos(y), 0][ 1/x^2/y^2, i*exp(i*x*y)-y*x*exp(i*x*y)]例:求y=(lnx)x 的导数.可键入命令:p='(log(x))^x';p1=diff(p,'x')得:p1 = log(x)^x*(log(log(x))+1/log(x))例:求y=xf(x2)的导数.可键入命令:p='x*f(x^2)';p1=diff(p,'x')得:p1 = f(x^2)+2*x^2*D(f)(x^2)例:求xy=e x+y的导数.可键入命令:p='x*y(x)-exp(x+y(x))';p1=diff(p,'x')得:p1 = y(x)+x*diff(y(x),x)-(1+diff(y(x),x))*exp(x+y(x))再键入p2='y+x*dy-(1+dy)*exp(x+y)=0';dy=solve(p2,'dy')%把dy作为变量解方程得dy= -(y-exp(x+y))/(x-exp(x+y))求Taylor展开式taylor(f,v) f对v的五阶Maclaurin展开.taylor(f,v,n) f对v的n-1阶Maclaurin展开.例:求sinxe-x 的7阶Maclaurin展开.可键入f=sym('sin(x)*exp(-x)');F=taylor(f,8)得F = x-x^2+1/3*x^3-1/30*x^5+1/90*x^6-1/630*x^7例:求sinxe-x 在x=1 处的7阶Taylor展开.可键入f=sym('sin(x)*exp(-x)');F=taylor(f,8,1) 得F = sin(1)*exp(-1)+(-sin(1)*exp(-1)+cos(1)*exp(-1))*(x-1)-cos(1)*exp(-1)*(x-1)^2+(1/3*sin(1)*exp(-1)+1/3*cos(1)*exp(-1))*(x-1)^3-1/6*sin(1)*exp(-1)*(x-1)^4+(1/30*sin(1)*exp(-1)-1/30*cos(1)*exp(-1))*(x-1)^5+1/90*cos(1)*exp(-1)*(x-1)^6+(-1/630*cos(1)*exp(-1)-1/630*sin(1)*exp(-1))*(x-1)^7多元函数的Taylor展开MATLAB不能直接进行多元函数的Taylor展开.必须先调用MAPLE函数库中的mtaylor命令.方法为:在MATLAB的工作窗口中键入maple('readlib(mtaylor)')mtaylor的格式为mtaylor(f,v,n)f为欲展开的函数式v 为变量名.写成向量的形式:[var1=p1,var2=p2,…,varn=pn],展开式将在(p1,p2,…,pn )处进行.如只有变量名,将在0点处展开.n 为展开式的阶数(n -1阶).要完成Taylor 展开,只需键入maple('mtaylor (f,v,n )')即可.例:在(x0,y0,z0)处将F=sin xyz 进行2阶Taylor 展开.键入syms x0 y0 z0maple('readlib(mtaylor)');maple('mtaylor(sin(x*y*z),[x=x0,y=y0,z=z0],2)') 得:ans = sin(x0*y0*z0)+cos(x0*y0*z0)*y0*z0*(x-x0)+cos(x0*y0*z0)*x0*z0*(y-y0)+cos(x0*y0*z0)*x0*y0*(z-z0)求积分int(P) 对表达式P 进行不定积分.int(P,v) 以v 为积分变量对P 进行不定积分.int(P,v,a,b) 以v 为积分变量,以a 为下限,b 为上限对P 进行定积分. 例:求⎰+-dx x x 22)1(2,可键入int('-2*x/(1+x^2)^2')得 ans = 1/(1+x^2) 例:求⎰+dz z x )1(2,可键入键入int('x/(1+z^2)','z')得 ans = atan(z)*x例:求⎰+10)1ln(dx x x ,可键入 int('x*log(1+x)',0,1) 得ans = 1/4例:求⎰tt xdx ln sin 2可键入:int('2*x','sin(t)','log(t)') 得:ans = log(t)^2-sin(t)^2对(符号)矩阵积分例:求()⎰⎰dt e dt e att ,输入 int('[exp(t),exp(a*t)]'),得:ans = [ exp(t), 1/a*exp(a*t)]求符号方程的解ⅰ线性方程组的求解线性方程组的形式为A*X=B ;其中A 至少行满秩.X=linsolve(A,B) 输出方程的特解X .例:解方程组⎪⎪⎭⎫ ⎝⎛=⎪⎪⎭⎫ ⎝⎛11cos sin sin cos X t t t t .键入 A=sym('[cos(t),sin(t);sin(t),cos(t)]');B=sym('[1;1]');c=linsolve(A,B)c =[ 1/(sin(t)+cos(t))][ 1/(sin(t)+cos(t))]ⅱ 代数方程的求解solve(P,v)对方程P 中的指定变量v 求解.v 可省略.solve(p1,P2,…,Pn,v1,v2,…,vn)对方程P1,P2,…Pn 中的指定变量v1, v2…vn 求解.例:解r x p =+sin ,可输入solve('p+sin(x)=r') 得:ans =-asin(p-r)例:解⎩⎨⎧=+-=++034322x x y xy x ,可输入: P1='x^2+x*y+y=3';P2='x^2-4*x+3=0';[x,y]=solve(P1,P2) 得:x = [ 1][ 3]y = [ 1][ -3/2]解⎩⎨⎧=-=++1022v u v u a ,可输入: P1='a+u^2+v^2=0';P2='u-v=1';[u,v]=solve(P1,P2,'u','v') 得:u = [ 1/2+1/2*(-1-2*a)^(1/2)][ 1/2-1/2*(-1-2*a)^(1/2)]v = [ -1/2+1/2*(-1-2*a)^(1/2)][ -1/2-1/2*(-1-2*a)^(1/2)]对于有些无法求出解析解的非线性方程组,MATLAB 只给出一个数值解.这一点可以从表示解的数字不被方括号括住而确定.例:解⎪⎩⎪⎨⎧=-=-+20)sin(2y x ye y x x 键入:[x,y]=solve('sin(x+y)-exp(x)*y=0','x^2-y=2') 得:x = -6.0173272500593065641097297117905y = 34.208227234306296508646214438330由于这两个数字没有被[ ]括住,所以它们是数值解.另外,可利用solve 来解线性方程组的通解.例:解⎪⎪⎪⎭⎫ ⎝⎛=⎪⎪⎪⎭⎫ ⎝⎛246714922531372X 键入P1='2*x1+7*x2+3*x3+x4=6'; P2='3*x1+5*x2+2*x3+2*x4=4';P3='9*x1+4*x2+x3+7*x4=2';u=solve(P1,P2,P3,'x1','x2','x3','x4')Warning: 3 equations in 4 variables.u = x1: [1x1 sym]x2: [1x1 sym]x3: [1x1 sym]x4: [1x1 sym]可以看到:屏幕提示“有3个方程4个变量”,意为解不唯一(有时会提示解不唯一).且输出的是解的结构形式.为进一步得到解,可输入:u.x1,u.x2,u.x3,u.x4, 得:ans = x1ans = -5*x1-4*x4ans = 11*x1+9*x4+2ans = x4这样就得到了原方程组的通解.⑷ 解符号微分方程解符号微分方程的命令格式为: dsolve('eq1','eq2',…).其中eq 表示相互独立的常微分方程、初始条件或指定的自变量.默认的自变量为t .如果输入的初始条件少于方程的个数,则在输出结果中出现常数c1,c2等字符.关于微分方程的表达式有如下的约定:字母y 表式函数,Dy 表示y 对t 的一阶导数;Dny 表示y 对t 的n 阶导数. 例如:求⎪⎩⎪⎨⎧-==x dtdy ydt dx 的解可键入:[x,y]=dsolve('Dx=y','Dy=-x') 得x =cos(t)*C1+sin(t)*C2y =-sin(t)*C1+cos(t)*C2dsolve 中的输入宗量最多只能有12个,但这并不妨碍解具有多个方程的方程组,因为可以把多个方程或初始条件定义为一个符号变量进行输入.例如求 g f dt df 43+= ,g f dtdg 34+-= , f(0)=0 , g(0)=1 的解.可输入指令: P='Df=3*f+4*g,Dg=-4*f+3*g';v='f(0)=0,g(0)=1';[f,g]=dsolve(P,v)f = exp(3*t)*sin(4*t)g = exp(3*t)*cos(4*t)注意:微分方程表达式中字母D 必须大写. 例如求解微分方程⎪⎩⎪⎨⎧=''='=-=0(0)y 0,(0)y 1,y(0)33y dx y d 可输入y=dsolve('D3y=-y','y(0)=1,Dy(0)=0,D2y(0)=0','x') 得:y = (1/3+2/3*exp(1/2*x)*cos(1/2*3^(1/2)*x)*exp(x))/exp(x)最后看一个解非线性微分方程的例子:dsolve('(Dy)^2+y^2=1','y(0)=0','x')ans = [ sin(x)][ -sin(x)]对于无法求出解析解的非线性微分方程,屏幕将提示出错信息.微分方程的数值解及其它问题的数值解ⅰ 常微分方程的数值解MATLAB 提供了求微分方程数值解的指令:[t,x]=ode23('fname',[t0,tf],x0,tol,trace)[t,x]=ode45('fname',[t0,tf],x0,tol,trace)这两个格式中的输入参数意义完全一样.下面介绍这两个格式的有关内容及各参数的意义.这两个格式都采用Runge--Kutta 法求解微分方程的数值解.它们是针对一阶微分方程组设计的.因此,如果待解的是高阶微分方程,那么首先要化成形式为x'=f(t,x)的一阶微分方程组.称为“状态方程”.‘fname ’是f(t,x)的函数名.该函数以x'为输出,以t,x 为输入变量,注意次序不能颠倒. t0和tf 分别是积分的起始值和终止值.x0是初始值,以向量的形式输入.tol 是用来控制精度的参数,可缺省.缺省时ode23默认tol=1.e-3;ode45默认tol=1.e -6.trace 用来控制是否显示中间结果,可缺省.缺省时,默认trace=0,不显示.输出结果t 和x 分别是时间向量和相应的状态向量.虽然ode45比ode23的精度高,但它的运算速度更快.例:求著名的Van der pol 方程⎩⎨⎧=--=x yy x y x )1(2,并绘出其解的图形. 第一步:在编辑器中编写名为fname 的M 文件.function X=fname(t,x)X=zeros(2,1);X(1)=(1-x(2)^2)*x(1)-x(2);X(2)=x(1);第二步:将此文件存放于自己的文件夹中听候调用.第三步:在MATLAB 的命令窗口调用这个函数,即键入如下命令:[t,x]=ode45('fname',[0,20],[0,0.5]);plot(t,x)ⅱ 数值积分quad('fname',a,b,tol,trace) Simpson 法求数值积分.quad8('fname',a,b,tol,trace) Newton-Cotes 法求数值积分.fname 是被积函数文件名b,a 分别是积分上下限用tol 来控制积分精度.可缺省.缺省时默认tol=0.001.用trace 来控制是否用图形显示积分过程.可缺省.缺省时默认trace=0,不显示图形.例如:求 ⎰-302x e dx第一步:在编辑器中建立被积函数的M 文件.取名为fname 即在编辑器中输入: function y=fname(x)y=exp(-x^2);第二步:将此文件存放于自己的文件夹中.第三步:在MATLAB 环境下调用fname.即输入s=quad8('fname',0,3)就可以得到结果:s =8862。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档