0

我在练习的第 4 部分遇到问题,我无法让它在最大值下工作:

首先将 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
 -->    
4

1 回答 1

1

我在猜测您需要在这里做什么,但我建议您将函数的定义更改s_x2s_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 ` m

Maxima 有一种所谓的一次性评估策略,在这种情况下,它会导致s_yx无法按预期进行评估。在函数定义中使用 quote-quote 可以避免这种情况下的问题。

另一种方法是说define(s_x2(s_yx), s_x(T))。这更通用,因为 quote-quote 仅在解析输入时应用。

于 2020-05-10T14:48:05.953 回答