如果我评估Solve[f[x,y]==0,x],我得到一堆解决方案,如:
{{x -> something g[y]}, {x -> something else}}等
现在我想将每个转换x->somethings成一个函数.通常,我的要求很低,我的功能f[x]最多是一个立方体,有简单的解决方案x.所以,我一直只是定义g1[y_]:=something,g2[y_]:=...等等,手动.
但是,对于我现在的函数,Solve输出一个运行4页长的复杂多项式,并且有4个这样的解.我试着使用减少到简单的形式Simplify,Collect,Factor等等,但它只是似乎束缚.
有没有办法可以自动将它们分配给函数?(滚动页面并复制每个页面非常困难......我必须寻找下一个页面开始的位置!)
像这样的东西:{g1[y_], g2[y_], g3[y_]} = output of Solve?
看来西蒙打败了我一个答案(我很高兴StackOverflow给了我一个弹出窗口让我知道!),因此我将采取不同的方法.您应该知道如何直接使用Solve的输出,因为很多次这样做会很方便.
从...开始
ClearAll[a, x, sols]
sols = Solve[x^2 + a x + 1 == 0, x]
Run Code Online (Sandbox Code Playgroud)
这是你可以做的一些事情.
x供a == 7x /. sols /. a -> 7
Run Code Online (Sandbox Code Playgroud)
Evaluate 这里使用的不仅仅是基本功能,而是允许Plot功能分别设置每个解决方案的样式
Plot[Evaluate[x /. sols], {a, 1, 4}]
Run Code Online (Sandbox Code Playgroud)

a为第二个解决方案定义新功能注意使用=而不是:=在这里
g[a_] = x /. sols[[2]]
Run Code Online (Sandbox Code Playgroud)
MapIndexed[(gg[#2[[1]]][a_] := #) &, x /. sols]
Run Code Online (Sandbox Code Playgroud)
然后该函数与语法一起gg[1][17]用于表示第一个解决方案,和a == 17
Plot[gg[1][a], {a, 1, 4}]
gg[2] /@ {1, 2, 3}
Run Code Online (Sandbox Code Playgroud)
这些用途通常要求a(在此示例中)保持未分配状态.
| 归档时间: |
|
| 查看次数: |
10692 次 |
| 最近记录: |