我在练习的第四部分中遇到问题,无法使它发挥最大作用:
首先将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
最大程度如何运作?
我尝试过: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
-->
我正在猜测您需要在这里做什么,但是让我建议您将函数s_x2
的定义更改为s_x2(s_yx):= ''(s_x(T))
,而不是s_x2(s_yx):= s_x(T)
。引号''
的作用是将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 ` m
Maxima具有所谓的一次性评估策略,在这种情况下,这导致s_yx
得不到预期的评估。在函数定义中使用quote-quote可以避免这种情况的出现。
另一种方法是说define(s_x2(s_yx), s_x(T))
。这是更通用的,因为quote-quote仅在解析输入时才应用。