C语言WFC实现绘制Lagrange插值多项式曲线的函数

前言(引用):

拉格朗日多项式插值
插值方法有许多,常用的、基本的有:拉格朗日多项式插值、牛顿插值、分段线插值、Hermite插值和三次样条插值。这里只将一下拉格朗日多项式插值法:

方法应用
通缩点说,已知n+1个点x1,x2,…,xn的函数值,可以使用lagrange插值求出一个n次多项式插值函数f(x),f(x)是接近未知原函数p(x)的函数,根据插值函数f(x)求出p(x)的未知点

具体引入
已知一个未知函数f(x)的三个点(x1,y1)、(x2,y2)、(x3,y3)

存在使用一个多项式函数经过这三个点,呈现为一根曲线

因此进行合理假设,此曲线为一个二次多项式

拉格朗日认为可通过三根两次曲线来得到这根二次曲线。

关键

因此假设了三根曲线

第一根曲线f1(x),在x1点处,取值为1,其余两点(x2,y2)、(x3,y3)取值为0

第二根曲线f2(x),在x2点处,取值为1,其余两点(x1,y1)、(x3,y3)取值为0

第三根曲线f3(x),在x3点处,取值为1,其余两点(x1,y1)、(x2,y2)取值为0

所以可得到

y1f1(x)曲线可以保证,在x1处,取值为y1,其余两点取值为0

y2f2(x)曲线可以保证,在x2处,取值为y2,其余两点取值为0

y3f3(x)曲线可以保证,在x3处,取值为y3,其余两点取值为0

可以说这三根曲线就可以组成需要得到的那根二次曲线

那么,f(x)=y1f1(x)+y2f2(x)+y3f3(x)
原文链接:https://blog.csdn.net/weixin_47210960/article/details/119428254

代码实现:

//拉格朗日插值法
void CCGDrawingView::Lagrange(double* x,double* y, int num, CDC* pDC)
{//画原始点CPen redPen(PS_SOLID, 1, RGB(255, 0, 0));CBrush redBrush(RGB(255, 0, 0));CPen* pOldPen = pDC->SelectObject(&redPen);CBrush* pOldBrush = pDC->SelectObject(&redBrush);for (int i = 0; i < num; ++i) {pDC->Ellipse(int(x[i] - 5),int(y[i] - 5),int(x[i] + 5),int(y[i] + 5));}//绘制Lagrange插值多项式曲线pDC->SelectObject(pOldPen);pDC->SelectObject(pOldBrush);for (int i = (int)x[0]; i <= (int)x[num - 1]; ++i) {double t = i;double tx = 0.0;double ty = 0.0;for (int j = 0; j < num; ++j) {double g = 1.0;//计算基函数的值for (int m = 0; m < num; ++m) {if (m == j)continue;g = g * (t - x[m]) / (x[j] - x[m]);}//根据基函数的值计算坐标tx += x[j] * g;ty += y[j] * g;}//画像素点pDC->SetPixel((int)tx, (int)ty, RGB(0, 0, 0));}
}

结果呈现:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/258627.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

思维链(CoT)提出者 Jason Wei:关于大语言模型的六个直觉

文章目录 一、前言二、主要内容三、总结 &#x1f349; CSDN 叶庭云&#xff1a;https://yetingyun.blog.csdn.net/ 一、前言 Jason Wei 的主页&#xff1a;https://www.jasonwei.net/ Jason Wei&#xff0c;一位于 2020 年从达特茅斯学院毕业的杰出青年&#xff0c;随后加盟了…

Linux学习笔记(九)MISC设备驱动

前言 misc 的意思是混合、杂项的&#xff0c;因此 MISC 驱动也叫做杂项驱动。也就是当我们板子上的某些外设无法进行分类的时候就可以使用 MISC 驱动。 MISC 驱动其实就是最简单的字符设备驱动&#xff0c;通常嵌套在 platform 总线驱动中&#xff0c;实现复杂的驱动&#xff0…

52 代码审计-PHP项目类RCE及文件包含下载删除

