我在练习的第四部分遇到了问题,我不能让它在maxima中工作:
首先将s_y(t)转换为t=...这应该是t=sqrt(2*s_y/a_y)
然后将其插入到s_x(t)中,得到一个新的s_x2(s_y)函数,其中不插入时间,而是插入垂直长度(s_y),但仍然得到水平长度。
结果应该是s_x2(s_y)=a_x*s_y/a_y
这在maxima中是如何工作的?
我尝试过的:https://filebin.net/9hhdfkklqrn5fznt/Rakete.wxmx?t=tdbuwxj1
Aufgabe "Rakete" Dynamik 1
--> showtime:false; kill(all); linel: 65; load(ezunits);
(showtime) false
(%o0) done
(linel) 65
(%o2) "C:/maxima-5.43.2/share/maxima/5.43.2/share/ezunits/ezunits.mac"
1 Stellen Sie die Bewegungsgleichung für die Bewegung in x- un din y-Richtung auf.
a's über den Winkel bestimmen bestimmen
--> a: 15`m/s^2; β: 70*%pi/180; a_x: a*cos(β); a_y: a*sin(β);
(a) 15 ` m/s^2
(β) (7*%pi)/18
(a_x) 15*cos((7*%pi)/18) ` m/s^2
(a_y) 15*sin((7*%pi)/18) ` m/s^2
damit nun die funktionen für v(t) aufstellen
--> v_x(t):=a_x*t+0; v_y(t):=a_y*t+0;
(%o7) v_x(t):=a_x*t+0
(%o8) v_y(t):=a_y*t+0
damit nun die funktionen für s(t) aufstellen
--> s_x(t):=a_x/2*t^2+0+0; s_y(t):=a_y/2*t^2+0+0;
(%o56) s_x(t):=a_x/2*t^2+0+0
(%o57) s_y(t):=a_y/2*t^2+0+0
2 Nach welcher Zeit t hat die Rakete eine Höhe von s_y=10km erreicht?
--> t10km: dimensionally(solve(s_y(t)=10000`m, t))$ t10km: rhs(t10km[2]); float(%);
(t10km) (2*10^(3/2))/(sqrt(3)*sqrt(sin((7*%pi)/18))) ` s
(%o48) 37.66833811883066 ` s
3 Welche Strecke s_x parallel zur Erdoberfläche hat die Rakete nach dieser Zeit zurückgelegt?
--> Strecke_parallel: s_x(t10km); float(%);
(Strecke_parallel) (10000*cos((7*%pi)/18))/sin((7*%pi)/18) ` m
(%o18) 3639.702342662025 ` m
einfacher
--> s_x10km: dimensionally(solve(tan(β)=(10000`m)/x,x))$ s_x10km: assoc(x, s_x10km); float(%);
(s_x10km) 10000/tan((7*%pi)/18) ` m
(%o51) 3639.702342662024 ` m
4 Verallgemeinerung s_x(s_y)= ?
--> T: dimensionally(solve(s_y(x)=s_yx,x))$ T: rhs(T[2]); float(%);
(T) (sqrt(2)*sqrt(s_yx))/(sqrt(15)*sqrt(sin((7*%pi)/18))) ` s/sqrt(m)
(%o88) 0.3766833811883064*sqrt(s_yx) ` s/sqrt(m)
--> s_x2(s_yx):= s_x(T);
(%o92) s_x2(s_yx):=s_x(T)
--> s_x2(10000`m); float(%);
(%o93) (cos((7*%pi)/18)*s_yx)/sin((7*%pi)/18)
(%o94) 0.3639702342662025*s_yx
--> 发布于 2020-05-10 22:48:06
我猜您在这里需要做什么,但我建议您将函数s_x2的定义更改为s_x2(s_yx):= ''(s_x(T))而不是s_x2(s_yx):= s_x(T)。quote-quote ''的作用是将s_x(T)的当前值粘贴到函数体中。否则,不计算函数体,并在最终结果中得到一个未计算的符号s_yx。
当我尝试这样做时,我得到的是这样的结果。之前的所有其他东西都是一样的,我只展示了最后一部分。
(%i28) s_x2(s_yx):= ''(s_x(T));
7 %pi
cos(-----) s_yx
18
(%o28) s_x2(s_yx) := ---------------
7 %pi
sin(-----)
18
(%i29) s_x2(10000`m);
7 %pi
10000 cos(-----)
18
(%o29) ---------------- ` m
7 %pi
sin(-----)
18
(%i30) float(%);
(%o30) 3639.702342662025 ` mMaxima有一个所谓的一次性评估策略,在这种情况下,这会导致s_yx得不到预期的评估。在函数定义中使用quote-quote可以避免这种情况下的问题。
另一种方法是说define(s_x2(s_yx), s_x(T))。这更一般,因为quote-quote只在解析输入时应用。
https://stackoverflow.com/questions/61686583
复制相似问题