1
Dx=y
Dy=-k*y-x^3+9.8*cos(t)
inits=('x(0)=0,y(0)=0')

これらは、私がプロットしたかった微分方程式です。

まず、微分方程式を解いてグラフをプロットしてみました。

Dsolve('Dx=y','Dy=-k*y-x^3+9.8*cos(t)', inits)

このように、しかし、このシステムには明確な解決策はありませんでした。

今私は立ち往生しています:(

方程式を解かずに、このシステムをどのようにプロットできますか?

4

1 に答える 1

3

まず、解きたい微分方程式を定義します。t現在の時刻と現在の位置の 2 つの引数を取りx、列ベクトルを返す関数である必要があります。x と y の代わりに and を使用x(1)x(2)ます。

k = 1;
f = @(t,x) [x(2); -k * x(2) - x(1)^3 + 9.8 * cos(t)];

解決するタイムスパンと初期条件を定義します。

tspan = [0, 10];
xinit = [0, 0];

を使用して方程式を数値的に解きますode45

ode45(f, tspan, xinit)

これにより、次のプロットが得られます。

ここに画像の説明を入力

ある時点での解の値を取得したい場合は、いくつかの出力引数を求めるだけです。

[t, y] = ode45(f, tspan, xinit);

次のようにして、 yに対する位相の肖像xをプロットできます。

plot(y(:,1), y(:,2)), xlabel('x'), ylabel('y'), grid

これにより、次のプロットが得られます

ここに画像の説明を入力

于 2013-04-15T23:01:07.670 に答える