【问题标题】:Reversible functions in JavascriptJavascript中的可逆函数
【发布时间】:2013-12-02 21:23:21
【问题描述】:

我制作了很多等值线图,我需要一个自定义函数来接受数据集中的值并返回相应的颜色。例如,从 1 到 10,000 对数分布的数据可能需要此函数:

var colors = ["#ffffcc","#c2e699","#78c679","#31a354","#006837"];
function val_to_index(val) {
    var index = Math.floor(Math.log(val) / Math.log(10));
    return colors[index];
}

当自动构建图例的文本时,我需要反向功能:

function index_to_val(index) {
    return Math.pow(10, index);
}
var legend_labels = [0,1,2,3,4].map(index_to_val);

当它是像对数/指数这样简单的东西时,编写这两个函数并不麻烦。但是当它更复杂时,它变得非常乏味。例如:

    // divisions of 50,100,500,1000,5000,etc
function val_to_index(v) {
    var lg = Math.log(v) / Math.log(10);
    var remainder = lg % 1 > (Math.log(5) / Math.log(10)) ? 1 : 0;
    var index = return Math.floor(lg) * 2 - 3 + remainder;
    return colors[index];
}

function index_to_val(index) {
    index += 3;
    return Math.pow(10, Math.floor(index/2)) * Math.pow(5, index%2);
}

在中学代数中,我们学会了通过反转 x 和 y 变量并求解 y 来自动反转函数(当然,这仅适用于某些函数)。我的问题是:计算机科学中是否有等效的操作?

【问题讨论】:

    标签: javascript function theory


    【解决方案1】:

    自动查找函数的逆需要某种计算机代数求解器 (CAS) 库。但是,如果您总是进行正向操作,则可能有一种更简单的方法;不是丢弃原始数据,而是将原始值和计算结果一起包装在一个对象中。这样,计算逆只需要检索包含原始值的字段。

    【讨论】:

      猜你喜欢
      • 2022-11-18
      • 2011-05-15
      • 1970-01-01
      • 2012-04-23
      • 2013-11-04
      • 1970-01-01
      • 2017-07-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多