我想創建一個函數,使用元編程計算方程組的殘差。使用元編程的方程組
這是我已經試過到目前爲止(例如玩具):
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
然而,當我嘗試計算功能,朱莉婭說,變量x
沒有定義。但是如果我包含一個println(parse("ou[$i] = x[$i]^2 + x[$i]"))
,我會得到在函數體內「鍵入」的代碼(對不起,如果我沒有使用正確的技術CS術語,我來自「科學文化」)。
無論如何,看起來parse
ed x
住在另一個範圍內。我怎樣才能將解析的x
帶到函數的作用域,使它代表syst!
參數中的x
?
獎勵:我有一個700個方程組的系統,他們可以使用元編程進行「輸入」,創建一個計算系統殘差的函數的最佳方法/技巧是什麼?我在正確的軌道上?
它處於預alpha階段,但是一個新的Dolang.jl包旨在做到這一點。主要的API將是'make_method'函數,該函數接受一些Julia表達式,允許的變量,其他函數參數併爲您輸出函數。我指的方法是[here](https://github.com/EconForge/dolang/blob/827ee3d200d35709b8e112b90f8703223834bf75/src/compiler.jl#L132-L144) – spencerlyon2
爲什麼你使用元編程?如果你只是取出'eval(parse(「''和相應的''))''並移除'$'符號,這個例子就可以工作。 – StefanKarpinski