WxMaxima 解方程得出复数?

WxMaxima solving Equation leads to complex numbers?

我正在尝试求解“mu”的方程式“eq”。我怎么告诉maxima我只想要阳性结果,这是最好的方法吗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]

数值解:

(%i26)  t1: 64`mm;
    t2: 33`mm;
    h1: 47`mm;
    h2: 28`mm;
    v: 2;
(t1)    64 ` mm
(t2)    33 ` mm
(h1)    47 ` mm
(h2)    28 ` mm
(v) 2
(%i42)  res: solve(eq,mu); var : abs(mu), res; var, numer; 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)   1410/sqrt(2714239)
(%o41)  0.8558449047226222
(%o42)  [mu=-(0.8558449047226222*%i)/(-1)^0.5,mu=(0.8558449047226222*%i)/(-1)^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 规则,但我无法找到适用于给定示例的规则。如果有兴趣,我可以 post 我的尝试。