计算机数值方法实验报告

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2011级4班雷小慧(2011060115)计算机数值方法

实验报告成绩册

姓名:雷小慧

学号:201106115

成绩:

数值计算方法与算法实验报告

学期:2012 至2013_ 第 2 学期时间:2013年 5月22日课程名称:_数值计算方法与算法专业:数学与应用数学班级:2011级4班实验编号: 1 实验项目:lagrange插值多项式指导教师_孙峪怀姓名:雷小慧学号: 2011060115 实验成绩:

一、实验目的及要求

实验目的:

体会使用Lagrange插值基函数构造插值多项式的特点,熟悉使用一次或二次Lagrange插值多项式近似函数y=f(x)的算法。掌握Lagrange插值多项式近似函数f(x)的误差表达式,并会熟练应用。

实验要求:

1. 给出一次、二次Lagrange插值算法

2. 用C语言实现算法

二、实验内容

用下列插值节点数据,构造一次和二次Lagrange插值多项式,并计算f(11.5),f(12.5)

三、实验步骤(该部分不够填写.请填写附页)

1.算法分析:

下面用伪码描述Lagrange插值多项式的算法:

Step1 输入:插值节点控制数n,插值点序列(xi,yi),i=0,1,……n,,要计算的函数点x.

Step2 for i=0to n /*控制Lagrange基函数序列*/

{{

for j=0 to n

/*对于给定x,计算Lagrange函数li(x)=∏

-

-

i

j

n

j

xj

xi

xj

x

))

/(

)

((

*/

if(j<>i) li(x)=li(x)*(x-xj)/(xi-xj); }

Ln(x)=Ln(x)+li(x)*yi/*计算Ln(x)=∑

=

n

i

yi

x

li

)

(

*/

}

2.用C语言实现算法的程序代码

#include

#define MAX_N 20 /*定义点的最大个数为20*/

typedef struct tagPOINT /*对点的结构化定义,一个点包括x和y*/ {

double x;

double y;

}POINT;

int main(void)

{

int n; /*n表示输入的点的个数,大于0小于20*/

int i,j,k;

POINT points[MAX_N+1];

double x,temp,Lagrange=0;

clrscr();

printf("\nPlease input n value:");

scanf("%d",&n);

if(n>MAX_N)

{

printf("The input n is larger than MAX_N,please redfine the MAX_N.\n");

return 1;

}

if(n<=0)

{

printf("Please input a number between 1 and %d.\n",MAX_N);

return 1;

}

printf("Now input the (x_i,y_i),i=0,...,%d:\n",n);/*输入每个点的x和y*/ for(i=0;i

{

scanf("%lf,%lf",&points[i].x,&points[i].y);

}

printf("Now input the x value:");/*输入要求的x值*/

scanf("%lf",&x);

for(k=0;k

{

temp=1;

for(j=0;j

{

if(k!=j)

{

temp=temp*(x-points[j].x)/(points[k].x-points[j].x);

}

}

Lagrange=Lagrange+temp*points[k].y;

}

printf("Lagrange(%lf)=%lf\n",x,Lagrange);/*输出结果*/

return 0;

}

3.在TC环境中运行如下:

4.运行结果:

F(11.5)的结果是:

F(12.5)的结果是:

数值计算方法与算法实验报告

学期:2012 至2013_ 第 2 学期时间:2013年 5月22日课程名称:_数值计算方法与算法专业:数学与应用数学班级:2011级4班实验编号: 2 实验项目:Newton插值多项式指导教师__孙峪怀姓名:雷小慧学号: 2011060115 实验成绩:

一、实验目的及要求

实验目的:

掌握Newton插值多项式的算法,理解Newton插值多项式构造过程中基函数的继承特点,掌握差商表的计算特点。

实验要求:

1. 给出Newton插值算法

2. 用C语言实现算法

二、实验内容

1. 用下列插值节点数据,构造Newton插值多项式,并计算N2(0.9),N3(0.9)的

2. 用下列插值节点数据,构造一个三次Newton插值多项式,并计算f(1.2)的值。

1.算法分析:

下面用伪码描述Lagrange插值多项式的算法:

Step1 输入插值节点数n,插值点序列{x(i),f(i)},i=1,2,……,n,要计算的插值点x.

Step2 形成差商表

for i=0 to n

for j=n to i

f(j)=((f(j)-f(j-1)/(x(j)-x(j-1-i));

Step3 置初始值temp=1,newton=f(0)

Step4 for i=1 to n

temp=(x-x(i-1))*temp/*由temp(k)=(x-x(k-1))*temp(k-1)形成

(x-x(0).....(x-x(i-1)*/

Newton=newton+temp*f(i);

Step5 输出f(x)的近似数值newton(x)=newton.

5.用C语言实现算法的程序代码

#include

#define MAX_N 20 /*点的最大个数为20*/

typedef struct tagPOINT /*结构化定义点包括x和y*/

相关文档
最新文档