gpt4 book ai didi

metaprogramming - 使用元编程的方程组

转载 作者:行者123 更新时间:2023-12-04 07:11:23 25 4
gpt4 key购买 nike

我正在尝试使用元编程创建一个函数来计算方程组的残差。

这是我到目前为止尝试过的(玩具示例):

function syst!(x::Vector, ou::Vector)
for i in 1:length(x)
eval(parse("ou[$i] = x[$i]^2 + x[$i]"))
end
return ou
end

但是,当我尝试计算该函数时,Julia 说变量 x 未定义。但是如果我包含一个 println(parse("ou[$i] = x[$i]^2 + x[$i]")) 我得到的代码将被“键入”函数的主体(抱歉,如果我没有使用正确的 CS 技术术语,我来自“科学文化”)。

无论如何,parseed x 似乎存在于另一个范围内。我怎样才能将解析的 x 带到函数的范围内,以便它代表 syst! 的参数中的 x

奖励:我有一个包含 700 个方程的系统,可以使用元编程对它们进行“输入”,创建计算系统残差的函数的最佳方法/技术是什么?我走在正确的轨道上吗?

最佳答案

Stefan 的评论是正确的;在此特定示例中,不需要元编程。但是,如果您想生成许多类似于 ou[i] = x[i]^2 + x[i] 但有复杂方式不同的行,您可以使用宏生成它们。参见 http://docs.julialang.org/en/release-0.4/manual/metaprogramming/ .宏扩展为“就地”生成的代码,就像您自己键入代码一样,因此变量可以引用周围的范围。

关于metaprogramming - 使用元编程的方程组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38338952/

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