2013-06-01 23 views
1

我試圖解決這個表達式:如何使用NSolve或與列表中的變量解決?

NSolve[Qforced == hFree*SA*(Tskin - T), T] 

但Qforced和hFree是變量,但同樣大小的列表,例如:{1,2,3,4};

我得到一個空的解決方案 「{}」,但如果我這樣做:

NSolve[Qforced[[1]] == hFree[[1]]*SA*(Tskin - T), T] 

我得到答案。我想要做的是這種(用Java編寫的):

ArrayList answerSets = new ArrayList<ArrayList<Double>>; 
for (int i = 0; i < Qforced.size(),i++){ 
    ArrayList<Double> temp = new ArrayList<Double. 
    for (int j = 0; k < hFree.size()){ 
    double Q = Qforced.get(i); 
    double h = hFree.get(j); 
    double T = -(Q/(h*SA)) - Tskin; 
    temp.add(T); 
    } 
    answerSets.add(temp); 
} 

answerSets將長度Q.size(),每一個元素是Q.size的ArrayList()包含解決的ArrayList表達式「T = - (Q /(h * SA)) - Tskin」

我討厭編寫NSolve Qforced^2次。 我遇到過這個問題很多,我似乎無法找到解釋我想要做什麼的任何文檔。有任何想法嗎?

在此先感謝!

回答

2

你想解決所有可能的指數組合方程?如果是這樣你可以使用Outer[]避免編寫公式N^2次

Outer[NSolve[#1 == #2 * SA * (Tskin - T), T]&, Qforced, hFree] 

如果你需要挑選出剛剛輸出的某些部分是NSolve給你(如果有多個解決方案),你可以改變NSolve[...]&NSolve[...][[part]]&其中partPart[]指定。

+0

完美,這正是我所需要的。蒂莫,非常感謝。 – tricknology

+0

剛剛意識到它不包括單位..說我正在解決一個斜坡a * x + b。 a應爲m/s^2,b應爲m/s。有沒有辦法做到這一點?輸入參數有單位。 使用Mathematica 9 – tricknology

+0

單位內置到Mathematica中。看看http://reference.wolfram.com/mathematica/guide/Units.html – Timo