現在我有代碼,其中一些函數func
以我想要的方式執行,當我在其定義中給出特定參數時(所以我使它func[x1_,x2_]:=...
然後我使它func[x1_,x2_,x3_]:=...
沒有改變任何東西,它的工作方式,我希望它)。有沒有辦法自動替換我爲這個函數指定的參數?如何在Mathematica中有一個可變參數列表
UPDATE:
我沒有找出問題的代碼還沒有,但這裏的代碼沒有做什麼,我想:
(* Clear all stuff each time before running, just to be safe! *)
\
Clear["Global`*"]
data = {{238.2, 0.049}, {246.8, 0.055}, {255.8, 0.059}, {267.5,
0.063}, {280.5, 0.063}, {294.3, 0.066}, {307.7, 0.069}, {318.2,
0.069}};
errors = {{x1, 0.004}, {x2, 0.005}};
getX[x1_, x2_] := 1/x2^2
getY[x__] =
Evaluate[Simplify[
Sqrt[Sum[(D[getX[x], errors[[i]][[1]]] errors[[i]][[2]])^2, {i,
Length[errors]}]]]]
map[action_, list_] := action @@@ list
y = map[getY, data];
y
getY[2, 3]
這個代碼在這裏所做的:(y的給{67.9989, 48.0841, 38.9524, 31.994, 31.994, 27.8265, 24.3525, 24.3525}
)
(* Clear all stuff each time before running, just to be safe! *) \ Clear["Global`*"]
data = {{238.2, 0.049}, {246.8,
0.055}, {255.8, 0.059}, {267.5,
0.063}, {280.5, 0.063}, {294.3, 0.066}, {307.7, 0.069}, {318.2,
0.069}}; errors = {{x2, 0.004}, {x1, 0.005}};
getX[x1_, x2_] := 1/x2^2
getY[x1_, x2_] := Evaluate[Simplify[ Sqrt[Sum[(D[getX[x1, x2], errors[[i]][[1]]]
errors[[i]][[2]])^2, {i, Length[errors]}]]]]
map[action_, list_] := action @@@ list
y = map[getY, data]; y
getY[2, 3]
更新2:
我的數學:
我打算採取getX
函數的所有的偏導數的平方之和的平方根。因此getY
函數的主體。然後我想評估該表達式的不同值x1
和x2
。因此我有getY
的論據。
問題出在'getY'上。因爲'getX'只能「理解」兩個變量,'getY'中的表達式'getX [x]'會有問題。因此,您需要定義將getY變量應用於兩個以上變量時的期望值,然後確定getX必須扮演什麼角色。例如,給定列表,「{a,b,c}」是依賴於列表中連續項的總和中的每一項,也就是說,如果你在「{{a,b},{b,c} }'? – rcollyer 2011-04-21 17:17:08
@ rcollyer每個術語獨立於連續的術語。我不確定「將getY應用於2個以上的變量」是什麼意思? – wrongusername 2011-04-21 17:24:08
我認爲如果你發佈數學,它會容易得多。 – 2011-04-21 17:24:12