当前位置: 首页 > news >正文

C#,码海拾贝(11)——拉格朗日(Lagrange)三点式曲面插值算法,《C#数值计算算法编程》源代码升级改进版

本文开始是曲面插值(Surface Interpolation,也称作:二维插值,二元插值)。

数值计算三点式

数值计算三点式是一种常见的数值计算方法,它是通过对已知函数在某个点及其左右两个点处的函数值进行数值插值,得到该函数在该点处的近似值。数值计算三点式是数值计算中最基本的插值方法之一,也是其它高级插值方法的基础。

数值计算三点式的基本思想是,通过连接已知点,构造一个二次函数,来近似估计未知点处的函数值。如果已知函数在某个点x0处的函数值f(x0),以及其左右两个点x1和x2处的函数值f(x1)和f(x2),则可以构造一个二次函数,通过这个二次函数来估计函数在任意一个x处的函数值。具体来说,可以采用拉格朗日插值法或牛顿插值法求解。

拉格朗日插值(Lagrange interpolation)是一种多项式插值方法,指插值条件中不出现被插函数导数值,过n+1个样点,满足如下图的插值条件的多项式。也叫做拉格朗日公式。

对于一维曲线的插值,一般用到的函数yi=interp1(X,Y,xi,method) ,其中method包括nearst,linear,spline,cubic。
对于二维曲面的插值,一般用到的函数zi=interp2(X,Y,Z,xi,yi,method),其中method也和上面一样,常用的是cubic。
多维曲面法是用来描绘不规则曲面的一种插值技术,经常用于地形学的插值计算中.此方法利用以二次函数为基函数所建立的曲面来描述整个对象,其中最常用的是圆形双叶双曲线.由于描述该方法的控制方程恒有解,因此又称该方法是双调和的.

拟合与插值的区别:
1、在含义上不同:插值是指函数在多个离散点上的函数值或导数信息。通过求解函数中待定形式和待定系数的插值函数,该函数满足给定离散点的约束。
插值是离散函数逼近的重要方法,利用它可通过函数在有限个点处的取值状况,估算出函数在其他点处的近似值。
拟合是指将平面上的一系列点与光滑曲线连接起来。因为这个曲线有无数的可能性,所以有多种拟合方法。拟合曲线一般可以用函数来表示。根据不同的功能,有不同的拟合名称。
常用的拟合方法有如最小二乘曲线拟合法等,在MATLAB中也可以用polyfit 来拟合多项式。
2、在图像上是不同:图像中的插值必须通过数据,图像中的拟合必须得到最接近的结果,这取决于整体效果。MATLAB做曲线拟合可以通过内建函数或者曲线拟合工具箱(Curve Fitting Toolbox)。这个工具箱集成了用MATLAB建立的图形用户界面(GUIs)和M文件函数。
利用这个工具箱可以进行参数拟合(当想找出回归系数以及他们背后的物理意义的时候就可以采用参数拟合),或者通过采用平滑样条或者其他各种插值方法进行非参数拟合(当回归系数不具有物理意义并且不在意他们的时候,就采用非参数拟合方法)。
利用这个界面,可以快速地在简单易用的环境中实现许多基本的曲线拟合。

拟合与插值的区别:
1、在含义上不同:插值是指已知某函数的在若干离散点上的函数值或者导数信息,通过求解该函数中待定形式的插值函数以及待定系数,使得该函数在给定离散点上满足约束。
而拟合是指,拟合就是把平面上一系列的点,用一条光滑的曲线连接起来。因为这条曲线有无数种可能,从而有各种拟合方法。拟合的曲线一般可以用函数表示,根据这个函数的不同有不同的拟合名字。
2、在图像上是不同:插值在图像是一定得过了数据的才行;拟合在图像上是必须要得到最接近得结果,是要看总体的效果。
3、在几何意义上不同:拟合是给定了空间中的一些点,找到一个已知形式未知参数的连续曲面来最大限度地逼近这些点;而插值是找到一个(或几个分片光滑的)连续曲面来穿过这些点。
 

