我希望能够在特征曲线(线)上模拟双曲线方程。我将从一个基本的开始。 u_ {t} + 2u_ {x} = u ^ {2},初始数据为u(x,0)= cos(x)。解是u(x,t)= cos(x-2t)/(1-t * cos(x-2t))其中,charackteristic曲线是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)
显然,特征线和矩形网格的网格彼此不适合。我如何在特征上绘制解决方案?
答案 0 :(得分: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
生成矩形网格 - 我无法肯定地说,因为您可能只考虑这些特定点。
如果您没有得到更好的答案,上面的链接可以让您得到您想要的(假设我已正确理解您的问题)。