如何使用NSolve或Solve与变量列表?

时间:2013-06-01 04:30:22

标签: math wolfram-mathematica

我试图解决这个问题:

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()的arraylist,每个元素都是Q.size()的arraylist,包含表达式的解决方案&#34; T = - (Q /(h * SA)) - T皮肤&#34;

我不想写NSolve Qforced ^ 2次。 我经常遇到这个问题而且我似乎无法找到解释我想要做什么的文档。任何想法?

提前致谢!

1 个答案:

答案 0 :(得分:2)

您想要解决所有可能的指数组合的等式吗?如果是这样,您可以使用Outer[]来避免编写方程N ^ 2次

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

如果您需要选择NSolve为您提供的输出的某些部分(如果有多个解决方案),您可以将NSolve[...]&更改为NSolve[...][[part]]&其中{{1} }}是一个Part[]规范。