using System;
using System.Drawing;
using System.Collections;
using System.Collections.Generic;namespace Zhou.CSharp.Algorithm
{/// <summary>/// 插值计算类Interpolation.cs/// 作者:周长发/// 改编:深度混淆/// https://blog.csdn.net/beijinghorn/// </summary>public static partial class Interpolation{/// <summary>/// 二维三点插值/// </summary>/// <param name="x">一维数组,长度为n,存放给定n x m 个结点x方向上的n个值x(i)</param>/// <param name="y">一维数组,长度为m,存放给定n x m 个结点y方向上的m个值y(i)</param>/// <param name="z">一维数组,长度为n x m,存放给定的n x m个结点的函数值z(i,j),z(i,j) = f(x(i), y(j)), i=0,1,...,n-1, j=0,1,...,m-1</param>/// <param name="u">存放插值点x坐标</param>/// <param name="v">存放插值点y坐标</param>/// <returns>指定函数值f(u, v)</returns>public static double Lagrange_3Points_2D(double[] x, double[] y, double[] z, double u, double v){// x方向上给定结点的点数int n = x.Length;// y方向上给定结点的点数int m = y.Length;// 初值int nn = 3;// 特例int ip;if (n <= 3){ip = 0;nn = n;}else if (u <= x[1]){ip = 0;}else if (u >= x[n - 2]){ip = n - 3;}else{int i = 1;int j = n;while (((i - j) != 1) && ((i - j) != -1)){int w = (i + j) / 2;if (u < x[w - 1]){j = w;}else{i = w;}}if (Math.Abs(u - x[i - 1]) < Math.Abs(u - x[j - 1])){ip = i - 2;}else{ip = i - 1;}}int mm = 3;int iq;if (m <= 3){iq = 0;mm = m;}else if (v <= y[1]){iq = 0;}else if (v >= y[m - 2]){iq = m - 3;}else{int i = 1;int j = m;while (((i - j) != 1) && ((i - j) != -1)){int w = (i + j) / 2;if (v < y[w - 1]){j = w;}else{i = w;}}if (Math.Abs(v - y[i - 1]) < Math.Abs(v - y[j - 1])){iq = i - 2;}else{iq = i - 1;}}double[] b = new double[3];for (int i = 0; i <= nn - 1; i++){b[i] = 0.0;for (int j = 0; j <= mm - 1; j++){int k = m * (ip + i) + (iq + j);double h = z[k];for (k = 0; k <= mm - 1; k++){if (k != j){h = h * (v - y[iq + k]) / (y[iq + j] - y[iq + k]);}}b[i] = b[i] + h;}}double zv = 0.0;for (int i = 0; i <= nn - 1; i++){double h = b[i];for (int j = 0; j <= nn - 1; j++){if (j != i){h = h * (u - x[ip + j]) / (x[ip + i] - x[ip + j]);}}zv = zv + h;}return (zv);}}
}

POWER BY 315SOFT.COM

基于坐标点的计算,从点集计算插值曲线等拓展方法请参阅《拉格朗日插值算法及其拓展》

相关文章:

C#,码海拾贝(11)——拉格朗日(Lagrange)三点式曲面插值算法,《C#数值计算算法编程》源代码升级改进版

本文开始是曲面插值&#xff08;Surface Interpolation&#xff0c;也称作&#xff1a;二维插值&#xff0c;二元插值&#xff09;。 数值计算三点式 数值计算三点式是一种常见的数值计算方法&#xff0c;它是通过对已知函数在某个点及其左右两个点处的函数值进行数值插值&…...

CentOS7系统安装MySQL 5.7

