Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在图形坐标中查找最接近的值_Java_Algorithm_Graph - Fatal编程技术网

Java 在图形坐标中查找最接近的值

Java 在图形坐标中查找最接近的值,java,algorithm,graph,Java,Algorithm,Graph,我有Java中的列表对象,其中每个摘要对象包含两个字段-数量和天数 该数据被绘制到一个图表上,其中x轴为天,y轴为数量 我在图表上的参考点和所有进一步的计算都基于y0和y1 假设我的数据集如下 Y X 100 (y0) 0 90 (y1) 1 80 2 75 5 73 7 48 9 60 10 45 12 2简单规则- 1-选择最接近的值 2-如

我有Java中的
列表
对象,其中每个
摘要
对象包含两个字段-数量和天数 该数据被绘制到一个图表上,其中x轴为天,y轴为数量 我在图表上的参考点和所有进一步的计算都基于y0和y1 假设我的数据集如下

Y           X
100 (y0)    0
90  (y1)    1
80          2
75          5    
73          7
48          9
60          10
45          12
2简单规则- 1-选择最接近的值 2-如果正好介于两者之间,请选择较高的值

假设我想找出Y1的50%的X=(50*90)/100=45,这将产生8天

同样地,假设我想找出Y1=(80*90)/100=72的80%的X。因为我们在Y轴上没有精确的匹配,所以我们选择了收盘价73,这样我就有7天的时间(这里应用规则1)

同样,假设我想找出Y1的60%的X=(60*90)/100=54。因为我们在y轴上没有精确匹配,因为54正好在48和60的中间,这就产生了10(规则2)


在java中实现这一点的最佳方法是什么?有什么建议吗?

我想你是在找最低的。这将使一条直线与一条直线上或多或少的一系列点相匹配

我会用这些步骤来解决这个问题

  • 了解回归在做什么。它给出了一个最适合著名的直线方程,
    y=mx+b
    。x是你的一天,y是你的数量。m是直线的斜率(你的是负的,实际上是-4.124),b是截距(你的接近100,实际上是95.086)
  • 用Java编写线性回归。网上有很多这样的东西,你可以搜索,但是如果你从头开始写,你会成为一个更好的人
  • 使用步骤2的输出,稍微重新排列一下,然后根据y找到x
  • 在第3步的方程式中加上y(你的第一个例子:45),你会得到天数。(我得到的是12.14,不是你的8。注意最后一点是{12,45})
  • 四舍五入到列表中最近的一天