Вы не предоставили объяснения того, как ваши уравнения предназначены для моделирования физической системы, но это бесполезно.
Итак, я сделал некоторые предположения о ваших намерениях и вашей модели.Пожалуйста, не вините меня, если мои догадки не на высоте.
restart;
with(plots):
Sys := [2*(diff(T1(t), t, t))+cos(T1(t)-T2(t))*(diff(T2(t), t, t))
+sin(T1(t)-T2(t))*(diff(T2(t), t))^2+19.6*sin(T1(t)) = 0,
diff(T2(t), t, t)+cos(T1(t)-T2(t))*(diff(T1(t), t, t))
-sin(T1(t)-T2(t))*(diff(T1(t), t))+9.8*sin(T2(t)) = 0,
T1(0) = 1, (D(T1))(0) = 0, T2(0) = 1, (D(T2))(0) = 1]:
sol := dsolve(Sys, numeric, range = 0 .. 20, output = listprocedure):
TT1, TT2 := op(subs(sol, [T1(t), T2(t)])):
fp := t -> plots:-display(
pointplot([sin(TT1(t))+sin(TT2(t)), -cos(TT1(t))-cos(TT2(t))],
color = red, symbol = solidcircle, symbolsize = 25),
pointplot([sin(TT1(t)), -cos(TT1(t))],
color = blue, symbol = solidcircle, symbolsize = 25),
plottools:-line([0,0],[sin(TT1(t)), -cos(TT1(t))]),
plottools:-line([sin(TT1(t)), -cos(TT1(t))],
[sin(TT1(t))+sin(TT2(t)), -cos(TT1(t))-cos(TT2(t))]),
scaling=constrained
):
animate(fp, [t], t=0..10, frames=200);
Я не знаю, является ли этот вид с накоплениемэто то, что вы ищете, как представление о положении "обеих" масс.Не совсем понятно, что вы подразумеваете под этим.
Но, возможно, ключевым моментом является то, что если двухэлементные списки, которые вы используете в своих вызовах pointplot
, представляют (смещения) векторы, то вы можете получитьсоставной / совокупный эффект на вторую массу, добавляя эти два вектора поэлементно.Вот как красная точка получает свою позицию в моей анимации.Надеемся, что это позволит вам получить кумулятивный эффект с обеими массами, по вашему выбору представления.