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 に答える