写点什么

MATLAB 实战 | 求矩阵指数、预定义变量 i 和 j 的含义以及梯形积分法

作者:TiAmo
  • 2023-12-05
    青海
  • 本文字数:1991 字

    阅读完需:约 7 分钟

01、求矩阵指数应用实战

【例 1】根据矩阵指数的幂级数展开式求矩阵指数。



设 X 是给定的矩阵,E 是矩阵指数函数值,F 是展开式的项,n 是项数,循环一直进行到 F 很小,以至于 F 值加在 E 上对 E 的值影响不大时为止。为了判断 F 是否很小,可利用矩阵范数的概念。矩阵 A 的范数的一种定义是



。在 MATLAB 中用 norm(A,1)函数来计算。所以当 norm(F,1)=0 时,认为 F 很小,应退出循环的执行。程序如下:

X = input('Enter X:')E= zeros(size(X));E = eye( size(X));n=1;while norm(E,1)> 0E=E+F;endEE=E*X/n;n=n+1;expm(X)  //调用 MATLAB 矩阵指数函数求矩阵指数
复制代码

程序运行结果如下:



运行结果表明,程序运行结果与 MATLAB 矩阵指数函数 expm(X)的结果一致。本程序涉及矩阵运算,初学者可能不太习惯。如果能分析一下程序的执行过程,对领会编程思想是有益的。另外,我们知道矩阵乘法的交换律不成立,但这里要请大家分析一下程序中的语句 F=F X/n 可否写成 F= X F /n,为什么?

02、预定义变量 i 和 j 的含义---变量与赋值


1. 变量命名


在 MATLAB 中,变量名是以字母开头,后跟字母、数字或下画线的字符序列,最多 63 个字符。例如,x、x_1、x2 均为合法的变量名。在 MATLAB 中,变量名区分字母的大小写,这样,score、Score 和 SCORE 表示 3 个不同的变量。另外,不能使用 MATLAB 的关键字作为变量名,例如 if、end、for。


注意/


定义变量时应避免创建与预定义变量、函数同名的变量,例如 i、j、power、int16、format、path 等。一般情况下,变量名称优先于函数名称。如果创建的变量使用了某个函数的名称,可能导致计算过程、计算结果出现意外情况。可以使用 exist 或 which 函数检查拟用名称是否已被使用。如果不存在与拟用名称同名的变量、函数或 M 文件,exist 函数将返回 0,否则返回一个非零值。例如:

 >> exist power ans = 5  >> exist Power ans = 0
复制代码


which 函数用来定位函数和文件,如果函数或文件存在,则显示其完整的路径。例如:

>> which power built-in (C:Program Files MATLAB\R2022a toolbox matlab ops) //char power > which powerl未找到power1'
复制代码

2. 赋值语句


MATLAB 赋值语句有两种格式:


变量=表达式


表达式


其中,表达式是用运算符将有关运算量连接起来的式子。执行第一种语句,MATLAB 将右边表达式的值赋给左边的变量; 执行第二种语句,将表达式的值赋给 MATLAB 的预定义变量 ans。看下列命令的执行结果。


一般情况下,运算结果在命令行窗口中显示出来。如果在命令的最后加分号,那么,MATLAB 仅仅执行赋值操作,不显示运算的结果。如果运算的结果是一个很大的矩阵或不需要运算结果,则可以在命令的最后加上分号。


【例 2】 当 x=π/2,y=1+3i 时,求表达式



的值。


在 MATLAB 命令行窗口分别输入命令:

 >> x= pi/2;  >> y=1+3i;  >> z= exp(2) * cos(x+ y)/(x+ sqrt(log(abs(y-1)))) //计算表达式的值  z = -23.9018 -15.2713i
复制代码

3. 预定义变量


在 MATLAB 中,提供了一些系统定义的特殊变量,这些变量称为预定义变量。表 1 列出了一些常用的预定义变量。预定义变量有特定的含义,在使用时一般尽量避免对这些变量重新赋值,但对它们赋值也不会出错,只是会覆盖原来的值,用 clear 命令清除后即可恢复原来的值。


■ 表 1 常用的预定义变量



MATLAB 提供了 isfinite 函数用于判定数据对象是否为有限值,isinf 函数用于判定数据对象是否为无限值,isnan 函数用于确定数据对象中是否含有 NaN 值。

注意/


MATLAB 预定义变量有特定的含义,在使用时应尽量避免对这些变量重新赋值。以 i 或 j 为例,在 MATLAB 中,i 和 j 代表虚数单位,如果给 i 或 j 重新赋值,就会覆盖掉原来虚数单位的定义,这时可能会导致一些很隐蔽的错误。例如,由于习惯的原因,程序中通常使用 i 或 j 作为循环变量,这时如果有复数运算就会导致错误,因此,不要用 i 或 j 作为循环变量名,除非确认在程序运行期间不会和复数打交道,或者使用像 7+5i 这样的复数记法,而不用 7+5*i,前者是一个复数常量,后者是一个表达式,即将 i 看成一个运算量,参与表达式的运算。也可以在使用 i 作为循环变量时,换用 j 表示复数。


03、 梯形积分法


在 MATLAB 中,提供了函数 trapz 对由表格形式定义的离散数据用梯形法求定积分,函数调用格式如下:


(1) T=trapz(Y)。这种格式用于求均匀间距的积分。通常,输入参数 Y 是向量,采用单位间距(即间距为 1),计算 Y 的近似积分。若 Y 是矩阵,则输出参数 T 是一个行向量,T 的每个元素分别存储 Y 的每一列的积分结果。例如:



若间距不为 1,例如求



,则可以采用以下命令:



(2) T=trapz(X,Y)。这种格式用于求非均匀间距的积分。通常,输入参数 X、Y 是两个等长的向量,X、Y 满足函数关系 Y = f(X), 按 X 指定的数据点间距,对 Y 求积分。若 X 是有 m 个元素的向量,Y 是 m×n 矩阵,则输出参数 T 是一个有 n 个元素的向量,T 的每个元素分别存储 Y 的每一列的积分结果。

【例 3】从地面发射一枚火箭,表 2 记录了在 0~80s 火箭的加速度。试求火箭在第 80s 时的速度。

■ 表 2 火箭发射加速度


设速度为 v(t),则


,这样就把问题转化为求积分的问题。命令如下:


发布于: 刚刚阅读数: 5
用户头像

TiAmo

关注

有能力爱自己,有余力爱别人! 2022-06-16 加入

CSDN全栈领域优质创作者,万粉博主;阿里云专家博主、星级博主、技术博主、阿里云问答官,阿里云MVP;华为云享专家;华为Iot专家;

评论

发布
暂无评论
MATLAB实战 | 求矩阵指数、预定义变量i和j的含义以及梯形积分法_matlab_TiAmo_InfoQ写作社区