Lighthill 源项的有限差分

计算科学 matlab 有限差分 数据分析
2021-12-06 05:15:36

我有包含速度的水平和垂直分量的实验数据,我需要对此进行评估:

2xixj(vivj)

表示U作为水平分量和V作为垂直,我们应该获得:

2xixj(vivj)2x2(U2)+2y2(V2)+22xy(UV)

我使用了二阶中心有限差分2/x2和混合导数的一阶有限差分。在 MATLAB 中:

%H and WW are height and width respectively
for ii=3:H-2
    for jj=3:WW-2

        %d^2/dx^2
        A(ii,jj)=(-1/12*U(ii,jj-2)^2+4/3*U(ii,jj-1)^2-5/2*U(ii,jj)^2+4/3*U(ii,jj+1)^2-1/12*U(ii,jj+2)^2)/h^2;

        %d^2/dy^2
        B(ii,jj)=(-1/12*V(ii-2,jj)^2+4/3*V(ii-1,jj)^2-5/2*V(ii,jj)^2+4/3*V(ii+1,jj)^2-1/12*V(ii+2,jj)^2)/h^2;

        %Mixed derivative
        C(ii,jj)=(V(ii+1,jj+1)*U(ii+1,jj+1)-V(ii+1,jj-1)*U(ii+1,jj-1)-V(ii-1,jj+1)*U(ii-1,jj+1)+V(ii-1,jj-1)*U(ii-1,jj-1))/(4*h^2);

        %sum of derivatives
        LGHT(ii,jj)=(A(ii,jj)+B(ii,jj)+2*C(ii,jj));

   end
end

到目前为止,结果不是很令人满意:屏幕周围到处都是“狂野的不连接”。

  • 我在某个地方有错误吗?
  • 你会使用不同的方案吗?
  • 你会推荐什么样的数据处理(样条?)以获得更平滑的结果?

输入数据示例:

输入数据示例

输出:

输出数据

1个回答

您的重新表述是错误的:衍生品的乘积规则是(uv)=uv+uv. 将此应用于您的情况(与x代替xxy=2xy为简洁起见

xy(uv)=y(xuv+uxv)=xyuv+xuyv+yuxv+uxyv
(请注意,您有四个不同的术语,而不是三个)。

如果你想要一个二阶精确的方案(不同精度的混合方案通常是浪费精力),标准模板是

xuijui+1,jui1,j2h,yuijui,j+1ui,j12h
xyuijui+1,j+1ui+1,j1ui1,j+1+ui1,j14h2.
您可以将第二个直接应用于(uv)ij,或插入右侧的两个模板。(或者更好的是,两者都比较,然后比较结果。)