Matalb使用之论文公式上的用处

Matlab求解表达式

将一些变量声明符号变量(如syms x)
然后再可以把方程转化为Ax=y,
x=A\y;
1.创建符号变量的方法
如果想创建一个字符矩阵,如
[ I x y − I x y − I x z − I x y I y y − I y z − I x z − I y z I z z ] \begin{bmatrix}I_{xy}&-I_{xy}&-I_{xz} \\-I_{xy}&I_{yy}&-I_{yz} \\-I_{xz}&-I_{yz}&I_{zz} \end{bmatrix} IxyIxyIxzIxyIyyIyzIxzIyzIzz
方法是

syms Ixx Iyy Izz Ixy Ixz Iyz
I=[Ixy -Ixy -Ixz;-Ixy Iyy -Iyz;-Ixz -Iyz Izz;];

如果创建一个字符向量,如
[ u ˙ , v ˙ , w ˙ ] T ; [\dot u,\dot v,\dot w]^T; [u˙,v˙,w˙]T;
方法是

syms u v w;
vel=[u v w].';%注意此处的转置符号用的是.'

%如果直接用’的话,是共轭转置,最后运算的时候所有跟vel相关的量就编程了conj( u ˙ \dot u u˙),conj( v ˙ \dot v v˙),这种形式。

用matlab检验自己计算的结果和论文上的结果是否一致

将两个表达式输进去,然后相减即可
注意将两者相减的结果,用simplify(结果)语句一下,笔者遇到矩阵相减结果看着结果不为0,实际为0,只是显示的问题,用合并同类项的方法最后还是剩下一个分量合并不了。

matlab表达式替换技巧

替换
matlab中,怎样用一个表达式替换一个变量?
https://zhidao.baidu.com/question/549552656.html
在这里插入图的描述

https://zhidao.baidu.com/question/198455537.html
在这里插入图片描述
更详细的subs置换方法
http://www.matlabhome.cn/post/7.html

httMatlab——sym和syms
ps://blog.csdn.net/GongPF/article/details/89516950
MATLAB中如何定义符号数组
https://www.ilovematlab.cn/thread-217988-1-1.html
(出处: MATLAB中文论坛)
请教下大家如何在MATLAB中定义符号数组

如 syms a(1) a(2) …a(100)

一个一个定义太麻烦了,有一次性定义的方法吗
回答:
a = sym(‘a’,[100,1])
此处可以参考matlab官方help文档
在这里插入图片描述
在这里插入图片描述

微分方程(组)求解

求解出二阶表达式后,面临的微分方程求解问题:
数值解和解析解。
没有解析解时的,ode数值解方法如下:

https://jingyan.baidu.com/album/ce09321b88152b2bff858fee.html?picindex=7
在这里插入图片描述
在这里插入图片描述
自己的一点理解。
在这里插入图片描述

自己的理解要把这些式子表示成如下形式
X ˙ \dot{X} X˙=f(t,X),其中X= [ x 1 , x 2 , . . . . x n ] T [x_1,x_2,....x_n]^T [x1,x2,....xn]T, X ˙ = [ x ˙ 1 , x ˙ 2 , . . . . x ˙ n ] T \dot X=[\dot x_1,\dot x_2,....\dot x_n]^T X˙=[x˙1,x˙2,....x˙n]T,所以本质上是表示出 X ˙ = [ x ˙ 1 , x ˙ 2 , . . . . x ˙ n ] T \dot X=[\dot x_1,\dot x_2,....\dot x_n]^T X˙=[x˙1,x˙2,....x˙n]T里的每一个元素 x ˙ 1 , x ˙ 2 , . . . . x ˙ n \dot x_1,\dot x_2,....\dot x_n x˙1,x˙2,....x˙n.如果有相应表达式对应就是相应表达式对应,如果没有则表现为 x ˙ 1 = x ˙ 1 \dot x_1=\dot x_1 x˙1=x˙1这样的效果,注意等式右边的 x ˙ 1 \dot x_1 x˙1是拿 X ˙ \dot{X} X˙=f(X)里边的X里的一个元素来表示。这

些文章大多表示成 Y ˙ \dot{Y} Y˙=f(t,Y),其中y= [ y 1 , y 2 , . . . . y n ] T [y_1,y_2,....y_n]^T [y1,y2,....yn]T, y ˙ = [ y ˙ 1 , y ˙ 2 , . . . . y ˙ n ] T \dot y=[\dot y_1,\dot y_2,....\dot y_n]^T y˙=[y˙1,y˙2,....y˙n]T,所以本质上是表示出 y ˙ = [ y ˙ 1 , y ˙ 2 , . . . . y ˙ n ] T \dot y=[\dot y_1,\dot y_2,....\dot y_n]^T y˙=[y˙1,y˙2,....y˙n]T里的每一个元素 y ˙ 1 , y ˙ 2 , . . . . y ˙ n \dot y_1,\dot y_2,....\dot y_n y˙1,y˙2,....y˙n.如果有相应表达式对应就是相应表达式对应,如果没有则表现为 y ˙ 1 = y ˙ 1 \dot y_1=\dot y_1 y˙1=y˙1这样的效果,注意等式右边的 y ˙ 1 \dot y_1 y˙1是拿 y ˙ \dot{y} y˙=f(y)里边的Y里的一个元素来表示。本质是一样的。

参考官方教程
https://ww2.mathworks.cn/help/matlab/ref/ode45.html?s_tid=doc_ta

在这里插入图片描述
理解:
X ˙ \dot{X} X˙=f(X,t),其中的t,X并不完全会用到。

在这里插入图片描述
@(t,y)中不能写成@(t),虽然y未用到,但是形式上必须保留。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
这一个时变项没看懂啥意思

在这里插入图片描述

