gpt4 book ai didi

c++ - 用已知公式求解缺失变量

转载 作者:行者123 更新时间:2023-11-28 03:21:53 25 4
gpt4 key购买 nike

这就是我目前正在做的,但我只是想知道是否有更好的方法?

我的 Kinematic Variable 类只包含一个 long double 值和一个 bool 变量是否已设置。我重载了 = 赋值运算符。

// v_f = v_o + a*t
bool KinematicEquations::equation_vat(KinematicVariable &vo, KinematicVariable &vf,
KinematicVariable &a, KinematicVariable &t)
{
if (vf.isUsed() && vo.isUsed() && a.isUsed())
t = (vf.value() - vo.value()) / a.value(); // t = (vf - vo)/a
else if (vf.isUsed() && vo.isUsed() && t.isUsed())
a = (vf.value() - vo.value()) / a.value(); // a = (vf - vo)/t
else if (vf.isUsed() && t.isUsed() && a.isUsed())
vo = vf.value() - a.value() * t.value(); // vo = vf - a*t
else if (vo.isUsed() && t.isUsed() && a.isUsed())
vf = vo.value() + a.value() * t.value(); // vf = vo + at
else
return false;

return true;
}

最佳答案

我会考虑的是,对于 t = 0 和/或 a = 0,这个等式或多或少是无用的。它导致 vo = vf。所以,我会说先检查它们。具有物理学知识的用户可能会思考如果 t 或 a 为零,则您必须为它们求解:

bool KinematicEquations::equation_vat(KinematicVariable &vo, KinematicVariable &vf,
KinematicVariable &a, KinematicVariable &t)
{
if (t == 0)
t = (vf.value() - vo.value()) / a.value(); // t = (vf - vo)/a
else if (a == 0)
a = (vf.value() - vo.value()) / a.value(); // a = (vf - vo)/t
else if (vf.isUsed())
vo = vf.value() - a.value() * t.value(); // vo = vf - a*t
else if (vo.isUsed())
vf = vo.value() + a.value() * t.value(); // vf = vo + at
else
return false;

return true;
}

这样做至少可以为您节省一些操作。将变量初始化为 0 如果它们还没有被使用它们将有 0 并且一切都很好。此外,当您到达最后两个时,您已经确定使用了 at,因此无需检查。我认为这是一个基于用户感知知识的公平解决方案。

关于c++ - 用已知公式求解缺失变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15183167/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com