牛顿差值多项式

实验题目:Newton插值多项式相关知识:

通过n+1个节点的次数不超过n的Newton插值多项式为:

 

x

0

10

20

30

40

50

60

70

80

90

100

110

120

y

5

1

7.5

3

4.5

8.8

15.5

6.5

-5

-10

-2

4.5

7

#include <iostream>
#include <vector>using namespace std;//用来保存多项式系数
vector<double> vc; // 牛顿差值多项式 数据double data[][2] = {0,5,10,1,20,7.5,30,3,40,4.5,50,8.8,60,15.5,70,6.5,80,-5,90,-10,100,-2,110,4.5,120,7};//计算出差值函数
void BuildNewtonFunc(double data[][2],const int count)
{//计算出每个 基函数 的系数 下面用 小写字母 c+数字 来注释表示vc.push_back(data[0][1]); //第一个基函数的系数 为y0 ,同时基函数也是常指函数double c0 = vc[0];int k ,i;double d;double u;for(k=1;k< count;k++){d = data[k][0]-data[k-1][0];  //利用 u = vc[k-1];for(i=k-2;i>= 0;i--)  //这个for循环利用的是嵌套乘法 或者 霍纳算法 进行分解{                     // 目的是用已知的c(i)来推算出 未知的 c(i+i)u = u *(data[k][0]-data[i][0])+vc[i];d = d *(data[k][0]-data[i][0]);}vc.push_back((data[k][1]-u)/d);}}
void NewtonFunc(vector<double> vc ,const double x,double &y)
{y = 0;int i;int j;double temp;for(i=0;i<vc.size();++i){temp = vc[i];for(j=0;j<i;j++){temp *= x - data[j][0];	}y += temp;}
}int main()
{BuildNewtonFunc(data,sizeof(data)/sizeof(data[0]));double y;NewtonFunc(vc,65,y);//cout << y << endl;printf("%f",y);return 0;
}

 

 

 

 

 

试验要求:利用Newton插值多项式求被插值函数f(x)在点x=65处的近似值。建议:画出Newton插值多项式的曲线。

下面的算法我借鉴的机械工业出版社的一本数值计算的书《数值分析》/.(美) David Kincaid,(美)Ward Cheney著/.王国荣, 俞耀明, 徐兆亮译

 

WIN32代码

 

// application.
//#include  <windows.h>
#include <iostream>
#include <vector>LRESULT CALLBACK MainWndProc(HWND hwnd ,UINT message, WPARAM wParam,LPARAM lParam);//---------------------------------------------------------------------------using namespace std;//用来保存多项式系数
vector<double> vc; // 牛顿差值多项式 数据double data[][2] = {0,5,10,1,20,7.5,30,3,40,4.5,50,8.8,60,15.5,70,6.5,80,-5,90,-10,100,-2,110,4.5,120,7};//计算出差值函数
void BuildNewtonFunc(double data[][2],const int count)
{//计算出每个 基函数 的系数 下面用 小写字母 c+数字 来注释表示vc.push_back(data[0][1]); //第一个基函数的系数 为y0 ,同时基函数也是常指函数double c0 = vc[0];int k ,i;double d;double u;for(k=1;k< count;k++){d = data[k][0]-data[k-1][0];  //利用 u = vc[k-1];for(i=k-2;i>= 0;i--)  //这个for循环利用的是嵌套乘法 或者 霍纳算法 进行分解{                     // 目的是用已知的c(i)来推算出 未知的 c(i+i)u = u *(data[k][0]-data[i][0])+vc[i];d = d *(data[k][0]-data[i][0]);}vc.push_back((data[k][1]-u)/d);}}
void NewtonFunc(vector<double> vc ,const double x,double &y)
{y = 0;int i;int j;double temp;for(i=0;i<vc.size();++i){temp = vc[i];for(j=0;j<i;j++){temp *= x - data[j][0];	}y += temp;}
}//---------------------------------------------------------------------------int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR     lpCmdLine,int       nCmdShow)
{char szClassName[] = "MainWClass";	WNDCLASSEX wndclass;// 用描述主窗口的参数填充WNDCLASSEX结构wndclass.cbSize = sizeof(wndclass); // 结构的大小wndclass.style = CS_HREDRAW|CS_VREDRAW;//指定如果大小改变就重画wndclass.lpfnWndProc = MainWndProc; // 窗口函数指针wndclass.cbClsExtra = 0;//wndclass.cbWndExtra = 0; //wndclass.hInstance = hInstance;//实例句柄wndclass.hIcon = ::LoadIcon(NULL,IDI_APPLICATION);//使用预定义的图标 wndclass.hCursor = ::LoadCursor(NULL,IDC_ARROW);//使用预定义的光标 wndclass.hbrBackground = (HBRUSH)::GetStockObject(WHITE_BRUSH);//使用白色背景画刷wndclass.lpszMenuName = NULL;//不指定菜单 wndclass.lpszClassName = szClassName;//窗口类的名称 wndclass.hIconSm = NULL;//没有类的小图标 //注册窗口类::RegisterClassEx(&wndclass);HWND hwnd = ::CreateWindowEx(0,//扩展样式szClassName,//类名"My First Window",//标题 WS_OVERLAPPEDWINDOW,//窗口风格 overlapped windowCW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL,//父窗口句柄NULL,// 菜单句柄hInstance , // 程序实例句柄 NULL);if (hwnd == NULL){	::MessageBox(NULL,"ERror","error",MB_OK);return -1;}//显示窗口,刷新客户区::ShowWindow(hwnd,nCmdShow);::UpdateWindow(hwnd);MSG msg ;while(::GetMessage(&msg,NULL,0,0)){::TranslateMessage(&msg);::DispatchMessage(&msg);}return msg.wParam;
}
void DrawLine(HDC hdc,int ax,int ay,int bx,int by)
{::MoveToEx(hdc, ax, ay, NULL);::LineTo(hdc, bx ,by);
}
LRESULT CALLBACK MainWndProc(HWND hwnd ,UINT message, WPARAM wParam,LPARAM lParam)
{char szText[] = "最简单的窗口";int cx,cy;double i,y,y2;switch(message){case WM_PAINT:{HDC hdc;PAINTSTRUCT ps;hdc = ::BeginPaint(hwnd ,&ps);RECT rt;::GetClientRect(hwnd,&rt);cx = rt.right;cy = rt.bottom;//::TextOut(hdc ,10,10,szText,strlen(szText));BuildNewtonFunc(data,sizeof(data)/sizeof(data[0]));/*double y;NewtonFunc(vc,65,y);*/::SetMapMode(hdc,MM_ANISOTROPIC); //设置坐标模式::SetWindowExtEx(hdc,600,200,NULL);//设置逻辑单位的大小为1000*1000;::SetViewportExtEx(hdc,cx,-cy,NULL);::SetViewportOrgEx(hdc,cx/2,cy/2,NULL);//设置坐标原点::TextOut(hdc,0,0,"o",1);//画X轴DrawLine(hdc,-cx,0,cy,0);DrawLine(hdc,0,cx,0,-cy);MoveToEx(hdc,0,0,NULL);for(i=0;i<100;i++){NewtonFunc(vc,i,y);NewtonFunc(vc,i+1,y2);DrawLine(hdc,i,y,i+1,y2);}::EndPaint(hwnd ,&ps);return 0 ;}case WM_DESTROY:{::PostQuitMessage(0);return 0 ;}}return ::DefWindowProc(hwnd ,message,wParam ,lParam );
}


效果图:

 

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

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

相关文章

Easyspy网络检测系统

Easyspy是一款网络入侵检测和流量实时监控软件。作为一个入侵检测系统&#xff0c;用来快速发现并定位诸如ARP攻击、DOS/DDOS、分片IP报文攻击等恶意攻击行为&#xff0c;帮助发现潜在的安全隐患。Easyspy又是一款Sniffer软件&#xff0c;用来进行故障诊断&#xff0c;快速排查…

复杂性研究简介——从西蒙到霍兰

来源&#xff1a;信息系统论坛摘要&#xff1a;复杂性研究&#xff08;Complexity Study&#xff09;是上世纪末以来逐步兴起的一股思潮。本文将基于我们自己的认识过程&#xff0c;对于这个值得关注的领域进行简要的介绍&#xff0c;希望能够引起更多朋友的关注。重点是对于赫…

CSAPP--整数的运算

一.无符号数加法运算 二.有符号数加法运算 三.无符号数乘法 截断w位也就是对2^w取模 四.有符号数&#xff08;补码表示&#xff09;乘法 换算成补码在进行乘法运算 参考&#xff1a; 【合集】CSAPP-深入理解计算机系统_哔哩哔哩_bilibili

验证occ和vtk整合工作的demo

在编译occ通过过后&#xff0c;我需要验证occ是否能够正常结合vtk进行开发工作 使用CMake进行环境变量设置&#xff1a; CMakeList.txt PROJECT (IGESReader)#VTK Part: FIND_PACKAGE(VTK) IF (VTK_FOUND)INCLUDE(${VTK_USE_FILE}) ELSE(VTK_FOUND)MESSAGE(FATAL_ERROR"Ca…

CSAPP--浮点数

一.定点表示小数 缺点:表示不了很大的数 二.IEEE关于浮点数表示法 float32:符号位1位&#xff0c;阶码字段:8位,小数点为23位 float64:符号位1位&#xff0c;阶码字段:11位,小数点为52位 三.浮点数的数值类型 1.规格化值 2.非规格值 3.特殊值 而阶码的值决定其属于那一类…

干货|一文看懂美国共享出行3大领域8大头部玩家

来源&#xff1a;42号车库摘要&#xff1a;年初某机构统计的滴滴、Uber、Lyft、Grab和Go-jek全球五大共享出行服务平台的总估值1290亿美元。12月中旬&#xff0c;Uber、Lyft先后宣布即将于2019年IPO。其中&#xff0c;Uber的估值高达1000-1200亿美元&#xff0c;接近年初某机构…

《C++ Primer 4th》读书笔记 第7章-函数

原创文章&#xff0c;转载请注明出处&#xff1a;http://www.cnblogs.com/DayByDay/p/3912413.html 转载于:https://www.cnblogs.com/DayByDay/p/3912413.html

MSE与FC作用

一.MSE作用 在做super resolution的时候&#xff0c;如果用MSE&#xff0c;做出来的图片会非常的模糊&#xff0c;就是因为MSE是基于高斯分布假设&#xff0c;最后的结果会尽可能地靠近高斯分布最高的地方&#xff0c;使得结果不会太sharp。 二.FC作用 转载: 为什么回归问题用…

爆发的电池储能市场真相!年销量将超260亿美元

来源&#xff1a;智东西摘要&#xff1a;全面分析在集成领域以及其他形式的电池解决方案的开发和部署方面所取得的进展 。电池储能是非常灵活的&#xff0c;它可以进行快速部署&#xff0c; 且具有多种应用。 同时它能够产生大量价值流——更不用说电池价格比预期中下降得还要快…

刚刚!刘永坦院士和钱七虎院士荣获2018年度国家最高科技奖

来源&#xff1a; 青塔人才 摘要&#xff1a;今天上午&#xff0c;2018年度国家科学技术奖励大会在北京隆重召开。2018年国家科学技术奖共评选出278个项目和7名科技专家&#xff0c;合计285项&#xff08;人&#xff09;&#xff0c;国家最高科学技术奖颁予刘永坦院士和钱七虎院…

好用工具推荐

一.函数画图软件 图形计算器 二.流程图 Flowchart Maker & Online Diagram Software 可以画完就存在github里面 三.linux手册 Linux命令大全(手册) – 真正好用的Linux命令在线查询网站 四.在线工具百宝箱 在线工具 - 你的工具箱

光子人工智能芯片助“中国芯”换道超车

来源&#xff1a;新京报摘要&#xff1a;算力是传统芯片1000倍&#xff0c;功耗仅为其百分之一&#xff1b;未来可应用于自动驾驶、智能机器人、无人机等领域。光子人工智能芯片。光子芯片的计算速度为电子芯片的1000倍&#xff0c;但功耗仅为其百分之一。算力是传统电子人工智…

sublime text3安装插件 emmet

转载自&#xff1a;http://9iphp.com/web/html/1260.html Sublime Text常用插件总结及Package Control安装方法 2015/01/09 | HTML/CSS,Linux | 8 条评论 | (2评) | 评分 Sublime Text 是一个代码编辑器&#xff0c;具有漂亮的用户界面和强大的功能&#xff0c;并且它还是…

指令与条件码

一.ALU:算数逻辑单元 ALU从寄存器中读取数据后&#xff0c;执行相应的运算&#xff0c;在返回目的寄存器rdx中&#xff0e;简单示例如下图 当然ALU除了执行算术和逻辑运算指令以外&#xff0c;还会根据运算结果去设置条件码寄存器&#xff0e; 二.条件码寄存器: 长度为单个比…

解析1G到5G技术与设备发展历程

来源&#xff1a;5G作者&#xff1a;张国宝&#xff1a;国家发改委原副主任、国家能源局原局长摘要&#xff1a;解析1G到5G技术与设备发展历程未来智能实验室是人工智能学家与科学院相关机构联合成立的人工智能&#xff0c;互联网和脑科学交叉研究机构。未来智能实验室的主要工…

CES 2019开胃菜竟然是芯片,英特尔 英伟达 高通 华为 AMD已经开打!

来源&#xff1a;网易智能1月8日消息&#xff0c;一年一度的CES即将在美国拉斯维加斯开幕&#xff0c;开幕前夕&#xff0c;各家厂商纷纷推出新品&#xff0c;其中最突出的&#xff0c;便是几家半导体厂商推出的最新款芯片&#xff0c;让CES 2019一开始就变得纷繁热闹。下面&am…

一文概述 2018 年深度学习 NLP 十大创新思路

来源&#xff1a;AI科技评论摘要&#xff1a;Sebastian Ruder 是一位 NLP 方向的博士生、研究科学家&#xff0c;最近&#xff0c;他基于十几篇经典论文盘点了 2018 年 NLP 领域十个令人激动并具有影响力的想法&#xff0c;并将文章发布在 Facebook 上。今年&#xff0c;我发现…

斯坦福重磅报告:2030年的人工智能与生活

来源&#xff1a;元浦说文摘要&#xff1a;本文节选自斯坦福大学「人工智能百年研究」的首份报告&#xff1a;《2030 年的人工智能与生活》&#xff0c;这篇报告是计划持续至少 100 年的研究系列中的第一篇。该报告描述了目前人工智能相关技术、法律以及道德上的挑战&#xff0…

万物智联时代——2018年AIOT产业蓝皮书正式发布

来源&#xff1a;物联网资本论摘要&#xff1a;纵观2018年AIOT行业&#xff0c;可以说大事不断&#xff0c;阿里巴巴正式宣布将全面进军物联网&#xff0c;“中兴事件”持续发酵也使得半导体行业受到广泛关注&#xff0c;NB-IoT模组价格进一步下调补贴后已进入20元大关等等。作…

2018微信年度数据报告:00后最爱表情捂脸哭 80后呲牙笑

来源 &#xff1a;腾讯科技摘要&#xff1a;腾讯科技讯 1月9日消息&#xff0c;在今日举行的2019微信公开课PRO上&#xff0c;微信发布了《2018微信年度数据报告》。报告显示&#xff0c;2018年&#xff0c;微信每个月有10.82亿用户保持活跃&#xff0c;每天有450亿次信息发送出…