我需要一个公式的帮助

时间:2013-11-23 17:05:18

标签: javascript math natural-logarithm

var a = document.forms[0].elements[0].value;
var b = document.forms[0].elements[1].value;
var c = document.forms[0].elements[2].value;
var d = document.forms[0].elements[3].value;
var Xp = document.forms[0].elements[4].value;
var Yp = document.forms[0].elements[5].value;

document.forms[0].elements[7].value = a/c;

document.forms[0].elements[8].value = (b*c-a*d)/(c*c);

document.forms[0].elements[9].value = c;

document.forms[0].elements[10].value = d;

document.forms[0].elements[11].value = Yp-(a/c*Xp)-((b*c-a*d)/(c*c)*(Math.log(Math.abs(c*Xp+d))));` 

元素11应为-1,但我得到6.20。我明白错误是从Math.log到; Math.log是自然对数吗?因为我必须这样做

2 个答案:

答案 0 :(得分:0)

请参阅Math.log的文档:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/log

要获得进一步的帮助,您应该询问您的数学老师或了解算法的人;-P

也许你应该看到这个部分: ((b*c-a*d)/(c*c)*(Math.log(Math.abs(c*Xp+d)))) 你希望像(x/(z*y))((x*y)/z)那样完成大括号。

答案 1 :(得分:0)

编辑:使用表单输入数据工作代码

<!DOCTYPE html>
<html>
<body>

<script>

function foo (form)
{


var a = form.elements[0].value
var b = form.elements[1].value;
var c = form.elements[2].value;
var d = form.elements[3].value;
var Xp = form.elements[4].value;
var Yp = form.elements[5].value;
var z = ((c*1)*(Xp)+(d*1));

var K = Yp-(a/c*Xp)-((b*c-a*d)/(c*c)*(Math.log(Math.abs(z))));
alert(K);

}

</script>

<form id="frm1" action="" method = "Get">
  a: <input type="number" name="a" value="1"><br>
  b: <input type="number" name="b" value="-3"><br>
  c: <input type="number" name="c" value="1"><br>
  d: <input type="number" name="d" value="4"><br>
  Xp: <input type="number" name="Xp" value="1"><br>
  Yp: <input type="number" name="Yp" value="-11.2661"><br>
  <input type="button" id = "Submit" value="Read" onClick="foo(this.form)"/>
</form> 


</body>

</html>

问题与(c * Xp + d)有关。你看到的不是评估(1 + 4)= 5,而是代码看到c d和Xp作为字符串,并且在向另一个字符串添加一个字符串时出现了(1 + 4)= 14。 使用z =((c * 1))*(Xp)+(d * 1))必须以某种方式将值转换为double,以便它们评估为5的正确数字。