0
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 是自然对数吗?因为我必须这样做

4

2 回答 2

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)))) Maye 您想像(x/(z*y))or一样完成大括号((x*y)/z)

于 2013-11-23T17:07:29.393 回答
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,而是将 cd 和 Xp 视为字符串,并得出 (1+4) = 14 将一个字符串添加到另一个字符串。使用 z = ((c*1))*(Xp) + (d*1)) 必须以某种方式将值转换为双倍,以便它们评估为正确的数字 5。

于 2013-11-24T15:15:27.157 回答