目录一、官网下载mysql5.7二、检查mysql依赖环境三、安装MySQL 5.7.281.将安装程序拷贝到/opt目录下2.安装四个安装包3.查看mysql版本4.服务的初始化5.启动mysql&#xff0c;并查看状态(加不加.service后缀都可以)6.查看mysql服务是否自启动&#xff08;默认自启动&#xff09;…...

基于粒子群算法优化BP神经网络的高炉si预测,PSO-BP

目录 摘要 BP神经网络的原理 BP神经网络的定义 BP神经网络的基本结构 BP神经网络的神经元 BP神经网络的激活函数, BP神经网络的传递函数 粒子群算法的原理及步骤 基于粒子群算法改进优化BP神经网络的用电量预测 代码 效果图 结果分析 展望 参考 摘要 一般用启发式算法改进B…...

STM32输出PWM波控制电机转速,红外循迹避障智能车+L298N的详细使用手册、接线方法及工作原理,有代码

智能循迹红外避障小车 本设计的完整的系统主要包括STM32单片机最小系统、L298n电机驱动&#xff0c;超声波 &#xff0c;舵机 &#xff0c;红外模块等。寻迹小车相信大家都已经耳熟能祥了。 我们在这里主要讲一下L298N驱动电机和单片机输出PWM控制电机转速。 本设计软件系统采…...

3、AI的道德性测试

AI的道德性 AI系统的道德性如何保障是一个重要而复杂的问题,涉及到人工智能的发展、应用、监管、伦理、法律等多个方面。保障AI系统的道德性是一个很重要的问题,因为AI系统不仅会影响人类的生活和工作,也会涉及人类的价值观和伦理道德原则。针对这部分,也需要测试AI系统是…...

银行数字化转型导师坚鹏:银行业务需求分析师技能快速提升之道

银行业务需求分析师技能快速提升之道 ——以推动银行战略目标实现为核心&#xff0c;实现知行果合一课程背景&#xff1a; 很多银行都在开展业务需求分析工作&#xff0c;目前存在以下问题急需解决&#xff1a;不知道银行业务需求分析师掌握哪些关键知识&#xff1f;不清楚…...

C++IO流

文章目录一、CIO流体系二、C标准IO流三、C文件IO流1.ifstream2.ofstream一、CIO流体系 C流是指信息从外部输入设备向计算机内部输入&#xff0c;从内存向外部输出设备输出的过程&#xff0c;这种输入输出的过程非常形象地被称为流的概念。IO流指的就是输入输出流。 我们平时对…...

交友项目【后端环境搭建】

目录 1&#xff1a;环境搭建 1.1&#xff1a;MYSQL数据库 1.1.1&#xff1a;导入相应的sql 1.2&#xff1a;Linux中的docker-compose方法集中部署 1.2.1&#xff1a;介绍 1.3&#xff1a;IDEA设置 1.3.1&#xff1a;基本要求 1.3.2&#xff1a;设置项目编码格式 1.3.3&…...

大事务问题解决方案

文章目录 大事务引发的问题解决办法少用@Transactional注解将查询(select)方法放到事务外事务中避免远程调用事务中避免一次性处理太多数据非事务执行异步处理总结大事务引发的问题 1、死锁 2、回滚时间长 3、并发情况下数据库连接池被占满 4、锁等待 5、接口超时 6、数据库主…...

python开启局域网传输

python开启局域网传输 1.找自己的IP 在命令提示窗口输入&#xff1a;ipconfig <----找自己的IP地址 2.创建要传输文件的文件夹&#xff08;只允许在该文件夹下访问传输&#xff09; a.复制文件夹路径 b.在命令提示窗口cd打开新创建的文件夹 cd “C:\Users\86151\Desktop…...

病毒丨熊猫烧香病毒分析

作者丨黑蛋 一、病毒简介 病毒名称&#xff1a; 熊猫烧香 文件名称&#xff1a; 40fee2a4be91d9d46cc133328ed41a3bdf9099be5084efbc95c8d0535ecee496 文件格式&#xff1a; EXEx86 文件类型(Magic)&#xff1a; MS-DOS executable 文件大小&#xff1a; 29.30KB SHA256&…...

