循环中的 Javascript 赋值乘法运算符作为数学函数

标签 javascript math

我在循环中进行以下计算:

https://jsfiddle.net/0xLvxjar/

var i = 0;
var times = 200;
var friction = 0.9925;
var velocity = 10;
var position = 100;

for (; i < times; i += 1) {
    velocity *= friction;
    position += velocity;
}

console.log(velocity) // 2.218723008169958 
console.log(position) // 1129.722321918849

我想将其重写为数学函数,并尽可能消除循环。

查看 JavaScript 数学对象:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math我没有看到可以处理此问题的方法。

是否有使用数学公式获得最终结果的更好方法?

最佳答案

用数学求解:

// v_1 = v_0 * f
// p_1 = p_0 + v_1
// 
// p_2 = p_1 + v_1 * f
//     = p_0 + v_1 + v_1 * f
//     = p_0 + v_0 * f + v_0 * f * f
//     = p_0 + v_0 * (f + f^2)

此时您可能会看到 p_n = p_0 + v_0 * (f + f^2 + f^3 + ... + f^n)

根据您的处方集,您可能知道这是真的:

Formula

因此 p_n = p_0 + v_0 * f * (1 - f^n)/(1 - f)

转移到 JavaScript 你会得到这个:

var n = 200;
var friction = 0.9925;
var velocity_0 = 10.0;
var position_0 = 100.0;

var velocity_n = velocity_0 * Math.pow(friction, n);
var position_n = position_0 + velocity_0 * friction * (1 - Math.pow(friction, n)) / (1 - friction);


alert(velocity_n);
alert(position_n);

关于循环中的 Javascript 赋值乘法运算符作为数学函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29184696/

相关文章:

javascript - 从 Date 设置 datetime-local 的值

javascript - 转译后自定义元素在 IE 11 中不起作用

二进制值的 Python 字符长度

java - 用于查看一个点是否在给定三对坐标的线上的最佳方法?

javascript - Kineticjs DragBoundFunc 用于矩形中的矩形

javascript - _.groupBy momentjs 格式返回键未定义

javascript - 如何在javascript中单击超链接时更改图像?

algorithm - 检查经度/纬度坐标是否位于嵌入式设备的复杂多边形内?

java - 计算具有两个变量的单个简单方程的解集的算法

iphone - 如何在矩形中填充一条线