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是自然对数吗?因为我必须这样做
答案 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的正确数字。