(本から)この結果を再現する方法は?


8

興味のある結果は、「同期:非線形科学における普遍的な概念」ページ図ます。この投稿の最後には、特有のフラグメントも示されています。33314.3

したがって、基本的には、初期条件(横軸)の1次元配列に適用されるこの散逸性結合があり、時間(縦軸)とともに変化します。正確な初期条件がわからないので、同じ結果が得られないことに気づきましたが、それはこの投稿のポイントではありません。

実際の問題は、進化の法則をどのように適用するかわかりません。単一の反復を受ける初期条件がある場合、結果は基本的にそれらの初期条件の関数になります...問題のこの関数(手順)は何ですか?

MatLabで計算できるようになりたいです。確かにそこにいくらか関連する標準関数がなければなりません...


カップリング


と、与えられたPDEシステムを解く必要があります。u 2x t u1(x,t)u2(x,t)

@nonlinearism初期条件はどうですか?ソリューションを明確にするために、いくつかの追加情報を明らかに導入する必要があることを意味します。
Pranasas 2013年

@WillieWongご意見ありがとうございます。scicompです。あまり気づかなかった。
Pranasas 2013年

1
質問を移行しました。質問のタグを付け直すことをお勧めします。まず、parabolic-pdematlabが適切だと思われます。
Willie Wong

これまでにmathematicaを試したことがあります...このデモンストレーションを確認してください 。
ロールシャッハ2013年

回答:


5

本にあるような放物線PDEは、通常、線方法を使用して解くことができます。最初に、方向のメッシュを作成します。プロットは不均一性の必要性を示す特性を示さないため、一定の間隔を使用したと想定します。次に、左側の時間微分のみで方程式を再キャストし、の微分を有限差分近似に変更します。一般的な内点の最初の方程式は次のとおりです。xxx

u1,it=ε(u2,iu1,i)u1,i+12u1,i+u1,i1Δx2u1,i+24u1,i+1+6u1,i4u1,i1+u1,i2Δx4u1,iu1,i+1u1,i12Δx

2番目の方程式、境界方程式、および境界の近くの点はあなたに任せます。これで、のODEの結合セットができました。初期条件から、最初のタイムステップでとを割り当てることができます。ここで、各タイムステップで、使用している時間積分アルゴリズムに基づいて、異なる時間で上記の離散化方程式を満たします。オイラーが明示的である場合は、各タイムステップの開始時に満足します。それが暗黙のオイラーであれば、終わりです。 u 1 i u 2 ii=1...Nu1,iu2,i

ただし、MATLABでは、これらの(およびより複雑な)メソッドをすべて処理する簡単な方法があります。必要なのは、ベクトルが与えられたときに、上記の方程式の右辺に等しい値のベクトルを返す関数です。周期的な境界条件を想定すると、次のようになります。uj,i

function [ u_prime ] = derivative( t, u, delta_x )

u_prime = zeros(length(u),1);
u = [u(end-3:end); u; u(1:4)];

if t < 200
    epsilon = 0;
else
    epsilon = 0.1;
end


for i = 5:2:length(u) - 4;
    u_prime(i-4) = epsilon*(u(i+1) - u(i)) - ...
        (u(i+2) - 2*u(i) + u(i-2))/delta_x^2 - ...
        (u(i+4) - 4*u(i+2) + 6*u(i) - 4*u(i-2) + u(i-4))/delta_x^4 - ...
        u(i)*(u(i+2) - u(i-2))/(2*delta_x);
    j = i+1;
    u_prime(j-4) = epsilon*(u(j-1) - u(j)) - ...
        (u(j+2) - 2*u(j) + u(j-2))/delta_x^2 - ...
        (u(j+4) - 4*u(j+2) + 6*u(j) - 4*u(j-2) + u(j-4))/delta_x^4 - ...
        u(j)*(u(j+2) - u(j-2))/(2*delta_x); 
    end
end

これを、MATLABの組み込みODEソルバーにフィードできます。ode15sのパフォーマンスはかなり良いことがわかりました。正弦波ICSも想定しましたが、問題ではないようです。

N = 1000;   % Number of space discretizations

x = linspace(0, 150, N);
u_0 = zeros(2*N,1);
u_0(1:2:end-1) = sin(2*x/10);   % u_1
u_0(2:2:end) = -sin(4*x/10);    % u_2
delta_x = x(2) - x(1);

[t,u] = ode15s(@(t,u) derivative(t,u,delta_x), [0 400], u_0);

結果は次のとおりです。 シミュレーション結果

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.