概述
一、MATLAB符号计算概述
MATLAB符号计算是通过集成在MATLAB中的符号数学工具箱(Symbolic Math Toolbox)来实现的
这个工具箱是建立在Maple基础上,当进行MATLAB符号运算时,他就会请求Maple软件去计算并将结果返回给MATLAB
其主要功能包括
符号表达式的计算与复合、化简
符号矩阵的运算
符号微积分
符号函数画图
符号代数方程求解
符号微分方程求解
支持符号运算并返回指定的精度结果
二、符号对象和符号表达式
符号数学工具箱中定义了一个新的数据类型,叫做sym类
sym类的实例就是符号对象,它是一种数据结构,可以用来存储代表符号的字符串的复杂数据结构
符号表达式是符号变量或常量的组合,在某些情况下,符号变量和符号常量也可以被认为是符号表达式,其创建方式仍是使用函数sym
1.符号对象的创建命令
作为符号对象的符号常量、符号变量、符号函数及符号表达式,可以使用函数命令sym()、syms()规定和创建,利用class()函数可以测试建立的操作对象为何种操作对象类型
1.函数命令sym()
variable = sym(A, flag)
S = sym(‘A’, flag)
命令公式是由A来创建一个符号对象varable,其类型为sym。若A(不带单引号)是一个数字、数值矩阵或数学表达式,则输出结果是将数值结果对象转换成的符号对象。若A(带单引号)是一个字符串,输出结果则是将字符串转换成的符号对象
flag为转换符号对象的格式
A不带引号时
d:最接近的十进制浮点精确表示
e:带(数值计算时)估计误差的有理表示
f:十六进制浮点表示
r:为默认值时,最接近有理表示的形式
A带引号时
positive:限定A为正的符号变量类型
real:限定A为实型符号变量类型
2.函数命令syms()
syms a b c flag
该命令可以建立3个或多个符号变量。flag同上
2.符号对象的创建
1.创建符号常量
Python
>> r = sym(2/3,'d')
r =
0.66666666666666662965923251249478
1
2
3
4
5
>>r=sym(2/3,'d')
r=
0.66666666666666662965923251249478
2.创建符号变量
Python
>> y = sym('x','positive')
y =
x
>> class(y)
ans =
sym
1
2
3
4
5
6
7
8
9
10
11
>>y=sym('x','positive')
y=
x
>>class(y)
ans=
sym
3.创建符号表达式
符号表示式分为两类:不带等号的称为符号函数,带等号的称为符号方程
Python
>> f = sym('a*x^4 + b*x^3 + c*x^2 + d*x + e')
警告: Support of strings that are not valid variable names or define a number will be removed in a future release. To create symbolic expressions, first create
symbolic variables and then use operations on them.
> In sym>convertExpression (line 1536)
In sym>convertChar (line 1441)
In sym>tomupad (line 1198)
In sym (line 177)
f =
a*x^4 + b*x^3 + c*x^2 + d*x + e
1
2
3
4
5
6
7
8
9
10
11
>>f=sym('a*x^4 + b*x^3 + c*x^2 + d*x + e')
警告:Supportofstringsthatarenotvalidvariablenamesordefineanumberwillberemovedinafuturerelease.Tocreatesymbolicexpressions,firstcreate
symbolicvariablesandthenuseoperationsonthem.
>Insym>convertExpression(line1536)
Insym>convertChar(line1441)
Insym>tomupad(line1198)
Insym(line177)
f=
a*x^4+b*x^3+c*x^2+d*x+e
警告内容为:在将来的版本中,将删除无效变量名或定义数字的字符串的支持。要创建符号表达式,首先创建符号变量,然后在它们上使用操作。
Python
>> e = sym('x^2 = 1')
e =
x^2 == 1
1
2
3
4
5
>>e=sym('x^2 = 1')
e=
x^2==1
Python
>> syms a b c d e x
>> f = a*x^4 + b*x^3 + c*x^2 + d*x + e
f =
a*x^4 + b*x^3 + c*x^2 + d*x + e
>> class(f)
ans =
sym
1
2
3
4
5
6
7
8
9
10
11
12
>>symsabcdex
>>f=a*x^4+b*x^3+c*x^2+d*x+e
f=
a*x^4+b*x^3+c*x^2+d*x+e
>>class(f)
ans=
sym
4.创建符号矩阵
Python
>> syms x y;
>> m = [1, 2+x 1; 2+x, 1, 3+y; 3+y, 1,0]
m =
[ 1, x + 2, 1]
[ x + 2, 1, y + 3]
[ y + 3, 1, 0]
1
2
3
4
5
6
7
8
>>symsxy;
>>m=[1,2+x1;2+x,1,3+y;3+y,1,0]
m=
[1,x+2,1]
[x+2,1,y+3]
[y+3,1,0]
注意,此处MATLAB不会自动补全矩阵,例子中的0元素需要手动输入,不输入则会报错
3.符号计算中的运算符与函数
与数值计算中作用相同
1.算术运算符号
+、 -、 *、 /、 、 ^
.* 、 ./ 、 . 、 .^
‘ .’
2.关系运算符
==
~=
3.指数、对数函数
sqrt、 exp、 expm
log2、 log10
4.三角函数、双曲函数及其反函数
除atan2函数只能用于数值计算之外,其他的三角函数、双曲函数及其反函数都可用,且用法、作用一致
5.复数函数
共轭(conj)、实部(real)、虚部(imag)、模(abs),与数值计算一致
6.矩阵代数函数
符号计算中,常用的矩阵代数函数有:diag、 triu、 tril、 inv、 det、 rank、 rref、 null、 colspace、 poly、 expm、 eig、 svd
除svd函数之外,其余函数与数值计算一致
4.符号表达式的变量确定
findsym函数可以帮助用户查找一个符号表达式中的符号变量
findsym(S)
findsym(S, N)
返回符号表达式中所有符号变量;N为需要返回符号变量的个数,其返回顺序符合定义顺序
Python
>> syms a b c d e x
>> f = a*x^4 + b*x^3 + c*x^2 + d*x + e
f =
a*x^4 + b*x^3 + c*x^2 + d*x + e
>> findsym(f,2)
警告: FINDSYM will be removed in a future release. Use SYMVAR instead.
> In sym/findsym (line 27)
ans =
x,e
1
2
3
4
5
6
7
8
9
10
11
12
13
14
>>symsabcdex
>>f=a*x^4+b*x^3+c*x^2+d*x+e
f=
a*x^4+b*x^3+c*x^2+d*x+e
>>findsym(f,2)
警告:FINDSYMwillberemovedinafuturerelease.UseSYMVARinstead.
>Insym/findsym(line27)
ans=
x,e
警告内容:FIFSEM将在将来的版本中被删除。用SimVar代替。
5.符号精度计算
符号计算的显著特点是:由于计算过程中不会出现舍入误差,因此可以得到任意精度的数值解
若需要得到精确结果,需要牺牲计算时间与储存空间,用符号计算来获得足够高的计算精度
digits(d):调用该函数后的近似解的精度变成d位有效数字。d默认值为32位
vpa(A,d):求符号解A的近似值,该近似解的有效位数由d决定
double(A):把符号矩阵或任意精度表示的矩阵A转换为双精度矩阵
Python
>> sym x;
>> f = sym(' 2*x^2 + 3*x -4');
>> s = solve(f)
s =
41^(1/2)/4 - 3/4
>> digits(4);
>> vpa(s)
ans =
0.8508
>> vpa(s,6)
ans =
0.850781
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
>>symx;
>>f=sym(' 2*x^2 + 3*x -4');
>>s=solve(f)
s=
41^(1/2)/4-3/4
>>digits(4);
>>vpa(s)
ans=
0.8508
>>vpa(s,6)
ans=
0.850781
赞赏作者
喜欢 (1)or分享 (0)
最后
以上就是碧蓝百褶裙为你收集整理的MATLAB确认对象符号怎么打,MATLAB自学笔记(十九):符号对象和符号表达式的全部内容,希望文章能够帮你解决MATLAB确认对象符号怎么打,MATLAB自学笔记(十九):符号对象和符号表达式所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复