Matlab符号计算(含作业)

合集下载

matlab符号计算作业

matlab符号计算作业

以下是一个MATLAB符号计算作业的例子,该作业要求计算一个表达式的值,并将其结果与另一个表达式的结果进行比较。

作业题目:
计算以下两个表达式的结果,并比较它们的大小:
1. 计算e^((-4+sqrt(16))) 的值。

2. 计算(1/3)*e^((-1/3)) 的值。

作业要求:
1. 使用MATLAB的符号计算功能来计算这两个表达式的值。

2. 比较这两个表达式的值,并输出它们的大小关系。

作业步骤:
1. 打开MATLAB软件,并输入以下命令来创建一个符号变量:
syms x
2. 使用exp函数和sqrt函数来计算第一个表达式的值,如下所示:
expr1 = exp(-4 + sqrt(16));
3. 使用符号计算功能来计算第二个表达式的值,如下所示:
expr2 = (1/3)*exp(-1/3);
4. 比较这两个表达式的值,并输出它们的大小关系,如下所示:
disp(['The value of expr1 is ', num2str(expr1)]);
disp(['The value of expr2 is ', num2str(expr2)]);
disp(['The relationship between expr1 and expr2 is: ', num2str(expr1-expr2)]);。

Matlab上机操作2——符号计算

Matlab上机操作2——符号计算

Matlab上机操作2——符号计算1、%创建数值常量和符号常量a1=2*sqrt(5)+pi %创建数值常量a2=sym('2*sqrt(5)+pi') %按符号表达式创建符号常量a3=sym(2*sqrt(5)+pi) %按最接近的两个正整数表示符号常量a4=sym(2*sqrt(5)+pi,'d') %按最接近的十进制浮点数表示符号常量a31=a3-a1 %数值常量和符号常量的计算a5='2*sqrt(5)+pi' %字符串常量2、%创建符号变量和符号表达式f1=sym('a*x^2+b*x+c') %创建符号表达式syms a b c x %创建符号变量f2=a*x^2+b*x+c %创建符号表达式syms('a','b','c','x') %注意这里是syms,不是sym>> sym('a','b','c','x')错误使用sym输入参数太多。

f3=a*x^2+b*x+c; %创建符号表达式syms x y real %创建实数符号变量z=x+i*y; %创建z为复数符号变量real(z) %复数z的实部是实数xsym('x','unreal'); %清除符号变量的实数特性real(z) %复数z的实部3、%比较符号矩阵与字符串矩阵A=sym('[a,b;c,d]') %创建符号矩阵B='[a,b;c,d]' %创建字符串矩阵C=[a,b;c,d] %创建数值矩阵C=sym(B) %转换为符号矩阵whos4、%计算符号矩阵的行列式值、非共轭转置和特征值syms a11 a12 a21 a22A=[a11 a12;a21 a22] %创建符号矩阵det(A) %计算行列式A.' %计算非共轭转置eig(A)%计算特征值5、%符号表达式的代数运算f=sym('2*x^2+3*x+4')g=sym('5*x+6')f+g %符号表达式相加f*g %符号表达式相乘6、%对符号表达式进行任意精度控制并用三种运算方式表示同一符号常量a=sym('2*sqrt(5)+pi')digits %显示默认的有效位数vpa(a) %用默认的位数计算并显示vpa(a,20) %按指定的精度计算并显示digits(15) %改变默认的有效位数vpa(a) %按digits指定的精度计算并显示a1 =2/3 %数值型a2 = sym(2/3) %有理数型digitsa3 =vpa('2/3',32) %VPA型format longa17、%符号变量与数值变量进行转换a1=sym('2*sqrt(5)+pi')b1=double(a1) %转换为数值变量a2=vpa(sym('2*sqrt(5)+pi'),32)b2=numeric(a2) %转换为数值变量b2=numeric(a2)未定义函数或变量'numeric'。

matlab符号运算(二)

matlab符号运算(二)
六大常见符号运算
因式分解、展开、合并、简化及通分等
计算极限 limit(f,x,a): 计算 lim f ( x )
xa
limit(f,a): 计算默认自变量趋向于a时f的极限 limit(f): 计算 a=0 时的极限 limit(f,x,a,’right’):右极限 limit(f,x,a,’left’):左极限
1 2 n 1 n

,以及其前10项的部分和。
>> syms n >> S=symsum(1/n^2,n,1,inf) >> S10=symsum(1/n^2,n,1,10)
x 2 n 1 n

S=1/6*pi^2 S10=1968329/1270080
例:求函数级数
S
>> syms n x >> S=symsum(x/n^2,n,1,inf)
符号矩阵中元素的引用和修改
>> A=sym(’[1+x, sin(x); 5, exp(x)]’) >> A(1,2) >> A(2,2)=sym(’cos(x)’)
Matlab 符号运算(二)
符号矩阵的基本运算
符号矩阵的基本运算与数值矩阵的基本运算相类似。
1) 基本运算符:+、-、*、\、/、
ans=10
ans=2*x+y
ans=10 ans=[2+y,4+y,6+y] ans=[7 10 13]
ans=3*a+b
?
Matlab 符号运算(二)
符号矩阵
使用sym函数直接生成
>> A=sym(’[1+x, sin(ห้องสมุดไป่ตู้); 5, exp(x)]’)

MATLAB的符号计算

MATLAB的符号计算

