- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我写的函数有问题。想法是使用 taylor
展开而不是 js
数学对象来计算 sin 和 cosin
值(在 radians
上运行) .这些是方程式:
sin(x) = (x^1)/1! - (x^3)/3! + (x^5)/5! - (x^7)/7! + (x^9)/9! - (x^11)/11! + ...
cos(x) = (x^0)/0! - (x^2)/2! + (x^4)/4! - (x^6)/6! + (x^8)/8! - (x^10)/10! + ...
我知道当我输入类似 myCos(10,2)
的内容时,由于迭代次数少,结果将不准确,但是我不明白为什么(例如)x = 10
结果在 iterNum = 6
时开始变为真实值,并在 iterNum = 80
时变为 NaN
。关键是,对于像 myCos/Sin(1-40, 5-50)
(或多或少)这样的范围,函数有效,但对于更大的数字,结果变为 NaN。不确定我的解释是否可以理解,但我希望是这样,只要继续在控制台中使用该功能,您就会明白问题出在哪里
这是我的代码:
function power(a,n) {
var result = 1;
for (var i = 0; i < n; i++) {
result = result * a;
}
return result;
}
function factorial(z) {
var result = 1;
for (var i = 1; i <= z; i++) {
result = result * i;
}
return result;
}
function mySin(x, iterNum) {
var sin = 0;
var n = 1;
for (var i = 0; i <= iterNum; i++) {
sin = sin + (power(x,n)/factorial(n) - power(x,n+2)/factorial(n+2));
n = n + 4;
}
console.log(sin + " = my function.");
console.log(Math.sin(x) + " math.sin");
}
function myCos(x, iterNum) {
var cos = 0;
var n = 0;
for (var i = 0; i <= iterNum; i++) {
cos = cos + (power(x,n)/factorial(n) - power(x,n+2)/factorial(n+2));
n = n + 4;
}
console.log(cos + " = my function.");
console.log(Math.cos(x) + " math.cos");
}
最佳答案
你遇到的问题是
> Infinity/Infinity
NaN
因此,当 power
和 factorial
产生的值大于 JavaScript 的 float 可以表示的值时,您将向总和添加 NaN
,并将其传播到结果。
你应该可以通过使用来修复它
for (var i = 0; i <= iterNum; i++) {
var member = power(x,n)/factorial(n) - power(x,n+2)/factorial(n+2);
if (isNaN(member)) // maybe || member === 0
break;
sin += member;
n += 4;
}
关于Javascript 正弦/余弦泰勒展开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39388107/
我写的函数有问题。想法是使用 taylor 展开而不是 js 数学对象来计算 sin 和 cosin 值(在 radians 上运行) .这些是方程式: sin(x) = (x^1)/1! - (x^
我不知道这是编程还是数学问题,但我整理了一些FFT的简短示例。我加载了440hz的波并在顶部添加了一些正弦波,但是由于某种原因,频谱中存在一个我不理解的“波”。 据我了解,频谱应该具有相同的| Y(f
这个问题在这里已经有了答案: Java Math.cos(Math.toRadians()) returns weird values (4 个答案) 关闭 10 年前。 我正在编写一个程序,我必须
我想在 ios4 中实现一个正弦和余弦计算器: if([operation isEqual:@"sin"]){ operand = (operand*M_PI/180.0); oper
我使用 256 个元素为 VHDL 制作了一个正弦 LUT。 我使用 MIDI 输入,因此值范围为 8.17Hz(注 #0)到 12543.85z(注 #127)。 我有另一个 LUT 计算必须发送到
我想在ios4中实现一个正弦和余弦计算器: if([operation isEqual:@"sin"]){ operand = (operand*M_PI/180.0); operan
我是一名优秀的程序员,十分优秀!