MATLAB 符号计算

1.sym()

2.syms()

上面两个函数的功能都是创建符号变量,符号常量,符号函数以及符号表达式,只不过调用的方式不同。

class()函数可以测量所用对象是什么类型

 

1.用命令函数sym()syms()建立符号函数f1与方程e1

>> syms x y z;
>> f1=x^2+y^2+z^2+1; 
>> e1=sym('a*x^2+b*x+c');
>> f1
 
f1 =
 
x^2 + y^2 + z^2 + 1
 
>> e1
 
e1 =

a*x^2 + b*x + c

1.subexpr()

[Y,SIGMA]=subexpr(S,SIGMA)

用指定变量SIGMA的值(必须为符号对象)来替代符号表达式中重复出现的字符串,替换后的结果由Y返回,被替换的字符串由SIGMA返回

[Y,SIGMA]=subexpr(S,SIGMA)

这种形式跟上一种形式的不同之处是第二个个输入参数是字符或字符串,用来替换表达式中重复出现的字符串。

 

2

>> syms a x;
>> s=solve('x^3+a*x+2=0')
 
s =
 
                                                                                           ((a^3/27 + 1)^(1/2) - 1)^(1/3) - a/(3*((a^3/27 + 1)^(1/2) - 1)^(1/3))
 (3^(1/2)*(a/(3*((a^3/27 + 1)^(1/2) - 1)^(1/3)) + ((a^3/27 + 1)^(1/2) - 1)^(1/3))*i)/2 + a/(6*((a^3/27 + 1)^(1/2) - 1)^(1/3)) - ((a^3/27 + 1)^(1/2) - 1)^(1/3)/2
 a/(6*((a^3/27 + 1)^(1/2) - 1)^(1/3)) - (3^(1/2)*(a/(3*((a^3/27 + 1)^(1/2) - 1)^(1/3)) + ((a^3/27 + 1)^(1/2) - 1)^(1/3))*i)/2 - ((a^3/27 + 1)^(1/2) - 1)^(1/3)/2
 
>> r=subexpr(s)
 
sigma = 
 
(a^3/27 + 1)^(1/2) - 1
 
 
 
r =
 
                                                     sigma^(1/3) - a/(3*sigma^(1/3))
 (3^(1/2)*(a/(3*sigma^(1/3)) + sigma^(1/3))*i)/2 + a/(6*sigma^(1/3)) - sigma^(1/3)/2
 a/(6*sigma^(1/3)) - (3^(1/2)*(a/(3*sigma^(1/3)) + sigma^(1/3))*i)/2 - sigma^(1/3)/2
>>  [Y,SIGMA]=subexpr(s,'sysysy')
 
Y =
 
                                                       sysysy^(1/3) - a/(3*sysysy^(1/3))
 (3^(1/2)*(a/(3*sysysy^(1/3)) + sysysy^(1/3))*i)/2 + a/(6*sysysy^(1/3)) - sysysy^(1/3)/2
 a/(6*sysysy^(1/3)) - (3^(1/2)*(a/(3*sysysy^(1/3)) + sysysy^(1/3))*i)/2 - sysysy^(1/3)/2
 
 
SIGMA =
 
(a^3/27 + 1)^(1/2) - 1

1.collect()

实现将表达式中的同类项合并。

具体调用格式有两种:

R=collect(S)  将表达式S中的相同次幂合并,S可以是表达式也可以是符号矩阵

R=collect(S,’y’)  将表达式Sy的相同次幂合并,如果没有指定具体是哪个符号,则默认合并x的相同次幂。如果表达式中没有变量x,又没有指定变量,则是随机的。

3

>> syms x y;
>> h=(x-1).^3+(y-1).^4+(x+y).^2;
>> R=collect(h)
 
R =
 
x^3 - 2*x^2 + (2*y + 3)*x + (y - 1)^4 + y^2 - 1
 
>> R=collect(h,'y')
 
R =
 
y^4 - 4*y^3 + 7*y^2 + (2*x - 4)*y + (x - 1)^3 + x^2 + 1

4

>> syms a b;
>> h=(a-1).^3+(b-1).^4+(a+b).^2;
>> R=collect(h)
 
R =
 
b^4 - 4*b^3 + 7*b^2 + (2*a - 4)*b + (a - 1)^3 + a^2 + 1

1.expand()

调用格式:
R=expand(S)  将表达式S中的各项展开,该函数用于多项式、指数函数、三角函数、对数函数

5

>> syms x y;
>> h=cos(x+y);
>> expand(h)
 
ans =
 
cos(x)*cos(y) - sin(x)*sin(y)
 
>> f=exp(x+y+2);
>> expand(f)
 
ans =
 
exp(2)*exp(x)*exp(y)

1.simplify()

功能:根据一定的规则,对表达式进行简化

2.simple()

功能:寻找表达式的最简形式,返回表达式变得剪短的形式,目标是表达式用最少的字符表示,且simple函数综合使用了一下几个不同的函数进行不同方式的化简。

simplify()  简化

collect()  合并同类项

factor() 因式分解

convert() 一种形式转化成另一种形式

radsimple() 对包含根式的表达式化简

combine()  对表达式中求和、乘积、幂的形式合并

 

 

例6:可以自己运行一下下面的代码。

>> syms x y;
>> simple(cos(x+y)+sin(2*x)+(x+y).^5+tan(x+y))




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值