gpt4 book ai didi

java - 从java中的excel获取多项式函数的值

转载 作者:太空宇宙 更新时间:2023-11-04 08:44:30 27 4
gpt4 key购买 nike

我有一个 Excel 图表,它代表一天内的一些值。所以我添加了引用函数,我得到了这样的结果:

y = 1E-13x6 - 2E-10x5 + 8E-08x4 - 1E-05x3 + 0,0004x2 + 0,0275x + 8,414

我的数据集中的一个度量是:

09:36:21 => 5,27

我需要知道的第一件事是如何将时间戳转换为提供给函数的值。经过一些单元格值转换后,我发现 Excel 给出的时间戳表示在 0.00000 和 0.99999 之间,因此例如 09:36:21 是 0.400243055555556。然后我编写了一些 java 测试脚本:

double x = 0.400243055555556;
double x6 = (1*Math.pow(10, -13))*Math.pow(x, 6);
double x5 = (2*Math.pow(10, -10))*Math.pow(x, 5);
double x4 = (8*Math.pow(10, -8))*Math.pow(x, 4);
double x3 = (1*Math.pow(10, -5))*Math.pow(x, 3);
double x2 = (4*Math.pow(10, -4))*Math.pow(x, 2);
double y = x6 - x5 + x4 - x3 + x2 + 0.0275*x + 8.414;

但执行此脚本后,我得到 y = 8.425070122712738。所以这显然是行不通的。我必须说图表中的所有值都在 5 到 12 之间。

我显然做错了什么,但我不知道是什么。也许我对函数的编码很糟糕,或者我选择的 x 不是一个正确的值,但有些地方是错误的。有人可以帮忙吗?

更新:我的代码不太好,duffymo 建议的效果更好。但问题是 Excel 给了我错误的趋势线。我已经成功地使用散点图获得了好的结果。

最佳答案

我不建议以这种方式编码 - 舍入可能是一个问题。

我会推荐Horner scheme :

我这样编码并得到了与您相同的答案:

public class Horner
{
public static final NumberFormat DEFAULT_FORMAT = new DecimalFormat("0.000");

public static void main(String[] args)
{
double [] a = { 8.414, 0.0275, 0.0004, -1.0e-5, 8.0e-8, -2.0e-10, 1.0e-13 };
for (double x = 0.0; x < 1.0; x += 0.05)
{
double y = a[0] + x*(a[1] + x*(a[2] + x*(a[3] + x*(a[4] + x*(a[5])))));
System.out.println("x = " + DEFAULT_FORMAT.format(x) + " y = " + DEFAULT_FORMAT.format(y));
}
}
}

这是我得到的结果。高阶项并没有多大用处;系数很小,当您提高分数的幂时,效果会进一步减弱。

x = 0.000 y = 8.414
x = 0.050 y = 8.415
x = 0.100 y = 8.417
x = 0.150 y = 8.418
x = 0.200 y = 8.420
x = 0.250 y = 8.421
x = 0.300 y = 8.422
x = 0.350 y = 8.424
x = 0.400 y = 8.425
x = 0.450 y = 8.426
x = 0.500 y = 8.428
x = 0.550 y = 8.429
x = 0.600 y = 8.431
x = 0.650 y = 8.432
x = 0.700 y = 8.433
x = 0.750 y = 8.435
x = 0.800 y = 8.436
x = 0.850 y = 8.438
x = 0.900 y = 8.439
x = 0.950 y = 8.440

仍然不是您想要的,但我认为编码要简单得多。

关于java - 从java中的excel获取多项式函数的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4603937/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com