SparkSQL学习——SparkSQL配置与文件的读取与保存

目录 一、添加依赖 二、配置log4j 三、spark提交jar包 四、读取文件 (一)加载数据 (二)保存数据 1.Parquet 2.json 3.CSV 4.MySql 5.hive on spark 6.IDEA的Spark中操作Hive 一、添加依赖 <properties><project.build.sourceEncoding>UTF-8</proje…...

随想录Day45--动态规划:70. 爬楼梯 (进阶), 322. 零钱兑换, 279.完全平方数

70爬楼梯这道题之前已经做过&#xff0c;是动态规划思想的入门&#xff0c;想要爬上第n层阶梯&#xff0c;看爬上n-1层的方法和n-2层的方法共有多少种&#xff0c;两个相加就是爬上n层阶梯的方法。这里扩展到每次可以爬k层&#xff0c;这样就是一个动态规划问题。因为每次可以爬…...

原理+案例,关于主从延迟,一篇文章给你讲明白!

前言 在生产环境中&#xff0c;为了满足安全性&#xff0c;高可用性以及高并发等方面的需求&#xff0c;基本上采用的MySQL数据库架构都是MHA、MGR等&#xff0c;最低也得是一主一从的架构&#xff0c;搭配自动切换脚本&#xff0c;实现故障自动切换。 上述架构都是通过集群主…...

QT开发笔记(Camera)

Camera 此章节例程适用于 Ubuntu 和正点原子 I.MX6U 开发板&#xff0c;不适用于 Windows&#xff08;需要自行修改 才能适用 Windows&#xff0c;Windows 上的应用不在我们讨论范围&#xff09;! 资源简介 正点原子 I.MX6U 开发板底板上有一路“CSI”摄像头接口。支持正点原…...

从C++的角度讲解C#容器

讲解C#容器的文章网上一搜一大把&#xff0c;作为一名C程序员如何高效学习C#容器呢&#xff0c;其实学语言如果能讲到这点就能触类旁通&#xff0c;举一反三&#xff0c;那效果是最好的问题市面上没有这样的书籍&#xff0c;那就跟着老白来一起从C的角度去讲解C#容器1.List<…...

React组件库实践:React + Typescript + Less + Rollup + Storybook

背景 原先在做低代码平台的时候&#xff0c;刚好有搭载React组件库的需求&#xff0c;所以就搞了一套通用的React组件库模版。目前通过这套模板也搭建过好几个组件库。 为了让这个模板更干净和通用&#xff0c;我把所有和低代码相关的代码都剔除了&#xff0c;只保留最纯粹的…...

c++ atomic

文章目录why atomic?sequentially consistent atomicRelaxed memory modelswhy atomic? 当我们有一片内存空间S,线程A正在往S里写数据,这个时候线程B突然往S中做了操作,导致线程A的操作结果变得不可预知(对线程A来说),这种情况换句话说叫做data race,我们一般的操作时上锁,在…...

要想孩子写作文没烦恼?建议家长这样做

说起语文学习&#xff0c;就不得不提作文。作为语文学习中的重中之重&#xff0c;作文写作一直是压在学生和家长身上的一块“心头大石”。发现很多孩子在写作文时&#xff0c;往往存在四大问题&#xff1a;写不出、不生动、流水账、太空洞。如今&#xff0c;孩子怕写作文&#…...

基于Python的高光谱图像分析教程

1、前言超光谱图像 (HSI) 分析因其在从农业到监控的各个领域的应用而成为人工智能 (AI) 研究的前沿领域之一。 该领域正在发表许多研究论文&#xff0c;这使它变得更加有趣&#xff01; 和“对于初学者来说&#xff0c;在 HSI 上开始模式识别和机器学习是相当麻烦的”&#xff…...

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…...

