我是新手,刚刚开始尝试编写我自己的应用程序,我的第一个是计算器,但我遇到了数学函数的问题。我有一个公式,我已经实现了一个Javascript函数,但无论我做什么。我似乎无法获得正确的返回值。
以下是配方(用于药物转换):
美沙酮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,这不应该发生,相关性应该是线性的。
答案 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);