WxMaxima 求解方程导致复数?

问题描述

我正在尝试为“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 规则的尝试,但我无法找到适用于给定示例的内容。如果有兴趣,我可以发布我的尝试。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...