云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 6牛顿、拉格朗日或等距节点插值

6牛顿、拉格朗日或等距节点插值

  • 62 次阅读
  • 3 次下载
  • 2025/5/24 19:07:54

数值分析实验报告(六)

(信息一班-----陈宣羽----20100810010107)

一、实验名称

牛顿、拉格朗日或等距节点插值 二、实验目的

用牛顿、拉格朗日或等距节点插值实现插值法 三、题目 已知插值点

?f(?1)?2??f(1)?1 ?f(2)?1?利用牛顿、拉格朗日或等距节点求当x=3.6时y的值 四、程序

#include #include typedef struct data {

float x; float y; }Data;

Data d[20];//最多二十组数据 float lagrange(float x,int count) {

float y=0.0;

for(int k=0;k

float p=1.0;

for(int j=0;j

p=p*(x-d[j].x)/(d[k].x-d[j].x); }

y=y+p*d[k].y;//求和 }

return y;//返回y的值 }

void main() {

float x,y;

int count;

cout<<\请输入x[i],y[i]的组数,不得超过20组:\要求用户输入数据组数 cin>>count;

//获得各组数据

for(int i=0;i

cout<<\请输入第\组x的值:\ cin>>d[i].x;

cout<<\请输入第\组y的值:\ cin>>d[i].y; }

cout<<\请输入x的值:\获得变量x的值 cin>>x;

cout<<\拉格朗日插值计算方法,其结果为:\ y=lagrange(x,count);

cout<<\时,\输出最终结果 }

牛顿插值

#include #include typedef struct data {

float x; float y; } Data; Data d[15]; float f(int s,int t)//牛顿插值法,用以返回插商 {

if(t==s+1)

return (d[t].y-d[s].y)/(d[t].x-d[s].x); else

return (f(s+1,t)-f(s,t-1))/(d[t].x-d[s].x); }

float Newton(float x,int count) {

int n;

cout<<\请输入n值(即n次插值):\获得插值次数 cin>>n;

float t=1.0; float y=d[0].y; float yt=0.0;

for(int j=1;j<=n;j++) {

t=(x-d[j-1].x)*t; yt=f(0,j)*t;

y=y+yt; }

return y; }

void main() { float x,y; int count; cout<<\请输入x[i],y[i]的组数,不得超过20组:\要求用户输入数据组数 cin>>count; for(int i=0;i

cout<<\请输入第\组x的值:\ cin>>d[i].x;

cout<<\请输入第\组y的值:\ cin>>d[i].y; }

cout<<\请输入x的值:\获得变量x的值 cin>>x; y=Newton(x,count); cout<<\输出最终结果 } 等距插值

#include #include typedef struct data {

double x; double y; }Data;

Data data[50];

double Dengju(double x,int number) { double a[50][50],y=data[0].y,h,t,ji=1; { h=data[0].x-data[1].x; t=(x-data[0].x)/h; for(int k=0;k

return y; }

void main() { double x,y; int number; cout<<\请输入x[i],y[i]的组数,number:\要求用户输入数据组数 cin>>number;

//获得各组数据

for(int i=0;i

cout<<\请输入第\组x的值:\ cin>>data[i].x;

cout<<\请输入第\组y的值:\ cin>>data[i].y; }

cout<<\请输入x的值:\获得变量x的值 cin>>x; y=Dengju(x,number); cout<<\时,y=\ }

四、运行结果

(1)拉格朗日插值

(2)牛顿插值

(3)等距插值

五、体会

牛顿、拉格朗日插值都是通过给定n+1个互异的插值节点,让你求一条n次代数曲线近似地表示待插值的函数曲线.这就叫做代数插值啦.Lagrange插值代数和Newton法插值都属于代数插值的范畴.等距插值是在以上插值的基础上利用等距节点实现的。本次实验我学会了插值的三种方法并通过实验完成了计算机上的实现。

搜索更多关于: 6牛顿、拉格朗日或等距节点插值 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

数值分析实验报告(六) (信息一班-----陈宣羽----20100810010107) 一、实验名称 牛顿、拉格朗日或等距节点插值 二、实验目的 用牛顿、拉格朗日或等距节点插值实现插值法 三、题目 已知插值点 ?f(?1)?2??f(1)?1 ?f(2)?1?利用牛顿、拉格朗日或等距节点求当x=3.6时y的值 四、程序 #include #include typedef struct data { float x; float y; }Data; Data d[20];//最多二十组数据 float lagrange(float x,int count) { float y=0.0;

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com