2012-07-13 76 views
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) 

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

回答

1

首先,你没有一个矩形网格由于此行

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

我不完全相信你是问。我得到的印象是,您可能想要在不规则网格x上绘制u的曲面。如果确实如此,您可能会发现以下类似的功能可以让您执行所需的任务 - 尽管看起来您需要对代码进行一些调整。

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

或者,你可能只是重新设计你的代码,这样x导致矩形网格 - 我不能肯定地说,因为也许是有原因的,你只考虑这些特殊点。

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