在matlab中使用非均匀网格进行双积分

时间:2015-10-11 08:15:10

标签: algorithm matlab math discrete-mathematics

我知道如何使用this vertica jdbc driver执行单个积分。如果我的函数是m1=(sum(diff(x,1,2).*(f(:,1:end-1)+f(:,2:end)),2))/2,则MATLAB中的f(x,y,z)上的单个积分看起来像

dydz

现在,如果我有函数Algorithm What(A,n) A <-- new 2D array of n*n integers s <-- 0 for I <-- 2 to n-2 do for j <-- I-2 to n-1 do s <--s + A[I][j] end for end for 如何使用MATLAB中非均匀网格的梯形规则在HashMap<String, String> cust = new HashMap<>(); 上执行双积分?

请注意它的网格不均匀。

1 个答案:

答案 0 :(得分:2)

使用MATLAB中的内置函数trapz,您可以实现这一目标。这是一个例子:

>> x = -3:.1:3;
y = -5:.1:5;
z = -10:0.1:10;
[X,Y,Z] = meshgrid(x,y,z);
F = X.^2 + Y.^2 + Z.^2;
I = trapz(y,trapz(x,F,2));
I = squeeze(I);

我正在做的是创建由小写x,y,z表示的数据点的网格网格,并评估函数,在本例中为X^2+y^2+Z^2。您已经有了备用数据。请注意,您始终可以使用griddata统一重新网格化数据。

然后我使用trapz两次来整合x和y维度。 trapz专门专门针对不等于1的第一个矩阵维度进行集成,允许我这样做(请参阅此处的文档:http://www.mathworks.com/help/matlab/ref/trapz.html)。

最后,我使用数据挤压删除所有单例维度并返回一个向量。如果我沿着剩余维度绘制数据,我得到:

>> plot(z,I);

与我原来的功能相比,如果在-3 <= x <= 3-5 <= y <= 5之间进行分析整合,我会获得:680 + 60 z^2。两人达成一致。 plot