2017-11-07 18 views
0

これは私の初めての投稿ですので、もう情報が必要な場合、または何か正しいことをしていない場合はお知らせください!MATLABでODEのシステムを解く?

ODESのシステムをプロットしたいと思います。以下のように問題はありません。ベクトルは、xを含む作成される

[email protected](t,x) [ 
.the RHS of my first order ODES. 
]; 


[t x]=ode45(F,[Range], [Initial conditions]); 

'(1)、X'(2)、...、X(1)、X(2)時間依存変数であろう場所。

私のシステムはもう少し複雑です。私は微分方程式と時間依存変数を含む方程式からなる6つの微分方程式を持っています。例えば、私のODESのRHSは、 のようなものです。2 * x(2)* x '(1)* f(a)

ここで、f(a)は定数に基づく別の関数です。

以下の順序でコードを設定しました。

定数、f(a)の形式の方程式、次に微分方程式の後にode45ソルバとplotコマンドが続きます。しかし、私は初期の方程式が後で定義されない変数/方程式に依存するため、いくつかのエラー "Undefined function or variable"を得ています。

は今まであなたが私のコードの種類の提案、ここでは一例として:)

を助けるために多くをいただきありがとうございます。

`%Constants 
a=34 
b=31 
c=20 
%Equations 
A=b*cos(2*pi) 
B=a*EQ1 
C=c*x(2) 
%DifferentialEquations 
EQ1=x(1)*A 
EQ2=(EQ3-EQ1)*(B-C) 
EQ3=x(2)*x(3) 
[email protected](t,x) [EQ1;EQ2;EQ3;];[t x]=ode45(F,[0 10], [0 0 0 ]); 

エラーを出力します。 未定義の関数または変数 'DEQ1A'を生成します。

+0

あなたはそれが動作し、プラス(文脈で)間違って何が起こっているかを示し、実際のエラーメッセージが表示されていないしようとしているコードのスニペットを提供することができればそれが役立つだろう。さらに、コードを入力するときにエディタで{}ボタンを使用して、正しくフォーマットされていることを確認してください。 – Phil

+0

ありがとう@Jodagただし、主な問題は残る – ODAmatuer

+0

発生しているエラーを再現する実際のMATLABコードの問題をアップデートできますか?あなたが与えた方程式に基づいて 'F'を正しく定義でき、' ode45'がエラーを返さなかったと思います。 – jodag

答えて

0

変数が定義される前に変数を使用しようとしているコメントに基づいています。 MATLABでは、使用する前に変数と関数を定義する必要があります。方程式はお互いの関数なのでanonymous functionsを使ってFを定義することができます。

例:

a=34; 
b=31; 
c=20; 
A = b*cos(2*pi); 
EQ1 = @(x) x(1)*A; 
B = @(x) a*EQ1(x); 
C = @(x) c*x(2); 
EQ3 = @(x) x(2)*x(3); 
EQ2 = @(x) (EQ3(x) - EQ1(x))*(B(x)-C(x)); 
F = @(t,x) [EQ1(x);EQ2(x);EQ3(x)]; 
[t,x] = ode45(F,[0 10], [0 0 0]); 
+0

ありがとうございました。私はこれを試してみる。 – ODAmatuer

+0

すべての関数の導関数( 'EQ1'、' EQ2'、 'EQ3')は' t'に対して定数であり、 '[0 0 0]'の初期条件ではすべて0です。時間の経過と共に変化がないことを意味する。 – jodag

+0

ありがとう、私は非常に大きなファイルを扱っているので、すべてが0になるわけではありません。これらはあなたが解決した問題を表示するための単なる例に過ぎませんでした。つまり、まだ定義されている関数に@(x)を追加し、AとBの名前をA(x)とB(x)に変更しますか? – ODAmatuer

関連する問題