c# MathNet.Numerics 二次函数拟合使用案例

下载地址
https://www.nuget.org/packages/MathNet.Numerics/4.15.0#supportedframeworks-body-tab

案例

using MathNet.Numerics;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace MathNetTest
{
    class Program
    {
        static void Main(string[] args)
        {
            double a = 800;//y=ax²+bx+c
            double b = 900;
            double c = 100;
            double[] y = new double[1000];
            double[] x = new double[1000];
            Random random = new Random();
            int index = 0;
            for (int i = -300; i < 1000 - 300; i++)
            {//生成随机偏移点
                x[index] = i;
                y[index] = a * Math.Pow(i, 2) + b * i + c + random.NextDouble();
                index++;
            }
            double[] res = Fit.Polynomial(x, y, 2);//拟合
            double aFit = res[2];
            double bFit = res[1];
            double cFit = res[0];
            double[] yFit = new double[1000];
            index = 0;
            for (int i = -300; i < 1000 - 300; i++)
            {//计算拟合后点
                yFit[index] = aFit * Math.Pow(i, 2) + bFit * i + cFit;
                index++;
            }
            double RSquared = GoodnessOfFit.RSquared(y, yFit);//拟合度
            double peakX = -bFit / (2 * aFit);//计算顶点
            double peaky = (4 * aFit * cFit - bFit * bFit) / (4 * aFit);
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值