gpt4 book ai didi

wolfram-mathematica - Mathematica 8中带有函数声明的问题

转载 作者:行者123 更新时间:2023-12-04 13:34:45 27 4
gpt4 key购买 nike

在此示例中,将函数定义为“functionB”时,这是一个奇怪的结果。有人可以解释吗?我想绘制functionB[x]functionB[Sqrt[x]],它们必须不同,但是此代码显示functionB[x] = functionB[Sqrt[x]],这是不可能的。

model = 4/Sqrt[3] - a1/(x + b1) - a2/(x + b2)^2 - a3/(x + b3)^4;
fit = {a1 -> 0.27, a2 -> 0.335, a3 -> -0.347, b1 -> 4.29, b2 -> 0.435,
b3 -> 0.712};
functionB[x_] := model /. fit

Show[
ParametricPlot[{x, functionB[x]}, {x, 0, 1}],
ParametricPlot[{x, functionB[Sqrt[x]]}, {x, 0, 1}]
]
functionB[x]必须与 functionB[Sqrt[x]]不同,但是在这种情况下,两行相同(这是不正确的)。

最佳答案

如果尝试使用?functionB,则会看到它存储为functionB[x_]:=model/.fit。因此,只要您现在有了functionB[y],对于任何y,Mathematica都会评估model/.fit,以获得4/Sqrt[3] - 0.335/(0.435 + x)^2 + 0.347/(0.712 + x)^4 - 0.27/(4.29 + x)

这与使用SetDelayed(即:=)有关。每次Mathematica看到functionB[x_]:=model/.fit模式时,都会重新评估f[_]的rhs。您已将模式命名为x是无关紧要的。

您想要的可以通过例如functionC[x_] = model /. fit。也就是说,通过使用Set(=)而不是SetDelayed(:=)来评估rhs。

希望这足够清楚(可能不是)...

关于wolfram-mathematica - Mathematica 8中带有函数声明的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6046626/

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