1

我正在使用 Modelica 解决传热问题的方程组,其中一个是辐射,写为

Ta^4-Tb^4 

有人可以说它是否在计算上更快地解决了一个方程,方程写为:

(Ta-Tb)(Ta+Tb)(Ta^2+Tb^2)

?

4

2 回答 2

2

这个问题不可能有一个确定的答案。这是因为 Modelica 规范用于正式定义问题陈述,但它没有说明工具如何解决此类方程。此外,由于大多数 Modelica 工具无论如何都会进行符号操作,因此很难预测它们可能对这样的方程采取什么步骤。例如,一个工具可以很好地自行将其转换为霍纳多项式(无需您的手动干预)。

如果要在非线性系统等方程中求解温度,请注意负温度解。当这些温度是非线性问题中的迭代变量时,您应该调查“开始”属性以指定初始(正)猜测。

于 2011-12-17T10:40:29.710 回答
1

我会说有两个原因将其拆分为 (Ta-Tb)(Ta+Tb)(Ta^2+Tb^2) 是慢而不是快。

  1. (Ta^2+Tb^2) 需要 2 次乘法和 1 次加法,这意味着 (Ta-Tb)(Ta+Tb)(Ta^2+Tb^2) 需要 4 次乘法和 3 次加法。另一方面,我猜 Ta^4-Tb^4 是这样完成的: ((Ta^2)^2 - (Tb^2)^2) 这意味着 1 次加法和 4 次乘法。

  2. Mathematica 就像一个更通用的编译器,大概知道如何优化这些非常简单的表达式。这意味着使用简单的模式在计算时间方面通常更安全,这些模式很容易被捕获并翻译成超高效的机器代码。

我可能显然错了,但我看不出 (Ta-Tb)(Ta+Tb)(Ta^2+Tb^2) 可能更快的任何原因。希望能帮助到你。

奥斯卡

于 2011-12-15T09:21:50.290 回答