2016-05-23 10 views
0

Matlabの初期条件y(0)= 1とy '(0)= 0を使って方程式y "+ 4y = 0をモデル化しようとしています。上記ODEのための時間の関数としての位置の作業近似:Matlabで二次ODEを解く

clear  
syms y(t) 

%Differential Equation Conversion 
P = odeToVectorField(diff(y, 2) == -4*y); 
M = matlabFunction(P,'vars',{'t','Y'}); 

%Position Approximation 
pos_solution = ode45(M,[0 20],[1 0]); 
x = linspace(0,20,1000); 
y = deval(pos_solution,x,1); 

%Plot of Position as a function of time 
figure(3) 
plot(x,y,'b'); 

私は、生産このデータを取得し、時間の関数としてのシステムの速度を見つけようとしていますが、どのように見当がつかない

+1

「システムの速度のための波形近似は」...私はこれが何であるかを知らないも何 'y':あなたは出力(プロット)の両方が必要な場合は、三番目の引数を省略することができますを表す。 – TroyHaskin

+0

'y = deval(pos_solution、x、1);'はyの積分を返します。つまり、y(yがそれを表すならば位置)。もしy '(速度がyの場合は速度、y' 'の積分)が必要な場合は、ドキュメントに従って 'y = deval(pos_solution、x、2);'を使います。あるいは、 'y = deval(pos_solution、x);'を使って、両方を返すことができます。 – horchler

+0

ありがとうございます。私は、ドキュメントが 'deval(XINT、SOL、IDX)'で何を話しているかを完全に理解していませんでした。それは私のためにそれをクリアする!とても有難い。 –

答えて

0

オプションの第3引数devalは、返される解のインデックスを指定します。インデックスは状態vectに対応しています(初期条件)とODE統合関数の出力(M)を入力します。あなたのシステムの特別な場合、インデックス1は速度に対応する位置とインデックス2に対応します。

... 
y = deval(pos_solution,x); 

% Plot of Position as a function of time 
figure(3) 
plot(x,y(1,:),'b',x,y(2,:),'r'); 
legend('Position','Velocity'); 
関連する問題