时间:2021-07-01 10:21:17 帮助过:46人阅读
这一节主要分享一下利用MATLAB进行相关计算。MATLAB内置了很多计算方法及其函数实现,即使不懂数方法,也可以进行一些复杂的计算,例如有求解矩阵的逆,求解积分、微分,进行傅里叶变化及其逆变换,进行最小二乘法的直线拟合等等。 例1、 求解一个矩阵的逆矩
这一节主要分享一下利用MATLAB进行相关计算。MATLAB内置了很多计算方法及其函数实现,即使不懂数值方法,也可以进行一些复杂的计算,例如有求解矩阵的逆,求解积分、微分,进行傅里叶变化及其逆变换,进行最小二乘法的直线拟合等等。
例1、求解一个矩阵的逆矩阵,并进行矩阵的乘计算。
首先是输入(或者说是定义)一个矩阵a,那么则应输入的是:
>> a=[1 2;3 4]
若无分号,直接回车,则会输出a矩阵。
求a矩阵的逆矩阵,求解利用的函数如下:
>> b=inv(a)
计算矩阵相乘,在这里计算a矩阵乘以b矩阵的转置,而矩阵的转置则只需加一撇即可:
>> c=a*b'
最后输出的结果有:
a =
1 2
3 4
b =
-2.0000 1.0000
1.5000 -0.5000
c =
0 0.5000
-2.0000 2.5000
b' =
-2.0000 1.5000
1.0000 -0.5000
例2、符号运算的定义,主要有syms,sym的应用,如下:
这两种皆为定义符号,但又有些许区别。syms是在运用符号之前,将所用的符号全部定义,下面则可以直接运用;而sym则是在运算中定义,用到每一个符号需要定义一次,相对而言没有syms方便,下面有具体例子。
如:syms x(t) a
就等于
a = sym('a');
t = sym('t');
x = symfun(sym('x'), {t});
syms x beta real
就等于
x = sym('x','real');
beta = sym('beta','real');
上面的syms先定义了几个是函数符号,下面就可以直接运用,公式中不用再出现sums或者sym,而sym则是在下面的公式中出现的。
例3、求积分及微分,运用MATLAB函数int以及diff,由于牵涉到符号运算,所以在运用之前,需要利用syms做一下符号的定义,如下:
syms x
int(x) 按回车后,得到
ans =
x^2/2
也可以直接输入int(sym(x)) 按回车后得到
ans =
x^2/2
当然,也可以进行比较复杂积分计算,因为可能会牵涉到较多的符号,所以建议大家利用syms先将用到的符号定义好,在利用int函数,进行积分计算。
微分计算函数diff,运用方式和int基本类似,例如
>> syms x y
>> y=diff(sin(x))
y =
cos(x)
真正灵活运用这些MATLAB函数,还是需要大家不断尝试和运用的。
例4、solve和dsolve函数的应用
这两个函数均可以用于解函数方程或者方程组,solve主要用于解一般的方程及方程组,而dsolve则一般用于求解微分方程组,具体例子如下:
如求解方程sin(x)*pi=8,求x
>> solve('sin(x)*pi=8')
ans =
asin(8/pi)
pi - asin(8/pi)
这里默认求解的是x,如果是>> solve('sin(x)*pi*y=8'),那么依旧默认求解的是x,那如果想输出y呢?则需要>> solve('sin(x)*pi*y=8','y'),那么会输出ans =8/(pi*sin(x));