繁体   English   中英

如何基于y查找x值

[英]how to find x value based on y

我正在创建一个包含xy值的图形。 y axis正常,但x为对数值。 我使用了库( jfreechart.jar )来制作此对数图。

我的问题是,例如,如果y为10那么如何精确确定x的确切值呢? (x的值为对数)

private void interActionPerformed(java.awt.event.ActionEvent evt) {                                      


     final XYSeries s1 = new XYSeries("Series 1");
        s1.add(0.075,4.8);
        s1.add(0.15,13.9);
        s1.add(0.425,19.5);
        s1.add(0.6,22.1);
        s1.add(1.18,26.6);
        s1.add(2,29.5);
        s1.add(2.36,31.2);
        s1.add(4.75,38.6);
        s1.add(9.5,46.2);
        s1.add(19,62.4);
        s1.add(25,76.);
        s1.add(37.5,86.2);
        s1.add(50,100);

        final XYSeriesCollection dataset = new XYSeriesCollection();
    dataset.addSeries(s1);
        final JFreeChart chart = ChartFactory.createXYLineChart(
        "sieve analyese",          // chart title
        "sieve size",               // domain axis label
        "passing",                  // range axis label
        dataset,                  // data
        PlotOrientation.VERTICAL,
        true,                     // include legend
        true,
        false
    );
    final XYPlot plot = chart.getXYPlot();
    final LogarithmicAxis domainAxis = new LogarithmicAxis("particle size in milimeters");
    final NumberAxis rangeAxis = new NumberAxis("percent passing");
    plot.setDomainAxis(domainAxis);
    plot.setRangeAxis(rangeAxis);
     BarRenderer renderer = null;
     ChartFrame frame = new ChartFrame("sive chart", chart);
     frame.setVisible(true);
     frame.setSize(1000,600);
    chart.setBackgroundPaint(Color.lightGray);

    plot.setOutlinePaint(Color.RED);
}                              [chart of x and y value][1]

使用以下函数从y获取x的值

x = Math.log(y)

对于X的确切值,您应该知道Y(X)或X(Y)的确切依存关系(函数)。 对于现实生活中的数据,这种功能的种类通常是未知的,因此必须应用某种近似方法。

考虑到您的数据是单调的(递增的),您可以使用二进制搜索找到给定Y所在的区间索引。 对于示例数据,您会发现(0.075,4.8)和(0.15,13.9)之间的第0个间隔

然后应用一些插值方法。 最简单的方法- 线性插值

对于您的数据集,您可以使用精度更高的二次插值-使用3个最接近的点来构建抛物线方程 ,然后从该方程中获得给定Y的X。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM