如何在 C# 中重新创建调用 TREND() 的 Excel 公式?

2024-01-12

我正在构建一个 .net 页面来模仿电子表格。该表包含此公式

=ROUND(TREND(AA7:AE7,AA$4:AE$4,AF$4),1)

有人可以提供相当于 C# 的内容吗TREND()?或者,如果任何人都可以提供围绕它的快捷方式,那也很好;我对那里的数学不太熟悉,不知道是否有更简单的方法。

如果有帮助的话,这里有一些样本数字。

AA7:AE7 6 8 10 12 14

or 10.2 13.6 17.5 20.4 23.8

AA$4:AE$4 600 800 1000 1200 1400

AF$4 650

编辑:这是我想出的,它似乎产生了与我的电子表格相同的数字。

public static partial class Math2
{
    public static double[] Trend(double[] known_y, double[] known_x, params double[] new_x)
    {
        // return array of new y values
        double m, b;
        Math2.LeastSquaresFitLinear(known_y, known_x, out m, out b);

        List<double> new_y = new List<double>();
        for (int j = 0; j < new_x.Length; j++)
        {
            double y = (m * new_x[j]) + b;
            new_y.Add(y);
        }

        return new_y.ToArray();
    }

    // found at http://stackoverflow.com/questions/7437660/how-do-i-recreate-an-excel-formula-which-calls-trend-in-c
    // with a few modifications
    public static void LeastSquaresFitLinear(double[] known_y, double[] known_x, out double M, out double B)
    {
        if (known_y.Length != known_x.Length)
        {
            throw new ArgumentException("arrays are unequal lengths");
        }

        int numPoints = known_y.Length;

        //Gives best fit of data to line Y = MC + B
        double x1, y1, xy, x2, J;

        x1 = y1 = xy = x2 = 0.0;
        for (int i = 0; i < numPoints; i++)
        {
            x1 = x1 + known_x[i];
            y1 = y1 + known_y[i];
            xy = xy + known_x[i] * known_y[i];
            x2 = x2 + known_x[i] * known_x[i];
        }

        M = B = 0;
        J = ((double)numPoints * x2) - (x1 * x1);

        if (J != 0.0)
        {
            M = (((double)numPoints * xy) - (x1 * y1)) / J;
            //M = Math.Floor(1.0E3 * M + 0.5) / 1.0E3; // TODO this is disabled as it seems to product results different than excel
            B = ((y1 * x2) - (x1 * xy)) / J;
            // B = Math.Floor(1.0E3 * B + 0.5) / 1.0E3; // TODO assuming this is the same as above
        }
    }

}

考虑 TREND 基于 Excel 函数 LINEST。 如果您点击此链接,https://support.office.com/en-us/article/LINEST-function-84d7d0d9-6e50-4101-977a-fa7abf772b6d https://support.office.com/en-us/article/LINEST-function-84d7d0d9-6e50-4101-977a-fa7abf772b6d,它将解释 LINEST 背后的功能。

此外,您还会找到它使用的基本公式。

First Formula .

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 C# 中重新创建调用 TREND() 的 Excel 公式? 的相关文章

