0

我希望能够模拟特征曲线(线)上的双曲线方程。我将从一个基本的开始。u_{t}+2u_{x}=u^{2},初始数据为 u(x,0)=cos(x)。解为 u(x,t)=cos(x-2t)/(1-t*cos(x-2t)),其中特征曲线为 x=2*t+x_{0}。所以解决方案是根据特征(特征方法)定义的。

x=zeros(10,5);
u=zeros(10,5);
x0=linspace(0,10,10);
t=linspace(0,5,5);
for i=1:length(x0)
    for j=1:length(t)
        x(i,j)=2*t(j)+x0(i);
        if t(j)*cos(x(i,j)-2*t(j))==1
            u(i,j)=0;
        else
            u(i,j)=cos(x(i,j)-2*t(j))/(1-t(j)*cos(x(i,j)-2*t(j)));
        end
    end
end
mesh(u)

显然,特征线网格和矩形网格不适合。如何根据特征绘制解决方案?

4

1 回答 1

1

首先,由于这条线,您没有矩形网格

x(i,j)=2*t(j)+x0(i);

我不完全确定你在问什么。我的印象是您可能想要u在不规则网格上绘制表面x。如果情况确实如此,您可能会发现以下类似使您能够做您需要的事情 - 尽管看起来您确实需要对您的代码进行一些调整。

http://blogs.mathworks.com/videos/2007/11/02/advanced-matlab-surface-plot-of-nonuniform-data/

或者,您可以重新设计您的代码,从而x产生一个矩形网格 - 我不能肯定地说,因为您可能只考虑这些特定点是有原因的。

如果你没有得到更好的答案,上面的链接可以让你得到你想要的(假设我已经正确理解了你的问题)。

于 2012-07-13T23:16:11.790 回答