Wolfram mathematica 解变量平方的方程?

Wolfram mathematica 解变量平方的方程?,wolfram-mathematica,Wolfram Mathematica,给出一个表达式(多项式或任何一般方程),如 我想求解s^2,得到s^2=-b/a。我们都知道一个人不能只写 Solve[eq==0,s^2] 因为s^2不是“变量”。只有s是“变量”。所以我要做的是 eq = a s^2+b; sol = First@Solve[eq==0/.s^2->z,z]; z/.sol -(b/a) 我想知道是否有一种方法可以在不使用中间变量替换的情况下完成上述操作? 我尝试了许多命令,但没有成功(减少、收集、消除、因子等) 谢谢 --Nasser一种方法

给出一个表达式(多项式或任何一般方程),如

我想求解s^2,得到s^2=-b/a。我们都知道一个人不能只写

Solve[eq==0,s^2]
因为s^2不是“变量”。只有s是“变量”。所以我要做的是

eq  = a s^2+b;
sol = First@Solve[eq==0/.s^2->z,z];
z/.sol

-(b/a)
我想知道是否有一种方法可以在不使用中间变量替换的情况下完成上述操作? 我尝试了许多命令,但没有成功(减少、收集、消除、因子等)

谢谢
--Nasser

一种方法是求解
s
,然后将其平方

eq=a s^2+b;
sol=#^2 &@ (s/.Solve[eq==0,s])//DeleteDuplicates

Out[1]= {-(b/a)}
您可以使用,但它会导致其他问题。 这是你的原始方程:

In[1]:= Solve[b + a s^2 == 0, s^2]
During evaluation of In[1]:= Solve::ivar: s^2 is not a valid variable. >>
Out[1]= Solve[b + a s^2 == 0, s^2]
现在,
符号化
s^2,以便普通的Mathematica计算器将其视为任何其他符号

In[2]:= Needs["Notation`"]
In[3]:= Symbolize[ParsedBoxWrapper[SuperscriptBox["s", "2"]]]

In[4]:= Solve[b + a s^2 == 0, s^2]

Out[4]= {{s^2 -> -(b/a)}}
问题是,s^2实际上被视为另一个符号,例如

In[6]:= Sqrt[s^2] // PowerExpand
Out[6]= Sqrt[s^2]
解决方法是将s^2替换为s*s,因为
符号化
仅作用于用户输入的表达式(即在解释输入框结构的级别)


中间变量有什么问题?对我来说,这似乎是一个很好的解决方案——即使是两行。@Sam,我从来没有说过有什么不对劲?我只是想知道是否有一个命令可以在没有中间子命令的情况下执行。请注意,在上面的[3]中,是使用符号调色板创建的-因此您在Mathematica笔记本中看不到所有的
内容。Simon,如果您可以将
符号化
操作作为
模块
中的临时操作,我将对此投赞成票。否则,这就像是用大锤敲钉子。我认为更直接一点的是DeleteDuplicates[s^2/。Solve[a*s^2+b==0,s]]Out[89]={-(b/a)}
In[6]:= Sqrt[s^2] // PowerExpand
Out[6]= Sqrt[s^2]
In[7]:= Sqrt[s^2] /. s^2 -> s s // PowerExpand
Out[7]= s