试图将半复数数学公式转换为Javascript

时间:2016-08-01 16:33:20

标签: javascript function math

我是新手,刚刚开始尝试编写我自己的应用程序,我的第一个是计算器,但我遇到了数学函数的问题。我有一个公式,我已经实现了一个Javascript函数,但无论我做什么。我似乎无法获得正确的返回值。

以下是配方(用于药物转换):

enter image description here

美沙酮Fudin因子(由Jeffrey Fudin博士和Jason Andrew Fudin,B.Eng。,MS开发) 将吗啡转化为美沙酮的配方:

美沙酮mg = X / 21 {5.7-3 * sin [90 /((110 / x)5 + 1)] - sin [90 /((320 / x)7 + 1)]}

X是输入参数(吗啡数量)

我的代码:

function MethadoneConvert (input){
console.log("Methadone Convert Input = "+input);
    var drug;
    var pre1 = 110/input;
    var sin1 = Math.pow(110/input,5)+1;
    var sin2 = 3*Math.sin(sin1);
    var sin3 = Math.pow(320/input,7)+1;
    var sin4 = 90/sin1;
    var sin5 = 90/sin3;
    var sin6 = Math.sin(sin4);
    var sin7 = Math.sin(sin5);
    var sin8 = 3*sin6;
    input = input/21;
    var input2 = 5.7-sin8-sin7;
    drug = input*input2;
    console.log("MethadoneConvert result =  " + drug);
    return drug;
}

30mg应该返回8.1mg,此刻它返回所有错误的数字。

我尝试使用较少的步骤更简单地修改代码,但它也没有用,显然我对数学代码的理解非常有限。

感谢任何帮助,这个计算器用于帮助医生。

编辑:var sin2是冗余的,而且是在var sin8上完成的,为我对程序中实现数学的明显严重低级理解道歉,目前30为X返回7.56。

回报也向下跌至50并回到60,这不应该发生,相关性应该是线性的。

1 个答案:

答案 0 :(得分:1)

将等式转换为代码的提示

  • 使用变量可以使等式更易于阅读。

  • 确保在使用trig函数之前转换为弧度。

  • 密切关注order of operations



function toRads(angle) {
  return angle * (Math.PI / 180);
}

function MethadoneConvert(x) {
  console.log("Methadone Convert Input  =", x, "mg");

  var sin1 = Math.sin(toRads(90 / (Math.pow(110 / x, 5) + 1)));
  var sin2 = Math.sin(toRads(90 / (Math.pow(320 / x, 7) + 1)));

  var output = x / 21 * (5.7 - 3 * sin1 - sin2);

  console.log("Methadone Convert Output =", output.toFixed(1), "mg");
  return output;
}

MethadoneConvert(30);