工科科研中总会遇到一些微积分的计算,然而大一所学的微积分或者高数早已经忘得所剩无几,也许你只记得一些基本的微分和积分公式,复杂函数的微积分计算的那些奇技淫巧都不记得了;亦或是函数太复杂手工计算容易出错。这些都可以通过Matlab的符号计算来解决。本文只是记录自己学习《Matlab符号运算及其运用》这本书的过程,同时也帮助更多的人了解符号计算。
一、 下面先从几个常见的例子开始介绍
1.合并表达式关于的同类项。
Matlab代码:
>> syms x y;
>> collect(x^2*y+x*y-x^2-2*x)
ans =
(y - 1)*x^2 + (y - 2)*x
2.求导。
Matlab代码:
>> sym x;
>> diff(cos(x)^2)
ans =
-2*cos(x)*sin(x)
3.计算不定积分。
Matlab代码:
>> sym x;
>> int(x^2)
ans =
x^3/3
只需在计算结果后面再加一个常数C即可。
4.计算定积分。
Matlab代码:
>> syms x a b;
>> int(x^2,a,b)
ans =
b^3/3 - a^3/3
5.计算矩阵行列式的值。
Matlab代码:
>> syms a b c d;
>> p=[a b;c d];
>> det(p)
ans =
a*d - b*c
6.计算一阶微分方程。
Matlab代码:
>> syms a y;
>> dsolve('Dy=a*y')
ans =
C1*exp(a*t)
从上面的几个例子可以看出高数的大部分计算都可以用Matlab的符号计算完成,快速且准确。
二、MATLAB的基本函数
函数名 | 功能 | 函数名 | 功能 |
sin | 正弦 | asech | 反双曲正割 |
cos | 余弦 | acsch | 反双曲余割 |
tan | 正切 | exp | 指数 |
cot | 余切 | log | 自然对数 |
sec | 正割 | log10 | 常用对数 |
csc | 余割 | log2 | 以2为底的对数 |
asin | 反正弦 | pow2 | 以2为底的指数 |
acos | 反余弦 | sqrt | 平方根 |
atan | 反正切 | abs | 绝对值(复数的模) |
atan2 | 四象限反正切 | angle | 复数的相角 |
acot | 反余切 | conj | 复数的共轭 |
asec | 反正割 | imag | 复数的虚根 |
acsc | 反余割 | real | 复数的实部 |
sinh | 双曲正弦 | isreal | 是否为复数 |
cosh | 双曲余弦 | fix | 向0取整 |
tanh | 双曲正切 | floor | 向负无穷方向取整 |
coth | 双曲余切 | ceil | 向正无穷方向取整 |
asinh | 反双曲正弦 | round | 四舍五入 |
acosh | 反双曲余弦 | mod | 除法求余(与除数同号) |
atanh | 反双曲正切 | rem | 除法求余(与被除数同号) |
acoth | 反双曲余切 | sign | 符号函数 |
三、Matlab符号对象基本运算
1. 符号加
使用函数 symadd ( ) 实现符号对象的加法运算。其函数调用格式为:
symadd ( A,B )
用来实现符号表达式或符号矩阵 A、 B 相加: A+B。
2. 符号减
使用函数 symsub ( ) 实现符号对象的减法运算。其函数调用格式为:
symsub ( A,B )
用来实现符号表达式或符号矩阵 A、 B 相减: A-B。
3. 符号乘
使用函数 symmul ( ) 实现符号对象的乘法运算。其函数调用格式为:
symmul ( A,B )
用来实现符号表达式或符号矩阵 A、 B 相乘: A×B。
4. 符号除
矩阵除法运算有左除与右除之分,即运算符“\”和“/”指代的运算。其运算规则是:
a\b=inv(a)*b, a/b=a*inv(b)。 inv( )为矩阵求逆的函数命令,将在第 6 章中介绍。使用函数 symdiv( ) 只能实现符号对象的右除(相当于“/”运算符)运算。其函数调用格式为:
symdiv ( A,B )
用来实现符号表达式或符号矩阵 A、 B 的右除运算: A/B。
5. 符号表达式的幂运算
使用函数 sympow ( ) 实现符号对象的幂指数运算。其函数调用格式为:
sympow ( S, p )
用来计算 (即 S^p)。如果 S 是一个纯量的符号表达式, p 可以是一个纯量的符号表达式,也可以是一个纯量的数值表达式;如果 S 是一个符号矩阵,则 S 必须是方阵,且 p 必须是整数。