【Python】 -- 趣味代码 - 小恐龙游戏

文章目录 文章目录 00 小恐龙游戏程序设计框架代码结构和功能游戏流程总结01 小恐龙游戏程序设计02 百度网盘地址00 小恐龙游戏程序设计框架 这段代码是一个基于 Pygame 的简易跑酷游戏的完整实现,玩家控制一个角色(龙)躲避障碍物(仙人掌和乌鸦)。以下是代码的详细介绍:…...

视频字幕质量评估的大规模细粒度基准

大家读完觉得有帮助记得关注和点赞&#xff01;&#xff01;&#xff01; 摘要 视频字幕在文本到视频生成任务中起着至关重要的作用&#xff0c;因为它们的质量直接影响所生成视频的语义连贯性和视觉保真度。尽管大型视觉-语言模型&#xff08;VLMs&#xff09;在字幕生成方面…...

Python爬虫(一):爬虫伪装

一、网站防爬机制概述 在当今互联网环境中&#xff0c;具有一定规模或盈利性质的网站几乎都实施了各种防爬措施。这些措施主要分为两大类&#xff1a; 身份验证机制&#xff1a;直接将未经授权的爬虫阻挡在外反爬技术体系&#xff1a;通过各种技术手段增加爬虫获取数据的难度…...

【Web 进阶篇】优雅的接口设计:统一响应、全局异常处理与参数校验

系列回顾&#xff1a; 在上一篇中&#xff0c;我们成功地为应用集成了数据库&#xff0c;并使用 Spring Data JPA 实现了基本的 CRUD API。我们的应用现在能“记忆”数据了&#xff01;但是&#xff0c;如果你仔细审视那些 API&#xff0c;会发现它们还很“粗糙”&#xff1a;有…...

Redis数据倾斜问题解决

Redis 数据倾斜问题解析与解决方案 什么是 Redis 数据倾斜 Redis 数据倾斜指的是在 Redis 集群中&#xff0c;部分节点存储的数据量或访问量远高于其他节点&#xff0c;导致这些节点负载过高&#xff0c;影响整体性能。 数据倾斜的主要表现 部分节点内存使用率远高于其他节…...

解读《网络安全法》最新修订,把握网络安全新趋势

《网络安全法》自2017年施行以来&#xff0c;在维护网络空间安全方面发挥了重要作用。但随着网络环境的日益复杂&#xff0c;网络攻击、数据泄露等事件频发&#xff0c;现行法律已难以完全适应新的风险挑战。 2025年3月28日&#xff0c;国家网信办会同相关部门起草了《网络安全…...

Web后端基础(基础知识)

BS架构&#xff1a;Browser/Server&#xff0c;浏览器/服务器架构模式。客户端只需要浏览器&#xff0c;应用程序的逻辑和数据都存储在服务端。 优点&#xff1a;维护方便缺点&#xff1a;体验一般 CS架构&#xff1a;Client/Server&#xff0c;客户端/服务器架构模式。需要单独…...

redis和redission的区别

Redis 和 Redisson 是两个密切相关但又本质不同的技术&#xff0c;它们扮演着完全不同的角色&#xff1a; Redis: 内存数据库/数据结构存储 本质&#xff1a; 它是一个开源的、高性能的、基于内存的 键值存储数据库。它也可以将数据持久化到磁盘。 核心功能&#xff1a; 提供丰…...

云原生周刊:k0s 成为 CNCF 沙箱项目

开源项目推荐 HAMi HAMi&#xff08;原名 k8s‑vGPU‑scheduler&#xff09;是一款 CNCF Sandbox 级别的开源 K8s 中间件&#xff0c;通过虚拟化 GPU/NPU 等异构设备并支持内存、计算核心时间片隔离及共享调度&#xff0c;为容器提供统一接口&#xff0c;实现细粒度资源配额…...