目录 漏洞关键字:演示案例:xhcms-无框架-文件包含跨站-搜索或应用-includeearmusic-无框架-文件下载-搜索或应用功能-down等zzzcms-无框架-文件删除RCE-搜索或应用-unlink、eval 漏洞关键字: SQL注入&#xff1a; select insert update mysql_query mysql等 文件上传&#xff…

《opencv实用探索·十五》inRange二值化图像

opencv接口如下&#xff1a; void inRange(InputArray src, InputArray lowerb, InputArray upperb, OutputArray dst);函数实现二值化功能&#xff0c;主要是将在两个阈值内的像素值设置为白色&#xff08;255&#xff09;&#xff0c;而不在阈值区间内的像素值设置为黑色&am…

C语言入门课程之课后习题之折半查找法

目录 1解题思路&#xff1a; 2代码所示&#xff1a; 3运行代码&#xff1a; 4习题不难&#xff0c;多刷题&#xff0c;练思路&#xff0c;最重要的不是学会了一道题&#xff0c;而是掌握其编程思想&#xff1b; 1解题思路&#xff1a; 折半查找法&#xff08;half-interval…

delphi/python 实现小红书xhs用户作品列表和图片/视频无水印解析

技术学习&#xff0c;请勿用与非法用途&#xff01;&#xff01;&#xff01; 成品图用户作品列表接口 /api/sns/web/v1/user_posted?num30&cursor&user_id642bf0850000000011022c4e&image_scenes http Get方式&#xff0c;请求头需要带上x-s x-t签名验证笔记明细…

前端:HTML+CSS+JavaScript实现轮播图2

前端&#xff1a;HTMLCSSJavaScript实现轮播图2 1. 和之前版本的区别2. 实现原理3. 针对上述的改进3. 参考代码 1. 和之前版本的区别 之前发布的那篇关于轮播图的文章在这&#xff1a;前端&#xff1a;HTMLCSSJavaScript实现轮播图&#xff0c;只能说存在问题吧&#xff01;比…

三防平板|手持终端PDA|8寸/10寸工业三防平板电脑主板方案定制

近年来&#xff0c;随着科技的快速发展&#xff0c;三防平板成为了各行各业中不可或缺的工具。三防平板采用IP67级别的防护设计&#xff0c;通过了多项测试标准&#xff0c;如国标和美标&#xff0c;具备防水、防摔、防尘、防撞、防震、防跌落以及防盐雾等多重防护功能。因此&a…

C++特性之多态

C作为面向对象的语言&#xff0c;三大特性之一多态在平时的编程中使用频率特别高。 本篇文章就来详细讲解一下多态。 什么是多态 不同的对象做相同的一件事会出现不同的状态&#xff0c;这就是多态。 举个列子&#xff1a;比如普通人买车票要全价购买&#xff0c;而军人只用半…

每天学习一点shell系列(2)—函数的参数传递

参考博客&#xff1a;shell 脚本-10函数_eno_zeng的博客-CSDN博客 $n 或 ${n} &#xff1a;函数内使用 $n 或 ${n} 访问对应的参数, 数字代表参数的前后顺序, $1 代表第一个参数, $2 代表第三个参数, $n 代表第n个参数&#xff1b;当n>10时&#xff0c;需要使用${n}来获取参…

苹果Vision Pro即将量产

据界面新闻消息&#xff0c;苹果公司将在今年12月正式量产第一代MR&#xff08;混合现实&#xff09;产品Vision Pro。苹果公司对Vision Pro寄予了厚望&#xff0c;预计首批备货40万台左右&#xff0c;2024年的销量目标是100万台&#xff0c;第三年达到1000万台。 苹果的供应…

Linux中的文件系统

本章主要介绍文件系统的管理 了解什么是文件系统对分区进行格式化的操作挂载分区查找文件 在Windows系统中&#xff0c;买了一块新的硬盘加到电脑后&#xff0c;需要对分区进行格式化才能使用&#xff0c;Linux系统中也是一样&#xff0c;首先我们需要了解什么是文件系统 1.…