wxmaxima 变换函数
wxmaxima transforming functions
我在练习的第 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
这在 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
-->
我猜想您在这里需要做什么,但我建议您将函数 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 ` m
Maxima 有一种所谓的一次性评估政策,在这种情况下,这导致 s_yx
没有得到预期的评估。在函数定义中使用 quote-quote 避免了这种情况下的问题。
另一种方法是说define(s_x2(s_yx), s_x(T))
。这更通用,因为仅在解析输入时应用引号。
我在练习的第 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
这在 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
-->
我猜想您在这里需要做什么,但我建议您将函数 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 ` m
Maxima 有一种所谓的一次性评估政策,在这种情况下,这导致 s_yx
没有得到预期的评估。在函数定义中使用 quote-quote 避免了这种情况下的问题。
另一种方法是说define(s_x2(s_yx), s_x(T))
。这更通用,因为仅在解析输入时应用引号。