回到之前的那个百度经验链接
https://jingyan.baidu.com/album/ce09321b88152b2bff858fee.html?picindex=7

在这里插入图片描述
在这里插入图片描述

这里这个比较复杂,覆盖的就很全面了。这里原链接这里有四张图,查看原文时,点进图片即可翻到下一张图片,在外边点向右的箭头会是下一页了。

在这里插入图片描述

Matlab绘图

关于matlab绘图中字体及图片大小等的设置

在这里插入图片描述
如何在matlab中的xlabel,ylabel,legend和text函数中使用latex
在这里插入图片描述

关联数据

linkdata on
https://ww2.mathworks.cn/help/matlab/ref/linkdata.html

画多个子图

figure(1); % 第一个子图
plot(…);
figure(2); % 第二个子图
plot(…);
figure(3);
plot(…);
figure(4);
plot(…);

FIGURE图像大小设置

matlab的图像操作——输出图像尺寸大小、坐标轴等各项设置

个人经验

第一步,点编辑,随便点一个进入图像编辑状态,例如坐标区
在这里插入图片描述

第二步说明:选中图的边框。
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 复合梯形公式是一种数值积分方法,可以用于计算函数在一定区间上的定积分。在MATLAB中,可以使用trapz函数来实现复合梯形公式的计算。具体步骤如下: 1. 定义积分区间和积分函数。 2. 将积分区间分成若干个小区间,每个小区间的长度为h。 3. 对于每个小区间,使用梯形公式计算积分值。 4. 将所有小区间的积分值相加,得到整个区间上的积分值。 MATLAB代码示例: % 定义积分区间和积分函数 a = 0; % 积分区间左端点 b = pi; % 积分区间右端点 f = @(x) sin(x); % 积分函数 % 将积分区间分成n个小区间 n = 100; % 小区间个数 h = (b-a)/n; % 小区间长度 % 使用梯形公式计算每个小区间的积分值 x = a:h:b; % 小区间的节点 y = f(x); % 小区间的函数值 I = h/2 * (y(1) + 2*sum(y(2:end-1)) + y(end)); % 梯形公式计算积分值 % 将所有小区间的积分值相加,得到整个区间上的积分值 I_total = trapz(x, y); % trapz函数计算积分值 disp(['使用梯形公式计算的积分值为:', num2str(I)]); disp(['使用trapz函数计算的积分值为:', num2str(I_total)]); ### 回答2: 复合梯形公式是一种用于数值积分的方法,它是通过将整个积分区间分成若干个小区间,然后分别在每个小区间中应用梯形面积公式,最后将所有小区间的面积累加起来得到整个区间的积分值。在Matlab中,可以使用内置函数trapz来实现复合梯形公式的计算。 具体来说,假设需要计算函数f在区间[a,b]上的积分,可以先将该区间等分成n个小区间,每个小区间的长度为h=(b-a)/n。然后,可以通过以下步骤计算积分值: 1. 将区间[a,b]上的所有点均匀分成n+1份,得到n+1个点,分别为x0,x1,x2,...,xn。 2. 计算函数f在每个点上的函数值,即f(x0),f(x1),f(x2),...,f(xn)。 3. 将相邻两个点组成一个小区间,计算每个小区间的梯形面积,即(h/2)×[f(xi)+f(xi+1)]。 4. 将所有小区间的梯形面积累加起来,得到整个区间的近似积分值。 需要注意的是,当n越大时,使用复合梯形公式计算得到的积分值越接近精确积分值,但同时也会增加计算复杂度和计算时间。 总之,使用复合梯形公式可以通过一些简单的计算得到积分的近似值,同时也可以通过调整小区间的数量来达到更高的精度。Matlab中的内置函数trapz可以很方便地实现该方法,同时也能够处理一些高维度的积分计算。 ### 回答3: 复合梯形公式是数值积分中的一种方法,用于近似计算积分。与简单梯形公式相比,它可以更准确地计算曲线下面积,并且可以适用于更复杂的积分计算,例如在非均匀的积分间隔下进行数值积分。 在MATLAB使用复合梯形公式计算积分,需要先将需要计算的积分区间划分为若干个小区间,即使用分段计算的方法。假设需要计算的积分区间为[a,b],将其分为n个小区间,则每个小区间的长度为h=(b-a)/n,积分值可以表示为: integral = h/2*(f(a)+2*sum(f(a+h:h:b-h))+f(b)) 其中f(x)表示需要计算的被积函数。在MATLAB中,可以使用for循环与矩阵计算的方法来实现复合梯形公式计算积分,具体步骤如下: 1.定义被积函数f(x)及积分区间[a,b]和小区间数n。 2.使用for循环,将积分区间分为n个小区间,计算每个小区间的积分值,并将结果存储在矩阵integral中。 3.使用矩阵计算的方法,将每个小区间的积分值加和,即可得到整个积分区间的积分值。 以下是MATLAB代码示例: %定义被积函数f(x) f = @(x) x^2; %定义积分区间[a,b] a = 0; b = 1; %定义小区间数n n = 10; %计算每个小区间的积分值 h = (b-a)/n; for i = 1:n integral(i) = h/2*(f(a+(i-1)*h)+f(a+i*h)); end %计算整个积分区间的积分值 result = sum(integral); fprintf('使用复合梯形公式计算积分,结果为:%f\n', result); 在以上代码中,我们定义了被积函数f(x)=x^2,积分区间为[0,1],小区间数为10。通过for循环计算得到每个小区间的积分值,再通过sum函数将所有积分值加和,即可得到整个积分区间的积分值。最后,使用fprintf函数输出计算结果。 因此,我们可以看到,使用MATLAB实现复合梯形公式计算积分非常方便,省去了手算积分的麻烦,同时可以得到更为准确的数值积分结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值