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——符号计算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符号运算(二)

因式分解、展开、合并、简化及通分等
计算极限 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的符号计算

符号数学工具箱中的工具是建立在功能强大 符号数学工具箱中的工具是建立在功能强大 的称作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实用教程》

第二章 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

• 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的符号计算
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整理
作业一: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符号计算实验报告
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(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 的官方文档或在线资源以获取详细信息。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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为自由变量的符号函数。