随机推荐

  • 转换 Spark 数据框中的日期模式

    我在 Spark 数据框中有一列字符串数据类型 日期采用 yyyy MM dd 模式 我想以 MM dd yyyy 模式显示列值 我的数据是 val df sc parallelize Array steak 1990 01 01 2000
  • 如何使用 python 从 xml 中提取特定数据?

    我对 python 比较陌生 我一直在尝试通过实践方法学习Python 我通过做euler项目学习了c c 现在我正在学习如何从文件中提取数据 我已经掌握了从简单文本文件中提取数据的窍门 但我有点陷入 xml 文件中 我试图做的一个例子 我
  • Django -vs- Grails -vs-?

    我想知道是否有类似 Django 的简单 Web 应用程序开发与良好的部署 调试和其他工具相结合 Django 是一个非常高效的框架 用于构建内容丰富的网站 与 Java 中的一些怪物相比 这是我尝试过的最好的 呼吸新鲜空气 然而它是用 P
  • 用地址而不是数字填充队列

    我想知道是否可以将地址而不是其内容推送到队列中 例如 我有一个二维数组 我正在围绕它移动 我想记录我去过的地方 但我不一定关心这些地方的内容 是的 您只需将队列声明为指针队列 例如 int 或您正在使用的任何类型 这是代码 include
  • 如果浮点范围更大,通过浮点的往返是否始终定义行为?

    假设我有两种算术类型 一种是整数类型 I 和一个浮点数 F 我还假设std numeric limits i max 小于std numeric limits i
  • 更新现有的 Yaml 文件

    我想更新我现有的user yaml文件而不擦除其他对象或属性 我已经用谷歌搜索了两天寻找解决方案 但没有运气 实际输出 name Test User age 30 address line1 My Address Line 1 line2
  • M1 MBP Rails db:create 引发 msgpack 错误

    您好 我是 Ruby on Rails 新手 当我跑步时rails db create 在M1 MBP上运行时出现以下错误 Library Ruby Gems 2 6 0 gems msgpack 1 4 2 lib msgpack rb
  • (简单)允许 24:00:00 和 00:00:00 作为输入的日期格式

    我已经寻找这个有一段时间了 到目前为止还没有成功 你知道是否有一个 DateFormat 这样的类 它允许我使用 00 00 00 和 24 00 00 作为输入参数 它们都是午夜 但是当调用 getHour 时 结果我会得到 0 或 24
  • 避免调用 Floor()

    我正在编写一段代码 需要处理不一定在 0 到 1 范围内的 uvs 2D 纹理坐标 例如 有时我会得到 u 分量为 1 2 的 uv 为了解决这个问题 我正在实现一个包装 通过执行以下操作来导致平铺 u floor u v floor v
  • gcc -save-temps:如何指定目录

    是否可以指定输出目录 save temps https gcc gnu org onlinedocs gcc Developer Options html Developer Options文物 我知道我可以做一个mv之后但想知道是否有办法
  • NuGet Uninstall.ps1 - 删除项目引用

    因此 在我的 Install ps1 中 我可以添加如下引用 param installPath toolsPath package project project Object References Add YourDLL 如何在 Pow
  • 如何在 R 中查找和求和多列

    假设我有 2 个数据帧 结构如下 GROUPS P1 P2 P3 P4 123 213 312 231 345 123 213 567 个人结果 ID SCORE 123 23 213 12 312 11 213 19 345 10 567
  • 让 Xcode 识别不带“.h”扩展名的 C++ 头文件 (OpenSceneGraph)

    OpenSceneGraph 使用头文件没有 h 扩展名 http www openscenegraph org projects osg wiki Support FAQ WhydonttheOSGheaderfileshavea hor
  • 将双精度型转换为整数何时是未定义的行为

    所以如下 double t 244 233 int a int t 不是未定义的行为 因为 244 可以容纳在里面int我做对了吗 否则 如果它是更大的值而不是 244 它不适合 int 这将是未定义的 我做对了吗 我更感兴趣的是 C 是如
  • 无法启动 Selenium 会话:无法启动新的浏览器会话:启动浏览器时出错

    我像这样初始化硒 public void setUp throws Exception setUp http localhost firefox 我用类似的方法编写测试 public void testUntitled throws Exc
  • 使用应用函子对选项列表求和

    我有一个 List Option Int 并想使用应用函子对其进行求和 从 1 我了解到它应该类似于以下内容 import scalaz import Scalaz List 1 2 3 map some foldLeft some 0 c
  • Rails:论坛类网站中用户->帖子->评论模型的最佳关联模型?

    我正在创建一个论坛网站 每个注册用户都可以在其中撰写许多帖子并每个帖子可以有很多评论 此外 每个用户都可以对任何其他用户创建的任何帖子发表评论 has many has many user gt Posts gt Comments has
  • 我如何有效地使用 angularjs 并牢记安全性?

    当我知道它们不安全时 为什么我应该使用 angular js 或其他类似的 js 框架 我所说的安全性是指 所有代码都是用纯 JavaScript 编写的 可以在 devtools 或 firebug 中编辑 javascript 像表单提
  • 派生模板类对基类成员数据的访问

    这个问题是对以下问题的进一步推进这个线程 https stackoverflow com questions 1117693 initializing template base class member types in derived
  • 如何在 C# 中重新创建调用 TREND() 的 Excel 公式?

    我正在构建一个 net 页面来模仿电子表格 该表包含此公式 ROUND TREND AA7 AE7 AA 4 AE 4 AF 4 1 有人可以提供相当于 C 的内容吗TREND 或者 如果任何人都可以提供围绕它的快捷方式 那也很好 我对那里