matlab——(符号对象)

本文详细介绍了MATLAB中符号运算的基础知识,包括符号对象的创建、四则运算、关系运算、逻辑运算、因式分解与展开、提取分子分母、提取系数、化简表达式、多项式与系数向量转换及符号矩阵操作。通过具体实例,深入浅出地讲解了MATLAB符号运算的各个功能。

函数(sym和syms)

常量

 
>>  t=sym(4);
>> c=t+1
 
c =
 
5
 

变量

>> x=sym('b');
>> y=sym('a');
>> a=12;
>> b=13;
>> x+y
 
ans =
 
a + b
 
>> eval(x+y)

ans =

    25

syms命令可以一次性定义多个符号变量

>> syms a b c;
>> f=a+b+c;
>> a=b+1;
>> c=a+2;
>> b=2;
>> f
 
f =
 
a + b + c
 
>> eval(f)
 
ans =
 
2*b + 6
 
>> eval(ans)

ans =

    10

符号对象的运算

四则运算

符号表达式的四则运算与数值运算一样,用+、-、*、/、^

关系运算

 6种关系运算符:<、<=、>、>=、==、~=。
 对应的6个函数:lt()、le()、gt()、ge()、eq()、ne()。

输入变量是一个常量

>> clear
>> syms a b c ;
>> a=14;
>> b=17;
>> c=21;
>> lt(a,b)

ans =

     1

>> a>b

ans =

     0

输入变量是一个矩阵

>> syms d;
>> d=[1,2,3;4,5,6];
>> gt(d,5)

ans =

     0     0     0
     0     0     1

assume函数设置值域

在进行符号对象的运算前,可用assume函数对符号对象设置值域
assume(condition)
assume(expr,set)
第一种格式指定变量满足条件condition,第二种格式指定表达式
expr属于集合set

方法一
>> syms x;
>> assume(x>0);
>> assume(x<0);
>> abs(x)
 
ans =
 
-x

方法二

>> syms y;
>> assume(y,'positive'); %定义y是个正数还可以是'integer', 'rational', 'real', 'positive', 'clear', 'unreal'
>> abs(y)
 
ans =
 
y
 

逻辑运算

  3种逻辑运算符:&(与)、|(或)和~(非)。
 4个逻辑运算函数:and(a,b)、or(a,b)、not(a)和xor(a,b)。
>> syms x;
>> y=x>0 & x<10
y=
0<x & x<10


也可以是
>> y=and(x>0,x<10)
y=
0<x & x<10

因式分解与展开运算

① factor(s):对符号表达式s分解因式。
###
s如果是一个常量的话,会返回s的素数
>>  syms d;
>> d=3;
>> s=d*2;
>> factor(s)

ans =

     2     3
###  

② expand(s):对符号表达式s进行展开
③ collect(s):对符号表达式s合并同类项。
④ collect(s,v):对符号表达式s按变量v合并同类项。
>> syms a b;
>> s1=a^3-b^3;
>> s2=(a+b)^2;
>> s3=(a+b)^2-a^2;
>> s4=(a+b*x)^2+a*x;
>> factor(s1)
 
ans =
 
[ a - b, a^2 + a*b + b^2]

>> expand(s2)
 
ans =
 
a^2 + 2*a*b + b^2
 
>> collect(s3)
 
ans =
 
b^2 + 2*a*b
 
>> collect(s4,x)
 
ans =
 
b^2*x^2 + (a + 2*a*b)*x + a^2

其他运算


① 提取有理分式的分子分母:[n,d]=numden(s)。
② 提取符号表达式的系数:c=coeffs(s,x)。
s必须是合并过同类型,且按照x的次数降序排列
③ 符号表达式化简:simplify(s)>>syms x;
>> y=cos(x)^2-sin(x)^2
y =
cos(x)^2-sin(x)^2
>> simplify(y)
ans =
2*cos(x)^2-1
radsimp函数含根式表达式进行化简;
combine 函数表达式求和、乘积、幂运算等形式现项进行合并;
④ 符号多项式与多项式系数向量之间的转换:
 符号多项式转换为多项式系数向量:p=sym2poly(s)。
按照变量次数从很高向低输出变量的系数,

%正确示范
syms  x;
>> sym2poly(s)

ans =

     2     1    56

>> poly2sym(ans,x)
 
ans =
 
2*x^2 + x + 56

% 错误示范
>> syms a b c x;
>> s1=a*x^2+b*x+c;
>> p=sym2poly(s1)
错误使用 sym/sym2poly (line 31)
Input has more than one symbolic variable.
 
>>  p=sym2poly(a*x^2+b*x+c)
错误使用 sym/sym2poly (line 31)
Input has more than one symbolic variable.
 
>> p=sym2poly(a*x^2+b*x+c,x)
错误使用 sym/sym2poly
输入参数太多。
 

 多项式系数向量转换为符号多项式:s=poly2sym(p)
>> syms x a b c;
>> s1=(a*x^2+b*x+c);
>> s1=(a*x^2+b*x+c)/a*2;
>> s2=a*x^2+b*x+c;
>> [n,d]=numden(s1)
 
n =
 
2*a*x^2 + 2*b*x + 2*c
 
 
d =
 
a
 
>> coeffs(s2,x)
 
ans =
 
[ c, b, a]
 
%对其进行求解
>> g=ans(end:-1:1)
 
g =
 
[ a, b, c]
 
>> roots(g)
 
ans =
 
 -(b + (b^2 - 4*a*c)^(1/2))/(2*a)
 -(b - (b^2 - 4*a*c)^(1/2))/(2*a)

符号运算中变量的确定

	① 如果没有明确指定自变量,MATLAB将按以下原则确定主变量并对其进行相应运算:
 寻找除i、j之外,在字母顺序上最接近x的小写字母。
 若表达式中有两个符号变量与x的距离相等,则ASCII码大者优先。
② symvar()函数可以用于查找一个符号表达式中的符号变量,函数的调用格式为:
symvar(s,n)
函数返回符号表达式s中的n个符号变量。因此,可以用symvar(s,1)查找表达式s的主
变量。

3. 符号矩阵

符号矩阵也是一种符号表达式,所以符号表达式运算都可以在矩阵意
义下进行。

>> syms a b x y alp;
>> m=[a^3-b^3,sin(alp)^2+cos(alp)^2;(15*x*y-3*x^2)/(x-5*y),78]
m =
[ a^3 - b^3,cos(alp)^2 + sin(alp)^2]
[(- 3*x^2 + 15*y*x)/(x - 5*y), 78]
>> simplify(m)
ans =
[ a^3 - b^3, 1]
[ -3*x, 78]
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值