符号数学工具箱中的工具是建立在功能强大 符号数学工具箱中的工具是建立在功能强大 的称作Maple软件的基础上。它最初是由加拿 软件的基础上。 大的滑铁卢( 大的滑铁卢 ( Waterloo ) 大学开发的。 当要 大学开发的 。 求MATLAB进行符号运算时,它就请求Maple 进行符号运算时, 去计算并将结果返回到MATLAB命令窗口。 命令窗口。 因此, 因此 , 在 MATLAB 中的符号运算是 MATLAB 处理数字的自然扩展。 处理数字的自然扩展。
积分 运用函数可以求得符号表达式的积分,该函数用 以演算函数的积分项,这个函数要找出一符号表 达式F使得diff(F)=f。相关的用法如下: 达式F使得diff(F)=f。相关的用法如下: ①int(f)返回f对预设独立变量的积分值。 int(f)返回f ② int(f,’t’)返回f对独立变量t的积分值。 int(f,’ 返回f对独立变量t ③ int(f,a,b)返回f对预设独立变量的积分值,积分 int(f,a,b)返回f对预设独立变量的积分值, 区间为[a,b], 区间为[a,b],a和b为数值表达式。 ④ int(f,’t’,a,b)返回f对独立变量t的积分值,积分区 int(f,’ ,a,b)返回f对独立变量t的积分值, 间为[a,b], 间为[a,b],a和b为数值表达式。 ⑤ int(f,’m’,’n’)返回f对预设独立变量的积分值,积 int(f,’ 返回f对预设独立变量的积分值, 分区间为[m,n], 分区间为[m,n],m和n为符号表达式。
左趋近于a
lim f ( x )
x →a −
limit(f,x,a,’left’)
lim f ( x )
x →a +
右趋近于a limit(f,x,a,’right’)

(完整word版)含答案《MATLAB实用教程》

(完整word版)含答案《MATLAB实用教程》

第二章 MATLAB 语言及应用实验项目实验一 MATLAB 数值计算三、实验内容与步骤1.创建矩阵⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=987654321a(1(2)用(3)用(42.矩阵的运算(1)利用矩阵除法解线性方程组。

⎪⎪⎩⎪⎪⎨⎧=+++=-+-=+++=+-12224732258232432143214321421x x x x x x x x x x x x x x x 将方程表示为AX=B ,计算X=A\B 。

(2)利用矩阵的基本运算求解矩阵方程。

已知矩阵A 和B 满足关系式A -1BA=6A+BA ,计算矩阵B 。

其中⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=7/10004/10003/1A ,Ps: format rata=[1/3 0 0;0 1/4 0;0 0 1/7];b=inv(a)*inv(inv(a)-eye(3))*6*a(3)计算矩阵的特征值和特征向量。

已知矩阵⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡--=1104152021X ,计算其特征值和特征向量。

(4)Page:322利用数学函数进行矩阵运算。

已知传递函数G(s)=1/(2s+1),计算幅频特性Lw=-20lg(1)2(2w )和相频特性Fw=-arctan(2w),w 的范围为[0.01,10],按对数均匀分布。

3.多项式的运算(1)多项式的运算。

已知表达式G(x)=(x-4)(x+5)(x 2-6x+9),展开多项式形式,并计算当x 在[0,20]内变化时G(x)的值,计算出G(x)=0的根。

Page 324(2)多项式的拟合与插值。

将多项式G(x)=x 4-5x 3-17x 2+129x-180,当x 在[0,20]多项式的值上下加上随机数的偏差构成y1,对y1进行拟合。

对G(x)和y1分别进行插值,计算在5.5处的值。

Page 325 四、思考练习题1.使用logspace 函数创建0~4π的行向量,有20个元素,查看其元素分布情况。

Ps: logspace(log10(0),log10(4*pi),20) (2) sort(c,2) %顺序排列 3.1多项式1)f(x)=2x 2+3x+5x+8用向量表示该多项式,并计算f(10)值. 2)根据多项式的根[-0.5 -3+4i -3-4i]创建多项式。

5 MATLAB 符号计算 (2)new

5 MATLAB 符号计算 (2)new

• d2z_dxdy=diff(diff(x^6-3*y^4+2*x^2*y^2,x),y)
• %给出关于x y的偏导数 • 可得到: • d2z_dxdy = • 8*x*y
• d2z_dydx=diff(diff(x^6-3*y^4+2*x^2*y^2,y),x)
• %给出关于y x的偏导数 • 可得到: • d2z_dydx = • 8*x*y
5 符号计算 (2)
• • • • •
5.4 符号微积分 5.4.1 符号极限 求函数极限的函数是limit,调用格式如下: limit(f,x,a) 求符号函数f(x)的极限值。即计算当自变量x趋 近于常数a时,f(x)函数的极限值。 • limit(f,a) • 求符号函数f(x)的极限值。由于没有指定符号 函数f(x)的自变量,则使用该格式时,符号函 数f(x)的变量为函数findsym(f)确定的默认自 变量,即变量x趋近于a。
• 执行结果为:
• The integral of f is • [ 2 • [1/2 a x • [ • [ log(x)
3] 1/3 b x ] ] -cos(x) ]
• 例5-49 求积分
• syms x y z; • F2=int(int(int(x^2+y^2+z^2,z ,sqrt(x*y),x^2*y),y,sqrt(x), x^2),x,1,2) • VF2=vpa(F2)
• • • • •
• • • •
输入语句: dz_dx=-a(1)/a(3) 求得: dz_dx = (-cos(x*y)*y-(1+tan(z*x)^2)*z)/(sin(y*z)*y+(1+tan(z*x)^2)*x) dz_dy=-a(2)/a(3) 求得: dz_dy = (-cos(x*y)*x+sin(y*z)*z)/(sin(y*z)*y+(1+tan(z*x)^2)*x)

MATLAB的符号计算

MATLAB的符号计算

diff(s,’v’,n)
【例】求导数: 2 d s in x dx x = sym('x'); diff(sin(x^2),x) ans = 2*cos(x^2)*x
%定义符号变量 %求导运算
3.积分函数 积分函数int(s ,v,a,b)可以对被积函 数或符号表达式s求积分。其引用格式为: int(s ,v,a,b) 说明:
1、建立m-文件rigid.m如下: function dy=rigid(t,y) dy=zeros(3,1); dy(1)=y(2)*y(3); dy(2)=-y(1)*y(3); dy(3)=-0.51*y(1)*y(2);
1 0.8 0.6 0.4 0.2 0 -0.2 -0.4 -0.6 -0.8 -1 0 2 4 6 8 10 12
例1

d2y dx
2
0 应表达为:D2y=0.

du 1 u 2 的通解. dt
输入命令:dsolve('Du=1+u^2','t')
结 果:u = tg(t-c)
例2
求微分方程的特解.
d 2 y dy 2 4 29 y 0 dx dx y (0) 0, y ' (0) 15

2、取t0=0,tf=12,输入命令: [T,Y]=ode45('rigid',[0 12],[0 1 1]); plot(T,Y(:,1),'-',T,Y(:,2),'*',T,Y(:,3),'+')
3、结果如图 图中,y1的图形为实线,y2的图形为“*”线,y3的图形为“+”线.

matlab整理

matlab整理

作业一:P55:1.在一个MATLAB命令中,6+7i和6+7*i有何区别?i和I有何区别?解:在MATLAB中6+7i是一个复数常量,6+7*i则是一个表达式。

i是虚数单位,而I是单位向量。

4.要产生均值为3,方差为1的500个正态分布的随机序列,写出相应的表达式。

解:y=3+sqrt(1)*randn(500)5.求下列矩阵的对角线元素、上三角矩阵、逆矩阵、行列式的值、秩、迹。

(1) A =1 -12 35 1 -4 23 0 5 211 15 0 9(2) B =0.43 43 2-8.9 4 21解:(1)A=[1,-1,2,3;5,1,-4,2;3,0,5,2;11,15,0,9]主对角元素:D=diag(A)上三角矩阵:B=triu(A)下三角矩阵:C=tril(A)逆矩阵:X=inv(A)行列式的值:E=det(A)秩:F=rank(A)逆:G=trace(A)运行结果:A =1 -12 35 1 -4 23 0 5 211 15 0 9主对角元素:D =1159上三角矩阵:B =1 -12 30 1 -4 20 0 5 20 0 0 9下三角矩阵:C =1 0 0 05 1 0 03 0 5 011 15 0 9逆矩阵:X =-0.1758 0.1641 0.2016 -0.0227 -0.1055 -0.1016 -0.0391 0.0664 -0.0508 -0.0859 0.1516 0.0023 0.3906 -0.0313 -0.1813 0.0281 行列式的值:E =1280秩:F =4逆:G =16(2)B = [0.43,43,2;-8.9,4,21]主对角元素:D=diag(B)上三角矩阵:Y=triu(B)下三角矩阵:C=tril(B)逆矩阵:X=pinv(B)行列式的值:E=det(B)秩:F=rank(B)迹:G= trace(B)运行结果:B =0.4300 43.0000 2.0000-8.9000 4.0000 21.0000主对角元素:D =0.43004.0000上三角矩阵:Y =0.4300 43.0000 2.00000 4.0000 21.0000下三角矩阵:C =0.4300 0 0-8.9000 4.0000 0逆矩阵:X =0.0022 -0.01750.0234 -0.0017-0.0035 0.0405行列式的值:E = 1.2526e+003秩:F=3迹:G =5.43006. 当A=[34,NaN,Inf,-Inf,-pi,eps,0]时,求函数all(A)、any(A)、isnan(A)、isinf(A)、isfinite(A)的值。

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(Matrix Laboratory)是一种用于数值计算和科学工程应用的高级编程语言和环境。

MATLAB中包含了丰富的数学符号和运算,用于进行矩阵操作、线性代数、微积分等数学计算。

以下是MATLAB中一些常见的数学符号和运算:1. 数学符号:-矩阵:MATLAB 中的基本数据类型是矩阵,可以使用方括号`[]` 来表示。

例如,`A = [1, 2; 3, 4]` 表示一个2x2的矩阵。

-向量:向量可以表示为一维矩阵,例如,`v = [1, 2, 3]` 表示一个包含3个元素的行向量。

-转置:使用单引号`'` 来进行转置操作。

例如,`A'` 表示矩阵A的转置。

-点乘和叉乘:点乘使用`.*`,叉乘使用`.*`。

例如,`A .* B` 表示矩阵A和B的对应元素相乘,`A * B` 表示矩阵A和B的矩阵乘法。

2. 数学运算:-基本算术运算:MATLAB支持基本的算术运算,如加法、减法、乘法和除法。

例如,`result = 2 + 3`。

-元素-wise 运算:MATLAB 支持元素-wise 的运算,即对矩阵或向量中的每个元素进行运算。

例如,`C = A .* B` 表示矩阵A和B的对应元素相乘。

-矩阵操作:MATLAB 提供了许多用于矩阵操作的函数,如`inv`(求逆矩阵)、`det`(求行列式)、`eig`(求特征值)等。

-积分和微分:MATLAB 提供了`int`(积分)和`diff`(微分)等函数,用于进行积分和微分运算。

-方程求解:MATLAB 提供了`solve` 函数,用于求解方程组。

这些是MATLAB中一些常见的数学符号和运算。

MATLAB 的强大之处在于它的矩阵操作能力,使得它非常适用于数学和工程领域的计算和建模。

如果你有特定的数学运算需求,可以查阅MATLAB 的官方文档或在线资源以获取详细信息。

第3章 MATLAB符号计算

第3章  MATLAB符号计算
指数和对数函数。在符号计算中,指数函数sqrt、exp、expm的使用 方法与数值计算的使用方法完全相同;对数函数在符号计算中只有 自然对数log(表示ln),而没有数值计算中的log2和log10。
复数函数。在符号计算中,复数的共轭conj、求实部real、求虚部 imag和求模abs函数与数值计算中的使用方法相同。但注意,在符号 计算中,MATLAB没有提供求相角的命令。
2.使用syms命令创建符号变量和符号表达式
语法:
syms('arg1', ' arg2',…,参数) syms arg1 arg2 … 参数
%把字符变量定义为符号变量 %把字符变量定义为符号变量的简洁形式
说明:syms用来创建多个符号变量,以上两种方式创建的符号对象是相同的。参数设置和前面的sym命令 相同,省略时符号表达式直接由各符号变量组成。 【例3.2续】 使用syms命令创建符号变量和符号表达式。
>> syms x y real >> z=x+i*y; >> real(z) ans = x >> sym('x','unreal'); >> real(z) ans = x/2 + conj(x)/2
%创建实数符号变量 %创建z为复数符号变量 %复数z的实部是实数x
%清除符号变量的实数特性 %复数z的实部
符号运算中的运算符有以下2种。 (1)基本运算符。
① 运算符“”、“”、“*”、 “\”、“/”、“^”分别实现符号 矩阵的加、减、乘、左除、 右除、求幂运算。
② 运算符“.*”、“./”、“.\”、 “.^”分别实现符号数组的乘、 左除、右除、求幂,即数 组间元素与元素的运算。

第9章MATLAB符号计算习题答案.doc

第9章MATLAB符号计算习题答案.doc

第9章 MATLAB符号计算习题9一、选择题1.设有a=sym(4)。

则1/a+1/a的值是()。

BA.0.5 B.1/2 C.1/4+1/4 D.2/a2.函数factor(sym(15))的值是()。

DA.'15' B.15 C.[ 1, 3, 5] D.[ 3, 5]3.在命令行窗口输入下列命令:>> f=sym(1);>> eval(int(f,1,4))则命令执行后的输出结果是()。

AA.3 B.4 C.5 D.14.MA TLAB将函数展开为幂级数,所使用的函数是()。

DA.tailor B.tayler C.diff D.taylor5.MATLAB用于符号常微分方程求解的函数是()。

CA.solve B.solver C.dsolve D.dsolver二、填空题1.在进行符号运算之前首先要建立,所使用的函数或命令有和。

符号对象,sym,syms2.对于“没有定义”的极限,MATLAB给出的结果为;对于极限值为无穷大的极限,MA TLAB给出的结果为。

NaN,Inf3.在命令行窗口输入下列命令:>> syms n;>> s=symsum(n,1,10)命令执行后s的值是。

554.在MATLAB中,函数solve(s,v)用于代数方程符号求解,其中s代表,v 代表。

符号代数方程,求解变量5.在MA TLAB符号计算中y的二阶导数表示为。

D2y三、应用题1.分解因式。

(1)x9-1 (2)x4+x3+2x2+x+1(3)125x6+75x4+15x2+1 (4)x2+y2+z2+2(xy+yz+zx)(1):2x=sym('x'); A=x^9-1; factor(A) (2):x=sym('x');B=x^4+x^3+2*x^2+x+1; factor(B) 2.求函数的极限。

(1)4586lim 22++x x x x --4→x (2)xx -0→x lim(1):x=sym('x');A=(x^2-6*x+8)/(x^2-5*x+4); limit(A,x,4) (2):x=sym('x'); B=abs(x)/x; limit(B)3.求函数的符号导数。

4MATLAB符号计算

4MATLAB符号计算

第四节MATLAB符号计算在自然科学的各个领域不但需要解决数值分析和计算问题,同时也要解决符号运算的问题,MA TLAB中的符号计算功能是以Maple V为基础开发的。

MATLAB的符号数学工具箱的主要功能包括:符号表达式的创建、符号矩阵的运算,符号表达式的化简和替换、符号微积分、符号代数方程等。

一、符号表达式的创建MATLAB的符号数学工具箱提供了两个基本函数,用来创建符号变量和表达式,分别是sym 和syms。

●函数sym的调用形式为:x=sym(‘x’)创建一个符号变量x,它可以是字符、字符串、表达式或字符表达式。

●函数syms用于方便地一次创建多个符号变量,其调用形式为:syms a b c…例1 使用sym 和syms函数创建符号变量。

a=sym('a') %定义符号变量aa =ab=sym('1+sqrt(5)/2') %定义符号变量bb =1+sqrt(5)/2syms a b c d %定义4个符号变量使用函数可以创建符号矩阵,可以直接输入或从数值矩阵转换。

例2 创建一个循环矩阵。

syms a b c dn=[a b c d ;b c d a ; c d a b ; d a b c]输出结果为:n =[ a, b, c, d][ b, c, d, a][ c, d, a, b][ d, a, b, c]例3 将3阶的Hilbert 矩阵转化为符号矩阵。

h=hilb(3) %创建Hilbert矩阵h =1.0000 0.5000 0.33330.5000 0.3333 0.25000.3333 0.2500 0.2000h1=sym(h) %用函数sym转化为符号矩阵h1 =[ 1, 1/2, 1/3][ 1/2, 1/3, 1/4][ 1/3, 1/4, 1/5]注意:符号矩阵与普通数值矩阵的区别是:在命令窗口的显示中,数值矩阵只显示元素的数值,而符号矩阵的每行元素均放在一对方括号内;在工作空间窗口显示的变量图标也不同,数值图标为,符号矩阵的图标为。

MATLAB平时作业(图文版)

MATLAB平时作业(图文版)

MATLAB 平时作业第一章 习题16. 以下两种说法对吗?(1)“MATLAB 的数值表达精度与其指令窗中的数据显示精度相同。

”答:此种说法错误。

MATLAB 提供了控制数据显示格式的控制指format ,该指令并不改变MATLAB 内存中变量的精度,只是改变其显示精度。

(2)“MATLAB 指令窗中显示的数值有效位数不超过7位。

”答:此种说法错误。

当变量小于1000时,使用format 或format short 后,或者默认情况下,变量的显示精度最多不超过7位,但显示精度不等于变量的精度。

7. 想要在MATLAB 中产生二维数组⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=987654321S ,下面哪些指令能实现目的? S=[1,2,3;4,5,6;7,8;9]S=[1 2 3;4 5 6;7 8 9]S=[1,2,3;4,5,6;7,8,9] %整个指令在中文状态下输入 答:操作如图:第1、2条指令可以实现,第3条指令不可实现。

第三章 习题31.在MATLAB 中,先运行指令A=magic(3), B=[1,2,1;3,4,3;5,6,7], C=reshape(1:6,3,2)生成阵列33⨯A ,23⨯B ,23⨯C ,然后根据运行结果回答以下问题:运行结果如图:(1)计算A*B, B*A ,这两个乘积相同吗? 计算结果如图:答:不同。

(2)计算A\B, B/A ,左除、右除结果相同吗?计算结果如图:答:不同。

(3)计算B( : ,[1,2]).*C和C.*B( : , [1,2]),这两个乘积相同吗?计算结果如图答:相同。

(4)计算A\A和A.\A,这两个计算结果相同吗?计算结果如图:答:相同。

(5)计算A\eye(3)和inv(A),这两个计算结果相同吗?计算结果如图:答:不同。

(提示:根据对计算结果的目测回答问题)2.在MATLAB中,先运行A=[1, 2; 3, 4],b=0.5,C=[4, 2; 1, 0.5], 然后根据计算结果回答以下问题:创建数据步骤略(1)计算A^b和A.^b, 这两个计算结果相同吗?答:不同。

MATLAB习题及参考答案

MATLAB习题及参考答案

习题:1, 计算⎥⎦⎤⎢⎣⎡=572396a 与⎥⎦⎤⎢⎣⎡=864142b 的数组乘积。

2, 对于B AX =,如果⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=753467294A ,⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=282637B ,求解X 。

3, 已知:⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=987654321a ,分别计算a 的数组平方和矩阵平方,并观察其结果。

4, 角度[]604530=x ,求x 的正弦、余弦、正切和余切。

(应用sin,cos,5, 将矩阵⎥⎦⎤⎢⎣⎡=7524a 、⎥⎦⎤⎢⎣⎡=3817b 和⎥⎦⎤⎢⎣⎡=2695c 组合成两个新矩阵: (1)组合成一个43的矩阵,第一列为按列顺序排列的a 矩阵元素,第二列为按列顺序排列的b 矩阵元素,第三列为按列顺序排列的c 矩阵元素,即 ⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡237912685574 (2)按照a 、b 、c 的列顺序组合成一个行矢量,即 []2965318772546, 将(x -6)(x -3)(x -8)展开为系数多项式的形式。

(应用poly,polyvalm)7, 求解多项式x 3-7x 2+2x +40的根。

(应用roots)8, 求解在x =8时多项式(x -1)(x -2) (x -3)(x -4)的值。

(应用poly,polyvalm)9, 计算多项式9514124234++--x x x x 的微分和积分。

(应用polyder,polyint ,poly2sym)10, 解方程组⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡66136221143092x 。

(应用x=a\b)11, 求欠定方程组⎥⎦⎤⎢⎣⎡=⎥⎦⎤⎢⎣⎡5865394742x 的最小范数解。

(应用pinv)12, 矩阵⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡-=943457624a ,计算a 的行列式和逆矩阵。

(应用det,inv)13, y =sin(x ),x 从0到2,x =,求y 的最大值、最小值、均值和标准差。

实验三 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符号运算

第2章符号运算- Presentation Transcript1.第二章符号运算o MA TLAB 的数学计算=数值计算+符号计算o其中符号计算是指使用未定义的符号变量进行运算,而数值计算不允许使用未定义的变量。

2. 1. 符号变量、符号表达式和符号方程的生成o使用sym 函数定义符号变量和符号表达式o使用syms 函数定义符号变量和符号表达式3. 2 、用syms 创建符号变量o使用syms 命令创建符号变量和符号表达式o语法:o syms(‘arg1’, ‘arg2’, …, 参数) % 把字符变量定义为o% 符号变量o syms arg1 arg2 …, 参数% 把字符变量定义为符号变量的简洁形o% 式o说明:syms 用来创建多个符号变量,这两种方式创建的符号对象是相同的。

参数设置和前面的sym 命令相同,省略时符号表达式直接由各符号变量组成。

4.使用syms 函数定义符号变量和符号表达式▪>> syms a b c x▪>> f = a*x^2 + b*x + c▪ f =▪a*x^2 + b*x + c▪>> g=f^2+4*f-2▪g =▪(a*x^2+b*x+c)^2+4*a*x^2+4*b*x+4*c-2▪>>ex02015.符号方程的生成▪>> % 符号方程的生成▪>> % 使用sym 函数生成符号方程▪>> equation1='sin(x)+cos(x)=1'▪equation1 =▪sin(x)+cos(x)=1▪>>6. 2.2 符号形式与数值形式的转换o 1 、将符号形式转换为数值形式:o eval 与numerico例:a1='2*sqrt(5)+pi'o a1 =o2*sqrt(5)+pio b2=numeric(a2) % 转换为数值变量o b2 =o7.6137o b3=eval(a1)o b3 =o7.61377. 2.2 符号形式与数值形式的转换▪ 2 、数值形式转换为符号形式▪p=3.1416;▪q=sym(p)▪执行后屏幕显示:▪q=3927/1250▪numeric(q)▪屏幕显示:▪ans =▪ 3.14168. 2.2 符号形式与数值形式的转换3 、多项式与系数向量之间的转换3.1 sym2poly: 将多项式转化为对应的系数向量例:syms x p; p=x^3-4*x+5; sym2poly(p) 执行后屏幕显示:ans= 1 0 -4 5 9. 2.2 符号形式与数值形式的转换o 3 、多项式与系数向量之间的转换o 3.2 poly2sym: 将向量转化为对应的多项式o例o a=[1 0 -4 5];o poly2sym(a)o执行后屏幕显示o ans=o x^3-4*x+510. 3. 符号表达式( 符号函数) 的操作o(1) 符号表达式的四则运算o syms xo f=x^3-6*x^2+11*x-6;o g=(x-1)*(x-2)*(x-3);o h=x*(x*(x-6)+11)-6;o f+g-ho执行后输出:o ans =o x^3-6*x^2+11*x+(x-1)*(x-2)*(x-3)-x*(x*(x-6)+11)11.(1) 符号表达式的四则运算▪>> syms x y a b▪>> fun1=sin(x)+cos(y)▪fun1 =▪sin(x)+cos(y)▪>> fun2=a+b▪fun2 =▪a+b▪>> fun1+fun2▪sin(x)+cos(y)+a+b▪>>fun1*fun2▪ans =▪(sin(x)+cos(y))*(a+b)12.o(1) 将表达式中的括号进行展开: expando(2) 将表达式进行因式分解:factoro(3) 将一般的表达式变换为嵌套的形式:hornero(4) 将表达式按某一个变量的幂进行集项:collecto(5) 化简表达式:simplifyo(6) 化简表达式,使之成为书写长度最短的形式:simple13.o同一个数学函数的符号表达式的可以表示成三种形式,例如以下的f(x) 就可以分别表示为:o多项式形式的表达方式:o f(x)=x^3+6x^2+11x-6o因式形式的表达方式(factor) :o f(x)=(x-1)(x-2)(x-3)o嵌套形式的表达方式(horner) :o f(x)=x(x(x-6)+11)-614.集项-合并符号表达式的同类项o>> syms x y▪>> collect(x^2*y + y*x - x^2 - 2*x)▪ans =▪(y-1)*x^2+(y-2)*xo>> syms x y▪>> collect(x^2*y + y*x - x^2 - 2*x,y)▪ans =▪(x^2+x)*y-x^2-2*x15.符号多项式的嵌套(horner )▪>> syms x▪>> fun1=2*x^3+2*x^2-32*x+40▪fun1 =▪2*x^3+2*x^2-32*x+40▪>> horner(fun1)▪ans =▪40+(-32+(2+2*x)*x)*x▪>> fun2=x^3-6*x^2+11*x-6▪fun2 =▪x^3-6*x^2+11*x-6▪>> horner(fun2)▪ans =▪-6+(11+(-6+x)*x)*x16.符号表达式的化简(simplify)▪>> syms x▪>> fun1=(1/x+7/x^2+12/x+8)^(1/3)▪fun1 =▪(13/x+7/x^2+8)^(1/3)▪>> sfy1= simplify (fun1)▪sfy1 =▪((13*x+7+8*x^2)/x^2)^(1/3)▪>> sfy2= simple (sfy1)▪sfy2 =▪(13/x+7/x^2+8)^(1/3)17.subs 函数用于替换求值▪>> syms x y▪ f = x^2*y + 5*x*sqrt(y)▪ f =▪x^2*y+5*x*y^(1/2)▪>> subs(f, x, 3)▪ans =▪9*y+15*y^(1/2)▪>> subs(f, y, 3)▪ans =▪3*x^2+5*x*3^(1/2)▪>>subs(f,{x,y},{1,1})ex0202 ex0203 ex020418. 4 、反函数的运算(finverse )▪>> syms x y▪>> f = x^2+y▪ f =▪x^2+y▪>> finverse(f,y)▪ans =▪-x^2+y使用格式: 1 、g=finverse(f):f,g 均为单变量x 的符号函数; 2 、g=finverse(f,t) 返回值g 的自变量取为t ;19. 5 复合函数的运算(compose)▪>> syms x y z t u▪>> f = 1/(1 + x^2);▪>> g = sin(y);▪>> h = x^t;▪>> p = exp(-y/u) ;▪>> compose(f,g)▪ans =▪1/(1+sin(y)^2)▪>> compose(f,g,t)▪ans =▪1/(1+sin(t)^2)使用格式:Compose(f,g) % 返回当f=f(y) 和g=g(x) 时的复合函数f(g(x)) Compose(f,g,t) % 返回的复合函数以t 为自变量,即有f(g(t))20. 6 函数的极限、导数与积分o(1 )函数极限-limit 函数的使用o(2 )函数求导-diff 函数的使用o(3 )符号积分-int 函数的使用21.o符号极限(limit)假定符号表达式的极限存在,Symbolic Math Toolbox 提供了直接求表达式极限的函数limit ,函数limit 的基本用法如下表所示。

第四章 MATLAB符号计算

第四章  MATLAB符号计算

Ezpolar函数实现极坐标中二维曲 线图象的绘制,它的调用格式:
ezpolar(f,[a,b])
说明: 绘图表达式为rho=f(theta)极坐标曲线,
theta的取值范围为,缺省时为[0,2*pi]
例:p83
4.5.2三维绘图函数
ezplot3是实现三维绘图的函数,它的 调用格式:
ezplot3(x,y,z,[tmin,tmax]) ezplot3(x,y,z,[tmin,tmax ],'animate')
3.符号表达式的提取分子和分母运算
在matlab中可利用numden函数来提取符号表达式 中的分子或分母。其一般调用格式为:
[n,d]=numden(s)
说明:
参数s是符号表达式是一个 有理分式或可以展开为有理
例: s=sym('2/5+3/7')
n= 29
分式,numden函数把有理分 式的分子返回给n,分母返回
dsolve在求常微分方程组时 的调用格式为:
dsolve('eq1,eq2,...','cond1,cond2...','v')
说明: 该函数求解常微分方程组eq1,…,eqn在初值条件或边界 条件为cond1,…,condn下的符号特解,若不给出初值 条件,则求方程组的通解,v为指定的返回值中的变量 表示。
例4-9解超越方程组
sin(x+y)-y*exp(x)=0 x^2-y=2
syms x y
[x,y]=solve('sin(x+y)-y*exp(x)=0','x^2-y=2')
x =-.66870120500236202933135901833637

matlab符号计算

matlab符号计算

logo>> randn('state',27)>> startprice=50;>> fracreturnsl=0.00015*randn(200,1)+0.0003;>> x1=[startprice;1+fracreturnsl];>> prices1=cumprod(x1);>> t=(1:length(prices1))';>> randn('state',27)>> fracreturns2=0.0015*randn(200,1)+0.0003;>> x2=[startprices;1+fracreturns2];??? Undefined function or variable 'startprices'.>> x2=[startprice;1+fracreturns2];>> prices=cumprod(x2);whosName Size Bytes ClassL 51x51 20808 double arrayfracreturns2 200x1 1600 double arrayfracreturnsl 200x1 1600 double arrayl1 1x1 8 double arrayl2 1x1 8 double arrayprices 201x1 1608 double arrayprices1 201x1 1608 double arrays 1x1 8 double arraystartprice 1x1 8 double arrayt 201x1 1608 double arrayx1 201x1 1608 double arrayx2 201x1 1608 double arrayGrand total is 4010 elements using 32080 bytes>> plot (fracreturnsl, 'DisplayName', 'fracreturnsl', 'YDataSource', 'fracreturnsl'); figure(gcf) >> hist (fracreturnsl); figure(gcf)>> bar (fracreturnsl, 'DisplayName', 'fracreturnsl', 'YDataSource', 'fracreturnsl'); figure(gcf) >> pie (fracreturnsl); figure(gcf)Warning: Ignoring non-positive data in pie chart.> In pie at 40>> stairs (fracreturnsl, 'DisplayName', 'fracreturnsl', 'YDataSource', 'fracreturnsl'); figure(gcf) >> plot (fracreturnsl, 'DisplayName', 'fracreturnsl', 'YDataSource', 'fracreturnsl'); figure(gcf) >> whosName Size Bytes ClassL 51x51 20808 double arrayfracreturns2 200x1 1600 double arrayfracreturnsl 200x1 1600 double arrayl1 1x1 8 double arrayl2 1x1 8 double arrayprices 201x1 1608 double arrayprices1 201x1 1608 double arrays 1x1 8 double arraystartprice 1x1 8 double arrayt 201x1 1608 double arrayx1 201x1 1608 double arrayx2 201x1 1608 double arrayGrand total is 4010 elements using 32080 bytes>> plot (prices1, 'DisplayName', 'prices1', 'YDataSource', 'prices1'); figure(gcf)>> plot (prices, 'DisplayName', 'prices', 'YDataSource', 'prices'); figure(gcf)>> plot (x1, 'DisplayName', 'x1', 'YDataSource', 'x1'); figure(gcf)>> hist (x1); figure(gcf)>> stem (x1, 'DisplayName', 'x1', 'YDataSource', 'x1'); figure(gcf)>> plot (prices2,'DisplayName','prices2','YDateSource','prices');figure(gef)??? Undefined function or variable 'prices2'.>>>> plot ('prices2','DisplayName','prices2','YDateSource','prices');figure(gef)??? Error using ==> plotMATLAB:Graphics:Plot.>> plot (prices2,'DisplayName','prices2','YDateSource','prices');figure(gcf)??? Undefined function or variable 'prices2'.>> plot (prices2,'DisplayName','prices2','YDateSource','prices2');figure(gcf)??? Undefined function or variable 'prices2'.>> figure; pcolor (x1); figure(gcf)??? Error using ==> surfaceZ must be a matrix, not a scalar or vector.Error in ==> pcolor at 53hh = surface(zeros(size(x)),x,'parent',cax);>> plottools>> plot (prices1, 'DisplayName', 'prices1', 'YDataSource', 'prices1'); figure(gcf)>> plot (fracreturns2, 'DisplayName', 'fracreturns2', 'YDataSource', 'fracreturns2'); figure(gcf) >> plot (prices, 'DisplayName', 'prices', 'YDataSource', 'prices'); figure(gcf)>> plot (fracreturns2, 'DisplayName', 'fracreturns2', 'YDataSource', 'fracreturns2'); figure(gcf)>> plot (fracreturns2, 'DisplayName', 'fracreturns2', 'YDataSource', 'fracreturns2'); figure(gcf) >> plot (t, 'DisplayName', 't', 'YDataSource', 't'); figure(gcf)>> plot (prices1, 'DisplayName', 'prices1', 'YDataSource', 'prices1'); figure(gcf)>> plot (fracreturnsl, 'DisplayName', 'fracreturnsl', 'YDataSource', 'fracreturnsl'); figure(gcf) >> plot (fracreturns2, 'DisplayName', 'fracreturns2', 'YDataSource', 'fracreturns2'); figure(gcf) >> plot (prices, 'DisplayName', 'prices', 'YDataSource', 'prices'); figure(gcf)>> plot (fracreturns2, 'DisplayName', 'fracreturns2', 'YDataSource', 'fracreturns2'); figure(gcf) >> plot (fracreturns2, 'DisplayName', 'fracreturns2', 'YDataSource', 'fracreturns2'); figure(gcf) >> plottoolsWarning: Plot empty.> In legend at 193In insertmenufcn at 53>> logo>> plot (prices, 'DisplayName', 'prices', 'YDataSource', 'prices'); figure(gcf)>> plot (prices1, 'DisplayName', 'prices1', 'YDataSource', 'prices1'); figure(gcf)>> plot (prices, 'DisplayName', 'prices', 'YDataSource', 'prices'); figure(gcf)>> plot (prices1, 'DisplayName', 'prices1', 'YDataSource', 'prices1'); figure(gcf)>> plot (prices1, 'DisplayName', 'prices1', 'YDataSource', 'prices1'); figure(gcf)>> plot (prices, 'DisplayName', 'prices', 'YDataSource', 'prices'); figure(gcf)>>。

MATLAB符号计算

MATLAB符号计算

第3章MATLAB符号计算符号计算则是可以对未赋值的符号对象(可以是常数、变量、表达式)进行运算和处理。

MATLAB具有符号数学工具箱(Symbolic Math Toolbox),将符号运算结合到MATLAB的数值运算环境。

符号数学工具箱是建立在Maple软件基础上的。

3.1 符号表达式的建立Symbolic Math Toolbox2.1版规定在进行符号计算时,首先要定义基本的符号对象然后才能进行符号运算。

3.1.1 创建符号常量符号常量是不含变量的符号表达式,用sym命令来创建符号常量。

语法:sym(‘常量’) %创建符号常量例如,创建符号常量,这种方式是绝对准确的符号数值表示:>> a=sym('sin(2)')a =sin(2)sym命令也可以把数值转换成某种格式的符号常量。

语法:sym(常量,参数) %把常量按某种格式转换为符号常量说明:参数可以选择为’d’、’f’、’e’或’r’四种格式,也可省略,其作用如表3.1所示。

表3.1 参数设置a=sym('sin(2)')a =sin(2)例如,把常量转换为符号常量,按系统默认格式转换:a=sym(sin(2))a =8190223105242182*2^(-53)【例3.1】创建数值常量和符号常量。

a1=2*sqrt(5)+pi %创建数值常量a1 =7.6137a2=sym('2*sqrt(5)+pi') %创建符号表达式a2 =2*sqrt(5)+pia3=sym(2*sqrt(5)+pi) %按最接近的有理数型表示符号常量a3 =8572296331135796*2^(-50)a4=sym(2*sqrt(5)+pi,'d') %按最接近的十进制浮点数表示符号常量a4 =7.6137286085893727261009189533070a31=a3-a1 %数值常量和符号常量的计算a31 =a5='2*sqrt(5)+pi' %字符串常量a5 =2*sqrt(5)+pi图3.1 工作空间窗口可以通过查看工作空间来查看各变量的数据类型和存储空间,工作空间如图3.1所示。

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

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

符号计算建立在数值完全准确表达和推演严格解析的基础之上,所得结果完全准确。

特点:一.相对于MATLAB的数值计算“引擎”和“函数库”而言,符号计算的“引擎”和“函数库”是独立的。

二.在相当一些场合,符号计算解算问题的命令和过程,显得比数值计算更自然、更简明。

三.大多数理工科的本科学生在学过高等数学和其他专业基础课以后,比较习惯符号计算的解题理念和模式。

2.1符号对象和符号表达式MATLAB依靠基本符号对象(包括数字、参数、变量)、运算符及一些预定义函数来构造和衍生符号表达式和符号方程。

2.1.1基本符号对象和运算算符1.生成符号对象的基本规则●任何基本符号对象(数字、参数、变量、表达式、函数)都必须借助专门的符号命令sym、syms、symfun定义。

●任何包含符号对象的表达式或方程,将继承符号对象的属性。

2.精准符号数字和符号常数符号(类)数字的定义:sym(Num) 采用精准数值类数创建精准的符号数字(推荐格式!)sc=sym(Num) 采用精准数值类数创建精准的符号常数sc(推荐格式!)说明:若输入量Num是精准的浮点数(如0.321、10/3等),能生成精准的符号数字;若输入量Num是诸如sin(0.3)的数值表达式,那么就只能生成由数字表达式获得的16位精度的近似符号数字。

sym('Num') 采用有理分数字符串创建精准的符号数字sc=sym('Num') 采用有理分数字符串创建精准的符号常数sc说明: Num必须处于(英文状态下的)单引号内,构成字符串(关于字符串参见附录A);只有当字符串数字'Num'采用诸如321/1000、10/3等整数构成的有理分数形式表达时,sym('Num') 才能生成精准的符号数字;若字符串数字用诸如0.321、3.21e-1等“普通小数或科学记述数”表达,那么只能产生“近似符号数字”。

在默认情况下,该近似符号数字为32位精度。

【例2.1-1】(1)创建完全精准的符号数字或数字表达式clear allR1=sin(sym(0.3)) % 输入量为普通小数R2=sin(sym(3e-1)) % 输入量为科学记述数R3=sin(sym(3/10)) % 输入量为有理分数R4=sin(sym('3/10')) % 输入量为“整数构成的有理分数”字符串数字disp(['R1属于什么类别?答:',class(R1)])disp(['R1与R4是否相等?(是为1,否为0)答:',int2str(logical(R1==R4))]) R1 =sin(3/10)R2 =sin(3/10)R3 =sin(3/10)R4 =sin(3/10)R1属于什么类别?答:symR1与R4是否相等?(是为1,否为0)答:1(2)产生具有32位精度的“近似”符号数字(杜绝使用!)S1=sin(sym('0.3')) % sym的输入量是字符串小数,生成32位精度下的% 近似符号数,进而在sin作用下给出近似符号数。

S2=sin(sym('3e-1')) % syms的输入量是字符串科学记述数。

eRS=vpa(abs(R1-S1),64);disp(['S1属于什么类别?答:',class(S1)])disp(['S1与R1是否相同?答: ',int2str(logical(R1==S1))])disp('S1与R1的误差为')disp(double(eRS))S1 =0.29552020666133957510532074568503S2 =0.29552020666133957510532074568503S1属于什么类别?答:symS1与R1是否相同?答: 0S1与R1的误差为6.3494e-41(3)产生具有16位精度的“近似”符号数字(杜绝使用!)F1=sym(sin(3/10)) % sym的输入量为双精度表达式sin(3/10),% 就只能创建出仅16位精度的近似符号数。

F2=sym(sin(0.3)) % 同上eFS=vpa(abs(F1-S1),32);disp(['F1属于什么类别?答:',class(F1)])disp(['S1与F1是否相同?答: ',int2str(logical(F1==S1))])disp('F1与S1的误差为')disp(double(eFS))F1 =5323618770401843/18014398509481984F2 =5323618770401843/18014398509481984F1属于什么类别?答:symS1与F1是否相同?答: 0F1与S1的误差为2.8922e-173.基本符号变量经典教科书里,表达式e-ax sinbx中的a,b称为参数,x为变量。

在MATLAB的符号计算中,a、b、x统称为基本符号变量,其中,x总被默认为“待解(自由)符号变量”,其他被作为“符号参数”处理。

定义基本符号变量的命令格式:para=sym(' para') 定义单个复数域符号变量parapara=sym(' para', 'Flag') 定义单个Flag指定域符号变量parasyms para 定义单个复数域符号变量para的另一种方式syms para Flag 定义单个Flag指定域符号变量para的另一种方式syms para1 para2 paraN 定义多个复数域符号变量para1 para2 paraN syms para1 para2 paraN Flag 定义多个Flag指定域符号变量para1 para2 paraN●符号参数名不要用处于“字母表中小写字母x及其两侧的英文字母”开头。

●Flag表示数域的限定性假设,可具体取以下词条:positive 正实数域;real 实数域。

●默认值是复数域符号变量●sym命令只能对单变量作用,syms不能用于对数值、常数相关的定义。

4.符号计算中的各种算符●与数值计算中的算符在形状、名称和使用方法上相同。

2.1.2符号计算中的函数命令2.1.3符号表达式和符号函数1. 符号表达式和符号函数(1)为表达某种数学算式、实现某种计算目的,采用基本符号对象(数字、常数、变量)、运算符、MATLAB函数命令等基本要素编写而成的M码。

(2)为表达变量间抽象(或具体)约束关系而编写的M码。

在符号函数中,构成函数关系的变量名必须明确指定。

即,在定义符号函数时,不仅要指定函数名,而且要指定变量名。

比如syms f(x,y)就定义了一个以x、y为变量的抽象符号函数f。

2 自由符号变量解题通常是围绕自由符号变量进行。

确定自由符号变量的规则:●在专门指定变量名的符号运算中,解题一定围绕指定变量名进行。

●x是首选自由符号变量,其后的次序规则是:与x的ASCII码值之差的绝对值小的字母优先;差绝对值相同时,ASCII码值大的字母优先。

●自动识别符号变量时,字母的优先次序为x,y,w,z,v等,大写后排。

自动识别表达式中自由、独立的符号变量的命令:symvar(expression) 列出表达式中的所有基本符号变量symvar(expression, n) 列出表达式中n个认定的自由变量【例2.1-2】1)各种符号对象的创建clearsyms a b c x y u v % 定义基本符号对象 syms F(X,Y,Z) % 定义“抽象”符号函数 k=sym(3) % 定义符号常数 G=sym('p*sqrt(q)+r*sin(t)') % 创建符号表达式EXPR=a*G*u+(b*x^2+k)*v % 创建“衍生”符号表达式 f(x,y)=a*x^2+b*y^2-c % 创建“具体”符号函数 disp(F) % 显示抽象符号函数 k = 3 G =p*q^(1/2) + r*sin(t) EXPR =v*(b*x^2 + 3) + a*u*(p*q^(1/2) + r*sin(t)) f(x, y) =a*x^2 + b*y^2 - c F(X, Y, Z)symbolic function inputs: X, Y, Z2)symvar 对EXPR 符号表达式的作用symvar(EXPR) % % ans =[ a, b, p, q, r, t, u, v, x]symvar(EXPR,20) % ans =[ x, v, u, t, r, q, p, b, a]symvar(EXPR,1) % ans = x3)symvar 对符号函数的作用disp(symvar(f)) % [ a, b, c, x, y]disp(symvar(f,2)) % [ x, y]【例2.1-3】用符号法求方程2uw zw v +=的解。

1)产生符号表达式和符号函数clearsyms u v w z %Eq=u*w^2+z*w-v % 表达式 g(z)=u*w^2+z*w ==v % 函数Eq =u*w^2 + z*w - v g(z) =u*w^2 + z*w == v2)symvar 认定的自由变量symvar(Eq,1) %<5>ans =wsymvar(g(z),1) % <6>ans =w3)solve对默认自由变量解方程R1=solve(Eq) % 关于w解方程u*w^2+z*w-v=0 <7>R2=solve(g) % 关于w解g(z)所表达的方程 <8>R1 =-(z + (z^2 + 4*u*v)^(1/2))/(2*u)-(z - (z^2 + 4*u*v)^(1/2))/(2*u)R2 =-(z + (z^2 + 4*u*v)^(1/2))/(2*u)-(z - (z^2 + 4*u*v)^(1/2))/(2*u)4)对变量z求解S1=solve(Eq,z) % <9> S2=solve(g(z),z) % <10> S1 =(- u*w^2 + v)/wS2 =(- u*w^2 + v)/w5)检验求解结果的正确性disp(simplify(subs(Eq,z,S1))) % S1代替z,观察Eq是否为0disp(simplify(g(S2))) % S2代替z,观察g(S2)方程式是否成立TRUE〖说明〗不要把g(z)理解为以z为自由变量的符号函数。

相关文档
最新文档