根据我的经验(数周的编码),编写可以重新排列方程式的自己的程序非常耗时。在这种情况下你应该避免它。
但是,我也不建议手动编码排列,因为有很多代码可以检查错误。就像在问题的第二个等式中遗漏了 a 一样。此外,它也很难添加新的方程。
我认为你应该使用一个外部方程求解程序,如 maxima、matlab、mathematika 等。将所有可能的组合未知数输入它们以使用 2 个现有方程求解。(第三个等式取决于前两个,所以你会离开它)
最大值代码如下所示
solve([vf = vi + a*t, y= vi*t + .5*a*t^2], [vi,vf]);
solve([vf = vi + a*t, y= vi*t + .5*a*t^2], [vi,y]);
solve([vf = vi + a*t, y= vi*t + .5*a*t^2], [vi,t]);
solve([vf = vi + a*t, y= vi*t + .5*a*t^2], [vi,a]);
solve([vf = vi + a*t, y= vi*t + .5*a*t^2], [vf,y]);
solve([vf = vi + a*t, y= vi*t + .5*a*t^2], [vf,t]);
solve([vf = vi + a*t, y= vi*t + .5*a*t^2], [vf,a]);
solve([vf = vi + a*t, y= vi*t + .5*a*t^2], [y,t]);
solve([vf = vi + a*t, y= vi*t + .5*a*t^2], [y,a]);
solve([vf = vi + a*t, y= vi*t + .5*a*t^2], [t,a]);
由于涉及二次方程,您会得到很多 +- 答案,其中很多显然是不正确的(例如返回负时间)。您可以通过手动选择正确的 +- 解决方案,因为数量不多。
或者,自动解决方案将从示例数字开始,求解原始方程,并丢弃任何不给出相同数字的解方程。