我正在寻找一种编程语言和一种自动化以下问题的方法。 给定一个连接不同变量的公式,比如g = GM / r ^ 2,以及除一个变量之外的所有变量的值(g = 9.8,M = 5E25,G = 6.7E-11),如何编程一个例程: a)识别未知变量 b)象征性地解决公式 c)最后,用已知变量的值代替并解决未知的等式。 我远不是编程方面的专家,而且我想到的唯一一件事就是一个缓慢的过程,其中一个变量检查变量后面的变量哪一个尚未设置为一个值,并根据该变量使用公式的适当重新排列计算未知数。 (例如,在我们的例子中,程序在变量之后检查变量,直到它发现r是未知的。然后,它使用相同的公式但准备计算r,即r = sqrt(GM / g)) 我确信有一种快速优雅的语言可以做到这一点,但我无法弄明白。 在此先感谢您的帮助。
答案 0 :(得分:0)
对于这样一个简单的案例,你提出的方法是非常合适的。
"慢"进程可能需要大约10纳秒才能找到未知变量(使用编译语言),所以我不会那么担心。
实际上,符号计算程序能够导出显式公式,您可以在大多数编程语言中重写
g=GM/r²
G=gr²/M
M=gr²/G
r=√GM/g
// C code
if (g == 0) g= G * M / (r * r);
else if (G == 0) G= g * r * r / M;
else if (M == 0) M= g * r * r / G;
else r= Math.sqrt(G * M / g);
例如,免费的Microsoft Mathematics可以做到。但在这种特殊情况下,只需手动完成即可。
对于具有内置脚本的完全集成的解决方案,请考虑Mathematica,Mathcad,Maple and the like。
答案 1 :(得分:0)