NDSolve ifadelerini ayıklama ve çizme
Aug 18 2020
Bu yüzden NDSolve, sonuçları kullanarak ve grafiğini çizerek bir diferansiyel denklem çözüyorum. Ancak üretilen grafiklerdeki veri noktalarını bir .txt dosyasına çıkarmak istiyorum. Bir işlevin normal bir grafiğinden veri çıkarma yönteminin farkındayım, ancak NDSolve. Bunu yapmanın yolu bu değilse, başka hangi yöntemler mevcuttur?
Module[{m = 1, b = 1, g = 9.8, k = 100, time = 5},
s = NDSolve[{m g Cos[ϕ[t]] - k (l[t] - b) ==
m (l''[t] - l[t] ϕ'[t]^2),
-g Sin[ϕ[t]] == l[t] ϕ''[t] + 2 l'[t] ϕ'[t],
l[0] == 1.2,
l'[0] == 0, ϕ[0] == 30*π/180, ϕ'[0] == 0},
{l, ϕ}, {t, 0, time}];
Print[
Plot[Evaluate[l[t] /. s], {t, 0, time}, AxesLabel -> {"t", "l"},
ImageSize -> Small]];
Print[
Plot[Evaluate[ϕ[t] /. s], {t, 0, time},
AxesLabel -> {"t", "ϕ"}, ImageSize -> Small]];
(*data = Cases[Plot[Evaluate[l[t]/.s],{t,0,time},Line[data_]:> data, \
-4*)
Animate[
Graphics[{Point[{0, 0}],
Point[{l[t] Sin[ϕ[t]], -l[t] Cos[ϕ[t]]}],
Line[{{0, 0}, {l[t] Sin[ϕ[t]], -l[t] Cos[ϕ[t]]}}]} /. s,
PlotRange -> {{-2 b, 2 b}, {-2 b, 0.1}}], {t, 0, time}]
]
Yanıtlar
3 UlrichNeumann Aug 18 2020 at 07:31
Çözümün veri noktalarını almak için deneyin
sol = Module[{m = 1, b = 1, g = 9.8, k = 100, time = 5},
NDSolveValue[{m g Cos[\[Phi][t]] - k (l[t] - b) ==m (l''[t] - l[t] \[Phi]'[t]^2), -g Sin[\[Phi][t]] ==l[t] \[Phi]''[t] + 2 l'[t] \[Phi]'[t], l[0] == 1.2,l'[0] == 0, \[Phi][0] == 30*\[Pi]/180, \[Phi]'[0] == 0}, {l, \[Phi]}, {t, 0, time}]
]
soliki enterpolasyon nesnesi içerir. İlk çözümün veri noktaları şunlardır:
data1=Transpose[{sol[[1]]["Coordinates"][[1]], sol[[1]]["ValuesOnGrid"]}];
Show[Plot[sol[[1]][t], {t, 0, 5}], ListPlot[data1, PlotStyle -> Red]]
Nicole Kidman, Michael Keaton ve Val Kilmer'in Batman Olarak Paylaştığı Bu 1 Çekici Özelliğe Bayıldı
Donovan, Şarkılarından 1'ini The Beatles'ın "Lucy in the Sky with Diamonds" şarkısıyla karşılaştırdı
Kevin Jonas'ın Kızı Alena, Doğum Günü Fotoğrafında Büyümüş Görünüyor: '9 Yaşında Gerçek Hissetmiyor'
Charly Reynolds Yakın Zamandaki Vokal Kord Ameliyatını Açıkladı: 'Şarkı Söylemekte Sorun Yaşıyordum'