matlab中分数语句表⽰,MATLAB符合运算⼀记
符号对象(Symbolic Object)的使⽤
符号对象是什么?
符号对象是Matlab中⼀种特殊的数据类型, 其实质是“a data structure that stores a
string representation of the symbol”, 即它存储的是字符串表⽰的符号表达式,
只是这些字符串对应的是数学运算法则。如果⽤whos 命令查询, 符号变量对应的类型显⽰的是“sym“,
这也是区分符号变量与数值变量的⽅法。
操作这些对象的步骤, 先是Matlab利⽤Toolbox中的m⽂件,传递参数到Maple核⼼,
Maple核⼼经过运算后将结果再传递回Matlab, 再由M⽂件将结果解释成为Matlab的通⽤格式。 如果只需要执⾏基本的符合运算,那么只要掌握如何使⽤Matlab中有关symbolic运算的基本命令就可以了, ⽽要做复杂的⼯作, 建议学习下Maple。
定义符号对象变量
基本语句
使⽤sym 或者 syms 语句可以直接定义符号变量.
syms
syms主要作⽤是告诉Matlab你要将相关的变量定义为符号变量(因为在Matlab中, 变量不需事先定义即可使⽤,
但是默认的变量类型都是double型, 所以⾮Double变量在使⽤前要事先定义). 相关的语法:
syms a;%定义a为符号变量, 从此a的操作都服从符号变量操作规则.
syms a b c; %同时定义多个符号变量
matlab定义函数表达式
syms a b; f=a+b; %定义了a,b为符号类型后, f作为a+b的和, 也是符号类型, 在Matlab中显⽰的结果就是: “a+b”
sym
sym的作⽤⽐syms要⼴, 不但可以声明变量为符号类型, 还可以給符号变量赋特殊的值.
a=sym('a'); %其效果等同于: syms a;
a=sym('alpha'); %将a定义为为符号变量, 其值为“alpha“, 注意: 如果alpha本⾝也是符号变量,
那么在表达式中a和alpha实质是⼀样的, 但是如果alpha本⾝的值发⽣改变,
a的值却不会随之改变(有点晕), 试试执⾏下⾯这些语句看看: syms alpha, a=sym('alpha'), f=a+alpha, alpha=2, a,
a=sym(2); %a被定义为符号变量, 同时赋值为2. 注意这个和数值的2有点不同. 它的运算法则是符号运算法则.
a=sym('2*x+3y'); %a被赋值为⼀个符号表达式, Matlab⾃动识别字符串中的符号变量(注意, 只有常规的符号才能被⾃动识别).
a=sym(3*x+3*y); %此处要求x, y⼆者事先已经被声明为符号变量, 否则出错, 本句的效果和上⼀句相同.
定义特殊类型的符号变量
语法: syms a b c 类型; 或者 a=sym('a','类型');
两种语句效果相同, 注意的是他们的区别在于sym中的类型⼀定要加单引号! 这⾥的类型可以是“real“,
”unreal“,”positive“。 这样定义的好处是, 如果定义a为positive类型, 那么在之后的计算中,
a都只会被赋予正的值。 例如, 如果要解⼀个⽅程: a*a=1,那么给出的解就只有a=1, ⽽⾃动将
a<0的解都舍去。
转换数值为特定的格式
如上⾯提到的可以将数值赋值给⼀个符号变量, 由于符号变量存储数值的⽅式与数值变量不同, 所以在这个赋值的过程中,
我们还可以指定符号数值的显⽰样式, 语法是: a=sym(数值,'格式类型'); 此处格式类型有如下各种:
f, 符号浮点数的显⽰类型;r,有理数显⽰样式, ⼀般是分数显⽰,(此为默认的显⽰样式);e,科学计数法显⽰;d,所谓的精确显⽰,它⽤⼗进制数值将这个数值的精确值表⽰出来。
说这么多太不直观了, 只要运⾏⼀下下⾯的代码就弄清楚所有这些显⽰样式有什么不同了(注意:
计算机内部存储的数值是相同的,只是显⽰出的样⼦不同罢了):
b=0.1;
a=sym(b) %默认显⽰样式, 类型为'r'
a=sym(b,'f') %浮点样式显⽰
a=sym(b,'e') %科学计数法
a=sym(b,'d') %内部精确值的⼗进制显⽰
建⽴符号矩阵
建⽴符号矩阵有两种⽅法, ⼀种是直接由数值矩阵转换为符号矩阵: B=sym(A) %这⾥, A 为⼀个数值矩阵,
B是转换得到的符号矩阵。 另外⼀种⽅法是由已定义的符号变量组成矩阵, 如: B=[a b c; b a c; c b a] %a,
b, c已经⽤syms 或 sym定义成了符号变量。
定义符号函数
如果只是定义⼀个抽象函数(abstract function)⽽不必过问其实际形式,
如f(x),那么只要fx=sym('f(x)'), 即可, 这个特性在傅⽴叶变换及拉普拉斯变换, z变换中很有⽤.
如果需要⾃定义⼀个Matlab中还没有的特殊的符号函数, 例如sinc(), 需要写⼀个m函数⽂件, 命名为"sinc.m",
将其放⼊"@sym"⽂件夹内.
要定义⼀个普通的有表达式的函数, 直接将其表达式赋值给符号变量就⾏了. 例如定义f=sin(x*y)/x;
%其中x,y事先已被定义为符号变量.
Findsym--寻表达式中的符号变量
如果你不做编程, 这个东西作⽤不⼤. 它主要⽤于从⼀个字符串表达式或者⼀个符号表达式中出⾥⾯都有那些符号变量. 例如:
findsym('x*3+y*2'), 出来的符号变量就是x, y.
符号变量的替换
语法: subs(符号表达式, 替换前的符号变量, 替换后的符号变量);
例⼦: syms a b; %定义a,b为符号变量;
f=a*a+2*a; %将f定义为含a符号变量的符号表达式.
f=subs(f,a,b); %f表达式中a都会被替换为b,现在f是: b*b+2*b
f=subs(f,b,2); %f中的b会被2代替, 由于现在 f中不存在其他的符号变量, 所以给出的是8这个数值结果;
如果f中还有其他符号变量, 此时f中的b会被换成2然后作符号运算得出新的符号表达式。
令⼈发指的⼀个特性是这⾥2的位置还可以⽤向量代替。例如: subs(f,b,[2 3]), 将分别对2,3作运算,
得到⼀个1*2的向量结果。
如果需要转换多个变量可以⽤⼤括号将他们括起来, 需要注意的是替换变量与被替换变量数量要相对应,例如: subs(f,{a,b,c},{x,y,z});

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。