首页 > 解决方案 > 在 MATLAB 中计算积分

问题描述

有问题的积分

如屏幕截图所示,如何计算积分,其中j11x3矩阵,j2也是1x3矩阵,g1而是300x3矩阵,也是g2矩阵300x3

在屏幕截图中的“。” 表示点积。

实际上 g1 和 g2 是 300x4 矩阵,其中第一行是“t”。第 1 行有 t = 200,第 2 行有 300,依此类推,直到第 300 行有 60000 值。因此,g1 和 g2 实际上依赖于 't'。如果我们把它当作总和,那么这是否正确?

Alpha_gyro = 0;
for i = 1:300

Alpha_gyro_function =(dot(g1(1,2:4),j1) - dot(g2(i,2:4),j2));
Alpha_gyro = Alpha_gyro + Alpha_gyro_function;


end 

因此,它将输出作为 1 个数字。但现在我很困惑 'Alpha_gyro(t)' 相对于 't' 的值是多少。即,“Alpha_gyro”也应该是 300x1 的矩阵,对吧?因为它为此目的依赖于“t”,这是否正确?

Alpha_gyro = zeros(300,1)
for i = 1:300
Alpha_gyro_function =(dot(g1(1,2:4),j1) - dot(g2(i,2:4),j2));
Alpha_gyro(i) = Alpha_gyro(i) + Alpha_gyro_function;

end

但是,正如我们所知,积分的值从 0 到“t”的新值,所以每个值都应该是新矩阵中先前值的总和。所以我添加了这个,如果我做得对,请指导?

Alpha_gyro = zeros(300,1);Alpha_gyro_function_old =0 ;
for i = 1:300
Alpha_gyro_function =(dot(g1(1,2:4),G_upd_j1) - dot(g2(i,2:4),G_upd_j2));
Alpha_gyro_function_old = Alpha_gyro_function_old + Alpha_gyro_function;
Alpha_gyro(i) = Alpha_gyro(i) + Alpha_gyro_function_old;
end

标签: matlabintegrationcalculus

解决方案


这是我的解决方案(如果我理解你的任务):

t = g1(:,1); % time values
integrand = g1(:,2:4)*j1' - g2(:,2:4)*j2'; % symbol " ' " mean transpose
 
alfa_gyro = [];

for i = 2:length(t)
alfa_gyro(i) = trapz(t(1:i), integrand(1:i));
end

result = [t, alfa_gyro'];

推荐阅读