matlab的符号计算

Posted igoodful

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了matlab的符号计算相关的知识,希望对你有一定的参考价值。

#############################

 

 

01 展开:展开因式:expand(f)

--- 幂函数:则根据次数从高到低

--- 三角函数:展开角部分

--- 指数:展开指数部分

 

 

>> z=(x+y+3)*(2*x-4*y+7)+sin(x+y)+exp(x+y)+log(x*y)
 
z =
 
exp(x + y) + log(x*y) + sin(x + y) + (2*x - 4*y + 7)*(x + y + 3)
 
>> expand(z)
 
ans =
 
13*x - 5*y + log(x*y) + exp(x)*exp(y) + cos(x)*sin(y) + cos(y)*sin(x) - 2*x*y + 2*x^2 - 4*y^2 + 21
 
>> 
>> z=(x+y+3)*(2*x-4*y+7)
 
z =
 
(2*x - 4*y + 7)*(x + y + 3)
 
>> expand(z)
 
ans =
 
2*x^2 - 2*x*y + 13*x - 4*y^2 - 5*y + 21
 
>> 

 

 

02 合并:因式分解:factor(f)

>> z1=3*x^3+2*x^2+x+2
 
z1 =
 
3*x^3 + 2*x^2 + x + 2
 
>> factor(z1)
 
ans =
 
[ x + 1, 3*x^2 - x + 2]
 
>> 
>> z1=x^2+2*x*y+y^2
 
z1 =
 
x^2 + 2*x*y + y^2
 
>> factor(z1)
 
ans =
 
[ x + y, x + y]
 
>> 

 

03 合并同类项:collect(f)

>> z2=x^2+x*y*7-x^2+y+x-8
 
z2 =
 
x + y + 7*x*y - 8
 
>> collect(z2)
 
ans =
 
(7*y + 1)*x + y - 8
 
>> collect(z2,y)
 
ans =
 
(7*x + 1)*y + x - 8
 
>> collect(z2,x)
 
ans =
 
(7*y + 1)*x + y - 8
 
>> 

 

04 化简:simplify(f)

>> z3=x^2+y^2-2*x*y+sin(x)^2+cos(x)^2
 
z3 =
 
cos(x)^2 + sin(x)^2 - 2*x*y + x^2 + y^2
 
>> simplify(z3)
 
ans =
 
x^2 - 2*x*y + y^2 + 1
 
>> 

 

 

05 解方程:solve(f,x)

>> z=x^3+x-6
 
z =
 
x^3 + x - 6
 
>> solve(z,x)
 
ans =
 
 root(z^3 + z - 6, z, 1)
 root(z^3 + z - 6, z, 2)
 root(z^3 + z - 6, z, 3)
 
>> z=x^2+x-2
 
z =
 
x^2 + x - 2
 
>> solve(z,x)
 
ans =
 
 -2
  1
 
>> 

 

06 级数求和:symsum(f,n,a,b)

 

---  级数求和:symsum(f,n,a,b):f为一个级数的通项,是一个符号表达式,求自变量n为从a到b的通项和;

其中inf可表示无穷大

 

>> f=n
 
f =
 
n
 
>> symsum(f,n,1,n)
 
ans =
 
(n*(n + 1))/2
 
>> symsum(f,n,1,10)
 
ans =
 
55
 
>> f=1/n^2
 
f =
 
1/n^2
 
>> symsum(f,n,1,inf)
 
ans =
 
pi^2/6
 
>> 

 

 

07 求极限:limit(f,x,a)

--- 某点极限:  limit(f,x,a)
--- 某点左极限:limit(f,x,a,\'left\')
--- 某点右极限:limit(f,x,a,\'right\')

--- 无穷极限:  limit(f,x,inf)
--- 正无穷极限:limit(f,x,+inf)
--- 负无穷极限:limit(f,x,-inf)

 

>> f=sin(x)/x
 
f =
 
sin(x)/x
 
>> limit(f,x,0)
 
ans =
 
1
 
>> limit(f,x,0,\'right\')
 
ans =
 
1
 
>> limit(f,x,0,\'left\')
 
ans =
 
1
 
>> limit(f,x,inf)
 
ans =
 
0
 
>> limit(f,x,+inf)
 
ans =
 
0
 
>> limit(f,x,-inf)
 
ans =
 
0
 
>> 

 

 

08:求导数:diff(f,x,n)

--- diff(f,x,n) 表示函数f对自变量x求n阶导数

 

>> f=x^2+exp(x)+log(x)+sin(x)+cos(x)
 
f =
 
cos(x) + exp(x) + log(x) + sin(x) + x^2
 
>> diff(f,x,2)
 
ans =
 
exp(x) - cos(x) - sin(x) - 1/x^2 + 2
 
>> 

 

 

 

09 泰勒展开:taylor(f,x,a,\'Order\',n)

--- taylor(f,x,a,\'Order\',n) 表示函数f在自变量x=a处的泰勒展开式,n为展开的阶数

 

>> f=exp(x)
 
f =
 
exp(x)
 
>> taylor(f,x,0,\'Order\',3)
 
ans =
 
x^2/2 + x + 1
 
>> taylor(f,x,1,\'Order\',3)
 
ans =
 
exp(1) + exp(1)*(x - 1) + (exp(1)*(x - 1)^2)/2
 
>> 

 

 

 

10 求积分:int(f,x,a,b)

--- int(f,x)     表示函数f对自变量x的不定积分
--- int(f,x,a,b) 表示函数f对自变量x从a到b的定积分

 

>> f=sin(x)
 
f =
 
sin(x)
 
>> int(f,x,0,pi)
 
ans =
 
2
 
>> int(f,x)
 
ans =
 
-cos(x)
 
>> 

 

 

 

 

 

 

 

 

##########################

以上是关于matlab的符号计算的主要内容,如果未能解决你的问题,请参考以下文章

c_cpp 这个简单的代码片段显示了如何使用有符号整数在C中完成插值。 for()循环确定要插入的范围

以下代码片段的算法复杂度

未解决的对“片段”部分中的符号“”的引用

2021-09-11:给你一个32位的有符号整数x,返回将x中的数字部分反转后的结果。反转后整数超过 32 位的有符号整数的范围就返回0,假设环境不允许存储 64 位整数(有符号或无符号)。(代码片段

vscode用啥符号把某一段代码包起来,类似C#的#region?

为啥这个代码片段说包含错误?