求解带有(wx)最大值的方程:控制堆已耗尽

问题描述 投票:1回答:1

求解具有(wx)最大值的方程:控制堆栈已耗尽

我正在尝试使用(wx)Maxima求解方程:公式化公式,然后让其插入变量并为丢失的变量求解方程。但是我很难过。最后一行出现某种问题:

 Control stack exhausted (no more space for function call frames).
This is probably due to heavily nested or infinitely recursive function
calls, or a tail call that SBCL cannot or has not optimized away.

这是我的代码:

kill(all); 
load(physical_constants); 
load(unit); 
setunits([kg,m,s,N]); 
showtime: false;

α: 30*%pi/180; 
/*α: 30*°;*/ 
masse: 1000*kg; 
g: 9.80665*m/(s*s); 
b: 0.3*m; 
B: 0.5*m; 
L: 0.1*m;

F_g: masse*g; 
F_H: masse * g;

kill(S, x); 
S: solve(0=F_H-2*x*sin(α), x); 
S: assoc(x, S);

kill(Ly, x); 
Ly: solve(tan(α)=x/(B/2), x); 
Ly: assoc(x, Ly);

kill(FN, x); 
FN: solve(0=H*B/2-x*(L+Ly)+S*sin(α)*B/2+S*cos(α)*Ly, x); 
FN: assoc(x, FN);

如果我直接“计算”,则可以:

kill(all); 
load(physical_constants); 
load(unit); 
setunits([kg,m,s,N]); 
showtime: false;

kill(FN, x); 
FN: solve([α=30*%pi/180, H=196133/40*N,
           B=0.5*m, L=0.1*m, 
           Ly=sqrt(3)/12*m, S=196133/20*N,
           0=H*B/2-x*(L+Ly)+S*sin(α)*B/2+S*cos(α)*Ly], 
          [x, α, H,  B, L, Ly, S]); 
FN: assoc(x, FN[1]); 
FN: float(FN);

(FN)    1934473685/128529*N
maxima wxmaxima
1个回答
0
投票
[很遗憾,unit程序包有一段时间没有更新。我建议改用包ezunits,其中尺寸数量用反引号表示。要求解方程,请尝试dimensionally,它会经过一些回转,以帮助其他具有尺寸量的功能,例如dimensionally (solve (...))。 (请注意,dimensionally没有记录,对此缺点,我们深感抱歉。)

我对您的程序进行了一些修改,以删除一些不需要的内容,并使用有理数代替浮点数; Maxima通常比有浮点数更适合使用有理数和整数。这是程序:

linel: 65 $ load(ezunits) $ α: 30*%pi/180; masse: 1000`kg; g: rationalize(9.80665)`m/(s*s); b: 3/10`m; B: 5/10`m; L: 1/10`m; F_g: masse*g; F_H: masse * g; S: dimensionally (solve(0=F_H-2*x*sin(α), x)); S: assoc(x, S); Ly: dimensionally (solve(tan(α)=x/(B/2), x)); Ly: assoc(x, Ly); FN: dimensionally (solve(0=H*B/2-x*(L+Ly)+S*sin(α)*B/2+S*cos(α)*Ly, x)); FN: assoc(x, FN); subst (x = S, F_H-2*x*sin(α)); subst (x = Ly, tan(α)=x/(B/2)); subst (x = FN, H*B/2-x*(L+Ly)+S*sin(α)*B/2+S*cos(α)*Ly); ratsimp (expand (%));

这是我得到的输出。请注意,我将解决方案代入方程式中进行验证。看起来像预期的那样工作。

(%i2) linel:65 (%i3) load(ezunits) (%i4) α:(30*%pi)/180 %pi (%o4) --- 6 (%i5) masse:1000 ` kg (%o5) 1000 ` kg (%i6) g:rationalize(9.80665) ` m/(s*s) 5520653160719109 m (%o6) ---------------- ` -- 562949953421312 2 s (%i7) b:3/10 ` m 3 (%o7) -- ` m 10 (%i8) B:5/10 ` m 1 (%o8) - ` m 2 (%i9) L:1/10 ` m 1 (%o9) -- ` m 10 (%i10) F_g:masse*g 690081645089888625 kg m (%o10) ------------------ ` ---- 70368744177664 2 s (%i11) F_H:masse*g 690081645089888625 kg m (%o11) ------------------ ` ---- 70368744177664 2 s (%i12) S:dimensionally(solve(0 = F_H-2*x*sin(α),x)) 690081645089888625 kg m (%o12) [x = ------------------ ` ----] 70368744177664 2 s (%i13) S:assoc(x,S) 690081645089888625 kg m (%o13) ------------------ ` ---- 70368744177664 2 s (%i14) Ly:dimensionally(solve(tan(α) = x/(B/2),x)) 1 (%o14) [x = --------- ` m] 4 sqrt(3) (%i15) Ly:assoc(x,Ly) 1 (%o15) --------- ` m 4 sqrt(3) (%i16) FN:dimensionally(solve(0 = (H*B)/2-x*(L+Ly) +(S*sin(α)*B)/2 +S*cos(α)*Ly,x)) 1 1 (%o16) [x = (----------------------------------------- ` --) 140737488355328 sqrt(3) + 351843720888320 2 s 2 (351843720888320 sqrt(3) H ` s 3/2 + 1150136075149814375 3 ` kg m)] (%i17) FN:assoc(x,FN) 1 1 (%o17) (----------------------------------------- ` --) 140737488355328 sqrt(3) + 351843720888320 2 s 2 (351843720888320 sqrt(3) H ` s 3/2 + 1150136075149814375 3 ` kg m) (%i18) subst(x = S,F_H-2*x*sin(α)) kg m (%o18) 0 ` ---- 2 s (%i19) subst(x = Ly,tan(α) = x/(B/2)) 1 1 (%o19) ------- = ------- sqrt(3) sqrt(3) (%i20) subst(x = FN,(H*B)/2-x*(L+Ly)+(S*sin(α)*B)/2+S*cos(α)*Ly) 1 1 (- ---------) - -- 4 sqrt(3) 10 1 (%o20) ((----------------------------------------- ` --) 140737488355328 sqrt(3) + 351843720888320 2 s 2 (351843720888320 sqrt(3) H ` s 3/2 H + 1150136075149814375 3 ` kg m) + -) ` m 4 2 690081645089888625 kg m + ------------------ ` ----- 281474976710656 2 s (%i21) ratsimp(expand(%)) 2 kg m (%o21) 0 ` ----- 2 s

© www.soinside.com 2019 - 2024. All rights reserved.