2015-06-23 51 views
4

我想改變在每個循環迭代符號變量的名稱,然後使用這些符號變量求解方程,例如:朱莉婭改變循環名稱,符號變量的使用

using SymPy 
for i in 1:5 
    p{i} = symbols("p"{i}, real=true,positive=true) 
    solve(p{i}^2-i^2) 
end 

所以我正在尋找創建一系列標量符號變量(因爲我不認爲有可能創建一個矢量值符號變量),每個變量都有不同的名稱 - p1,p2,p3,p4和p5 - 然後使用這些變量在方程求解器中。然而,大括號表示法似乎不適用於按照matlab命名茱莉亞。快速谷歌並沒有提出任何明顯的答案。有任何想法嗎?

+0

我不確定你在這裏要做什麼。你想在每次迭代時在數組「p」中存儲一個新值嗎? – spencerlyon2

+0

公平點。我編輯了我的問題,希望能夠澄清 - 我期待創建一些符號標量變量,然後在方程求解器中使用這些變量。花括號在matlab中用於命名循環中的變量,即,當i = 1時,p {i}指的是稱爲p1的變量。 –

+2

使用理解應該有效:'xs = [symbols(「x $ i」,real = true,positive = true)for i in 1:5]'。 'docs](https://github.com/jverzani/SymPy.jl/blob/master/examples/tutorial.md)在'solve' – jverzani

回答

3

在茱莉亞和大多數計算機語言中,如果你發現自己需要一堆數字變量x1,x2,x3,...,你可能需要一個數組。 在朱莉婭這可能是這樣的,(但請注意,我不知道我與SymPy做)

using SymPy 
pp=Sym[] 
for i in 1:5 
    p = symbols("x$i", real=true,positive=true) 
    push!(pp,p) 
    solve(pp[i]^2-i^2) 
end 

在這裏,我們開始與PP空的,但正確的類型;我們將每個符號推到pp的末尾;最後,我們可以用pp[i]這個幾乎是你的代碼,但沒有shift鍵的方法去找出pp的第i項。