IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> C#,贝塞耳插值(Bessel‘s interpolation)的算法与源代码 -> 正文阅读

[数据结构与算法]C#,贝塞耳插值(Bessel‘s interpolation)的算法与源代码

Friedrich Wilhelm Bessel

首先要区别于另外一个读音接近的插值算法:贝塞尔插值(Bézier)。

(1)读音接近,但不是一个人;

(2)一个是多项式(整体)插值,一个是分段插值;

(3)一个已经很少用,一个还是应用主力;

贝塞耳插值(Bessel's interpolation)是一种等距节点插值方法,适用于被插值节点z位于插值区间中部且位于两相邻插值点的中点附近的情况。

using System;
using System.Text;
using System.Collections;
using System.Collections.Generic;

namespace Legalsoft.Truffer.Algorithm
{
    public partial class TPoint
    {
        public double X { get; set; } = 0.0;
        public double Y { get; set; } = 0.0;
        public double Z { get; set; } = 0.0;
        public TPoint()
        {
        }
        public TPoint(double x, double y)
        {
            X = x; Y = y;
        }
        public TPoint(double x, double y, double z)
        {
            X = x; Y = y; Z = z;
        }

        public double Distance(TPoint p1)
        {
            double ds = (p1.X - this.X) * (p1.X - this.X) + (p1.Y - this.Y) * (p1.Y - this.Y);
            if (ds <= float.Epsilon) return 0.0;
            return Math.Sqrt(ds);
        }

        public static double Distance(TPoint p1, TPoint p2)
        {
            double ds = (p1.X - p2.X) * (p1.X - p2.X) + (p1.Y - p2.Y) * (p1.Y - p2.Y);
            if (ds <= float.Epsilon) return 0.0;
            return Math.Sqrt(ds);
        }
    }

    public static partial class Algorithm_Gallery
    {
        private static double U_Calculate(double u, int n)
        {
            if (n == 0)
            {
                return 1.0;
            }
            double temp = u;
            for (int i = 1; i <= n / 2; i++)
            {
                temp = temp * (u - i);
            }
            for (int i = 1; i < n / 2; i++)
            {
                temp = temp * (u + i);
            }
            return temp;
        }

        private static int Fact(int n)
        {
            int f = 1;
            for (int i = 2; i <= n; i++)
            {
                f *= i;
            }
            return f;
        }

        public static double Bessel_Interpolation(List<TPoint> points, double value)
        {
            int n = points.Count;
            double[,] y = new double[n, n];
            for (int i = 0; i < n; i++)
            {
                y[i, 0] = points[i].Y;
            }
            for (int i = 1; i < n; i++)
            {
                for (int j = 0; j < n - i; j++)
                {
                    y[j, i] = y[j + 1, i - 1] - y[j, i - 1];
                }
            }

            double sum = (y[2, 0] + y[3, 0]) / 2;

            int k;
            if ((n % 2) > 0)
            {
                k = n / 2;
            }
            else
            {
                k = (n / 2) - 1; // origin for even
            }
            double u = (value - points[k].X) / (points[1].X - points[0].X);

            for (int i = 1; i < n; i++)
            {
                if ((i % 2) > 0)
                {
                    sum = sum + ((u - 0.5) * U_Calculate(u, i - 1) * y[k, i]) / Fact(i);
                }
                else
                {
                    sum = sum + (U_Calculate(u, i) * (y[k, i] + y[--k, i]) / (Fact(i) * 2));
                }
            }
            return sum;
        }
    }
}

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-05-07 11:22:23  更:2022-05-07 11:22:36 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 3:49:11-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码