gpt4 book ai didi

wolfram-mathematica - 如何直接从Solve的输出创建函数

转载 作者:行者123 更新时间:2023-12-04 04:08:02 24 4
gpt4 key购买 nike

如果我评估Solve[f[x,y]==0,x],则会得到很多解决方案,例如:
{{x -> something g[y]}, {x -> something else}}

现在,我想将每个x->somethings转换为一个函数。通常,我的要求很低,并且我的函数f[x]最多是三次,并为x提供了简单的解决方案。所以我一直只是手动定义g1[y_]:=somethingg2[y_]:=...等。

但是,对于我现在拥有的函数,Solve输出一个运行4页长的复杂多项式,并且有4种这样的解决方案。我尝试使用SimplifyCollectFactor等将其简化为更简单的形式,但这似乎是不可简化的。

有没有一种方法可以自动将它们分配给功能? (滚动浏览页面并复制每一页面非常困难……而我必须寻找下一页的开始位置!)

像:{g1[y_], g2[y_], g3[y_]} = output of Solve

最佳答案

看来Simon击败了我一个答案(我很高兴StackOverflow给我一个弹出窗口让我知道!),因此我将采用另一种方法。您应该知道如何直接使用Solve的输出,因为这样做会很方便。

从...开始

ClearAll[a, x, sols]

sols = Solve[x^2 + a x + 1 == 0, x]

您可以执行以下操作。

查找 xa == 7解决方案
x /. sols /. a -> 7

绘制解决方案

此处, Evaluate并不是基本功能所必需的,而是允许Plot函数分别设置每个解决方案的样式
Plot[Evaluate[x /. sols], {a, 1, 4}]



为第二个解决方案定义一个新的 a函数

注意此处使用 =而不是 :=
g[a_] = x /. sols[[2]]

这是Simon为每个解决方案定义函数的方法的替代方法
MapIndexed[(gg[#2[[1]]][a_] := #) &, x /. sols]

然后将该函数与语法 gg[1][17]一起使用,以表示第一个解决方案,以及 a == 17
Plot[gg[1][a], {a, 1, 4}]

gg[2] /@ {1, 2, 3}

这些用途通常确实要求 a(在此示例中)保持未分配状态。

关于wolfram-mathematica - 如何直接从Solve的输出创建函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5319771/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com