问题描述
我正在尝试为“mu”求解方程“eq”。我如何告诉 maxima 我只想要积极的结果,这是最好的方法list
吗?
但是,我的主要问题是,结果包含 var : abs(mu),res;
,它来自哪里?难道它不应该在 %i
中解决,而不需要复数,就像我在“手工”计算中演示的那样?
算术解决方案:
R
数值解:
(%i16) eq: RN^2 = R^2+N^2;
(eq) (121*G^2*h2^2*t1^2)/(100*h1^2*t2^2)=(G^2*v^2)/(4*mu^2)+G^2/4
(%i20) res: solve(eq,mu); var : abs(mu),res; expand(var); res,numer;
(res) [mu=-(5*%i*h1*t2*v)/sqrt(25*h1^2*t2^2-121*h2^2*t1^2),mu=(5*%i*h1*t2*v)/sqrt(25*h1^2*t2^2-121*h2^2*t1^2)]
(var) 5*abs(h1)*abs(t2)*abs(1/sqrt(25*h1^2*t2^2-121*h2^2*t1^2))*abs(v)
(%o19) 5*abs(h1)*abs(t2)*abs(1/sqrt(25*h1^2*t2^2-121*h2^2*t1^2))*abs(v)
(%o20) [mu=-(5*%i*h1*t2*v)/(25*h1^2*t2^2-121*h2^2*t1^2)^0.5,mu=(5*%i*h1*t2*v)/(25*h1^2*t2^2-121*h2^2*t1^2)^0.5]
手工求解(否定结果省略): https://www.bilder-upload.eu/bild-07c372-1620053087.png.html
解决方法
如果我没记错的话,结果只有在 121*h2^2*t1^2 > 25*h1^2*t2^2
时才是真实的。
所以:
eq: (121*G^2*h2^2*t1^2)/(100*h1^2*t2^2)=(G^2*v^2)/(4*mu^2)+G^2/4;
assume ( 121*h2^2*t1^2 > 25*h1^2*t2^2 );
solve( eq,mu);
=> [mu = -(5*h1*t2*v)/sqrt(121*h2^2*t1^2-25*h1^2*t2^2),mu = (5*h1*t2*v)/sqrt(121*h2^2*t1^2-25*h1^2*t2^2) ]
你是如何发现这种神奇的不等式的?好吧,你在没有它的情况下运行 solve
并注意有一个平方根可能有一个负参数......
至少部分故事是 Maxima 将 sqrt(-b^2/(c - a))
简化为 %i*abs(b)/sqrt(c - a)
而不是 abs(b)/sqrt(a - c)
。另一方面,sqrt(b^2/(a - c))
简化为 abs(b)/sqrt(a - c)
。
我在想,获得不含 %i
的结果的一种方法可能是将 sqrt(-b^2/(c - a))
重新排列为 sqrt(b^2/(a - c))
,然后让内置的简化器处理它。 (tellsimp
实现了这一点——在内置简化器之前应用了 tellsimp
规则,而在之后应用了 tellsimpafter
规则。)
我尝试了一些定义合适的 tellsimp
规则的尝试,但我无法找到适用于给定示例的内容。如果有兴趣,我可以发布我的尝试。