拉格朗日多项式插值(C语言)

合集下载

拉格朗日插值法--c语言编程

拉格朗日插值法--c语言编程

#include

main()

{

int i,j;

const float x[4]={1.1275,1.1503,1.1735,1.1972};

const float y[4]={0.1191,0.13954,0.15932,0.17903};

double l[4]={1,1,1,1},X=1.13,Y=0;

for(i=0;i<4;i++)

{

for(j=0;j<4;j++)

{

if(i==j)

continue;

l[i]=l[i]*(X-x[j])/(x[i]-x[j]);

}

Y+=l[i]*y[i];

}

printf("计算近似解为:\n");

printf("Y=%f\n",Y);

}

拉格朗日多项式插值法

拉格朗日多项式插值法

拉格朗日多项式插值法

拉格朗日多项式插值法是通过构造一个多项式函数来逼近原函

数的一种方法。它的基本思想是,给定一个函数在不同点上的取值,通过构造一个多项式函数,使其在这些点上与原函数取值相同,从而得到一个逼近函数。具体地,拉格朗日多项式插值法的步骤如下:

1. 给定一组数据点$(x_1,y_1),(x_2,y_2),...,(x_n,y_n)$,其中$x_i$为自变量,$y_i$为因变量。

2. 构造拉格朗日基函数$L_i(x)$,定义为:

$$L_i(x)=prod_{j=1,j

eq i}^nfrac{x-x_j}{x_i-x_j}$$

其中,$i=1,2,...,n$。这里的基函数$L_i(x)$可以看作是在每个数据点处都为1,而在其他点处都为0的一个函数,具有良好的插值性质。

3. 构造拉格朗日插值多项式$p(x)$,定义为:

$$p(x)=sum_{i=1}^n y_iL_i(x)$$

这个多项式函数就是通过拉格朗日基函数和数据点的取值所构

造出来的逼近函数,它在每个数据点处都与原函数取值相同。

4. 利用插值多项式$p(x)$进行求解。

拉格朗日多项式插值法是一种简单而有效的插值方法,它可以用于求解函数值、导数、积分等问题,并被广泛应用于科学、工程等领域。

- 1 -

数值计算(数值分析)实验2-拉格朗日(Larange)插值【c程序实现+流程图】

数值计算(数值分析)实验2-拉格朗日(Larange)插值【c程序实现+流程图】

实验二Larange插值

(一)实验目的

熟练掌握Larange算法。

(二)实验项目内容

1.画出算法流程图。

2.对每种算法分别用C程序实现。

3.调试程序。

(三)实验报告撰写

流程图,程序代码,运行结果

实验二 Larange插值

实验报告

一、流程图

二、 程序代码【C 语言】

#include<stdio.h>

main()

{float x0,p=0,t,x[100],y[100];

int n,i,j,k;

printf("输入x0的值和所求插值多项式的次数n"); scanf("%f%d",&x0,&n);

printf("输入已知的x,y 的取值");

for(i=0;i<=n;i++) 开始

输入x

(),0,1,......i i x y i n

=0,0y k ⇒⇒

1k ⇒

0....,1, 1...,j

k j x x t t x x j k k n

-⇒-=-+

k y t y y +⇒

?k n = 输出y

结束

1k k +⇒

scanf("%f%f",&x[i],&y[i]);

for(k=0;k<=n;k++)

{t=1;

for(j=0;j<=n;j++)

{if(j!=k)

t=t*(x0-x[j])/(x[k]-x[j]);}

p+=t*y[k];

}

printf("在x0处插值多项式为%f\n",p);

}

三、运行结果【截图】

实例:利用100,121和144的开方值求115.

解:设y与x的关系式为x

y=.则]

10

11

[

=

y.

144

12

121

100

[

x,]

=

C语言编程实现拉格朗日插值

C语言编程实现拉格朗日插值

就是表达出一个函数L n(x)的运算程序:能输入某个数值进去,结果以表格或图像的形式输出,实在两者都不行就最简单的输出就行

简单例如:已知函数y=2x+1

当然,我们不知道以上的函数,而且这个函数也假设不容易得出,所以我们要用一种通用的方法来构造一个函数L n(x)用来代替(当然,其中有误差,但没关系)

这个方法是:L n(x)=∑y k l k(x) (求和范围是k=0到n)

(x-x0)(x-x1)…(x-x k-1)(x-x k+1)…(x-x n)

其中l k(x)= ——————————————————(k=0,1,2…n) (x k-x0)(x k-x1)…(x k-x k-1)(x k-x k+1)…(x k-x n)

(中间下标相同的哪项没有!)

就是讲,假设我想求L3(1.5)的话,即求当输入n=3,x=1.5时,我们所构造的函数值:L3(x)=∑y k l k(x)=y0l0(x)+y1l1(x)+y2l2(x)+y3l3(x)

=1*[(x-x1)(x-x2)(x-x3)] / [(x0-x1)(x0-x2)(x0-x3)]

+ 3*[(x-x0)(x-x2)(x-x3)] / [(x1-x0)(x1-x2)(x1-x3)]

+ 5*[(x-x0)(x-x1)(x-x3)] / [(x2-x0)(x2-x1)(x2-x3)]

+ 7*[(x-x0)(x-x1)(x-x2)] / [(x3-x0)(x3-x1)(x3-x2)]

=1*[(1.5-1)(1.5-2)(1.5-3)] / [(0-1)(0-2)(0-3)]

拉格朗日插值代码

拉格朗日插值代码

#include<stdio.h>

float czl(int n,float x1,float *px,float *py);

void main()

{

float x1,y1;

int n;

float *p1,*p2;

float x[10]={1.1275,1.1503,1.1735,1.972};

float y[10]={0.1191,0.13954,0.15932,0.1793}; printf("Input numbers:x1 n=\n");

scanf("%f%d",&x1,&n);

p1=x;

p2=y;

y1=czl(n,x1,p1,p2);

printf("y1=%f\n",y1);

}

float czl(int n,float x1,float *px,float *py) //核心函数{

int i,j;

float x[10],y[10],t,y1;

y1=0.0;

for(i=0;i<n;i++,px++,py++)

{

x[i]=*px;

y[i]=*py;

}

for(i=0;i<n;i++)

{

t=1.0;

for(j=0;j<n;j++)

if(i!=j)t=t*(x1-x[j])/(x[i]-x[j]); y1=y1+t*y[i];

}

return(y1);

}

拉格朗日插值C语言代码

拉格朗日插值C语言代码

合肥大学

方名0904013027

#include<stdio.h>

#include<conio.h>

#define N 4

int checkvalid(double x[],int n);

double Lagrange(double x[],double y[],double varx,int n);

void main()

{

double a;

double x[N+1]={0.4,0.55,0.80,0.9,1};

double y[N+1]={0.41075,0.57815,0.88811,1.02652,1.17520};

double varx=0.5;

a=Lagrange(x,y,varx,N);

if(checkvalid(x,N)==1)

printf("\n\n插值结果: P(%f)=%f\n",varx,a);

else

printf("输入的插值节点的x值必须互异!\n");

}

int checkvalid(double x[],int n)

{

int i,j;

for(i=0;i<n-1;i++)

for(j=i+1;j<n;j++)

{

if(x[i]==x[j])

{

printf("第%d个和第%d个节点值相同\n",i,j);

return 0;

}

else

return 1;

}

}

double Lagrange(double x[],double y[],double varx,int n)

{

int i,j;

double s=0,p,p1,p2;

printf("Ln(x) =\n");

拉格朗日插值法C语言的实现

拉格朗日插值法C语言的实现

拉格朗日插值法C语言的实现

实验报告:拉格朗日插值法的C语言实现

一、引言

拉格朗日插值法是一种常见的数值插值方法,用于通过已知数据点的

函数值,估计在其他点上的函数值。其基本思想是依据已知数据点构造一

个满足通过这些点的多项式,并使用这个多项式来估计其他点上的函数值。本实验旨在实现拉格朗日插值法的C语言代码,并通过实例进行验证和分析。

二、原理介绍

拉格朗日插值法的基本原理是通过已知数据点的函数值,计算一个多

项式,使得该多项式通过这些数据点,从而估计其他点上的函数值。具体

而言,对于给定的n个数据点 (x0, y0), (x1, y1), ..., (xn, yn),其

中xi和yi分别表示自变量和因变量在第i个数据点上的取值,我们要计

算一个多项式:

P(x) = y0 * L0(x) + y1 * L1(x) + ... + yn * Ln(x)

其中,Lk(x)是拉格朗日基函数,定义为:

Lk(x) = Π(j=0,j≠k,n) (x - xj) / (xk - xj)

三、实验设计

本实验设计了一个C语言函数lagrange_interpolation,该函数以

已知数据点和待插值的点作为输入,输出待插值点的函数值。

1.函数接口设计:

```

double lagrange_interpolation(double *x, double *y, int n, double xi);

```

参数说明:x表示已知数据点的自变量数组,y表示对应的因变量数组,n为已知数据点的个数,xi表示待插值点的自变量。

返回值:返回待插值点的函数值。

拉格朗日插值法C语言编程

拉格朗日插值法C语言编程

实验内容和原理或涉及的知识点

公式:

基点x i 的n 次插值基函数( i=0,1,…,n):

n

i x x x x x x x x x x x x x x x x x x x x x x x x x l j i j

n i j j n i i i i i i i n i i i ,,1,0)

())(())(()())(())(()(011101110 =--∏=----------=≠=+-+- n 次拉格朗日插值多项式:

∑∏

=≠=--=+++=n i n i j j j

i j i n n n x x x x y x l y x l y x l y x P 001100)()()()( 流程图:

验证例子

已知如下的函数表,试编写程序,用拉格朗日插值多项式求0.5,0.7,0.85三点处的函数值。

实验结果:

插值点的个数 m=3

point X1=0.5

P(0.5)=0.5210896825396829

point X2=0.7

P(0.7)=0.758588889799115

point X3=0.85

P(0.85)=0.9561194794143673

实验代码

#include <stdio.h>

#include <conio.h>

#include <malloc.h>

float lagrange(float *x,float *y,float xx,int n) /*拉格朗日插值算法*/

{

int i,j;

float *a,P=0.0; /*a作为临时变量,记录拉格朗日插值多项式*/

(C语言)拉格朗日插值

(C语言)拉格朗日插值

/*拉格朗日插值*/

#include<stdio.h>

#include<math.h>

#include<stdlib.h>

#define N 200

void main()

{

int i,j,n; /*定义各变量*/

float a,b,t;

int k;

float x[N],y[N];

FILE *fp1;

if((fp1=fopen("in1.txt","r"))==NULL) /*输入所求的点a及插值次数n*/ {

printf("Can't open this file!\n");

exit(0);

}

for(i=0;i<2;i++)

fscanf(fp1,"%f%d",&a,&n);

fclose(fp1);

FILE *fp2;

if((fp2=fopen("in2.txt","r"))==NULL) /*输入已知的n+1个点坐标*/ {

printf("Can't open this file!\n");

exit(0);

}

for(i=0;i<n+1;i++)

fscanf(fp2,"%f%f",&x[i],&y[i]);

fclose(fp2);

for(k=0,b=0;k<=n;k++) /*拉格朗日插值多项式*/

{

t=1;

for(j=0;j<k;j++) /*j不可以等于k*/

t*=(a-x[j])/(x[k]-x[j]);

for(j=k+1;j<=n;j++)

t*=(a-x[j])/(x[k]-x[j]);

b+=t*y[k];

}

FILE *fp3; /*输出运算结果*/

拉格朗日插值法C语言的实现

拉格朗日插值法C语言的实现

实验 一 .拉格朗日插值法C 语言的实现

1.实验目的:

进一步熟悉拉格朗日插值法。

掌握编程语言字符处理程序的设计和调试技术。

2.实验要求:

已知:某些点的坐标以及点数。

输入:条件点数以及这些点的坐标 。

输出:根据给定的点求出其对应的拉格朗日插值多项式的值 。

3.程序流程:

(1)输入已知点的个数;

(2)分别输入已知点的X 坐标;

(3)分别输入已知点的Y 坐标;

(4)通过调用函数lagrange 函数,来求某点所对应的函数值。

拉格朗日插值多项式如下:

0L ()()0,1,n

n j k k j j k x y l x y j n ====∑……

其中00()()0,1,,()k k x x l x k n x x -=

=-k-1k+1n k k-1k k+1k n ……(x-x )(x-x )?…(x-x )…………(x -x )(x -x )?…(x -x )

程序流程图:

程序如下:

#include <iostream>

#include <conio.h>

#include <malloc.h>

float lagrange(float *x,float *y,float xx,int n) /*拉格朗日插值算法*/ {

int i,j;

float *a,yy=0.0; /*a作为临时变量,记录拉格朗日插值多项式*/ a=(float *)malloc(n*sizeof(float));

for(i=0;i<=n-1;i++)

{

a[i]=y[i];

for(j=0;j<=n-1;j++)

拉格朗日(Lagrange)插值算法

拉格朗日(Lagrange)插值算法

拉格朗⽇(Lagrange)插值算法

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

这⾥以拉格朗⽇3次插值为例,利⽤C++进⾏实现:

1//利⽤lagrange插值公式

2 #include<iostream>

3using namespace std;

4

5double Lx(int i,double x,double* Arr)

6 {

7double fenzi=1,fenmu=1;

8for (int k=0;k<4;k++)

9 {

10if (k==i)

11continue;

12 fenzi*=x-Arr[k];

13 fenmu*=Arr[i]-Arr[k];

14 }

15return fenzi/fenmu;

16 }

17

18int main()

19 {

20double xArr[4]={};

21double yArr[4]={};

22//输⼊4个节点坐标

23 cout<<"请依次输⼊4个节点的坐标:"<<endl;

24for (int i=0;i<4;i++)

25 cin>>xArr[i]>>yArr[i];

26

27//输⼊要求解的节点的横坐标

28 cout<<"请输⼊要求解的节点的横坐标:";

29double x;

30 cin>>x;

31double y=0;

拉格朗日插值算法C语言实现

拉格朗日插值算法C语言实现

#include

#include

#include

float lagrange(float *x,float *y,float xx,int n) /*拉格朗日插值算法*/ { int i,j;

float *a,yy=0.0; /*a作为临时变量,记录拉格朗日插值多项式*/

a=(float *)malloc(n*sizeof(float));

for(i=0;i<=n-1;i++)

{ a[i]=y[i];

for(j=0;j<=n-1;j++)

if(j!=i) a[i]*=(xx-x[j])/(x[i]-x[j]);

yy+=a[i];

}

free(a);

return yy;

}

main()

{ int i,n;

float x[20],y[20],xx,yy;

printf("Input n:");

scanf("%d",&n);

if(n>=20) {printf("Error!The value of n must in (0,20)."); getch();return 1;} if(n<=0) {printf("Error! The value of n must in (0,20)."); getch(); return 1;} for(i=0;i<=n-1;i++)

{ printf("x[%d]:",i);

scanf("%f",&x[i]);

}

printf("\n");

for(i=0;i<=n-1;i++)

{ printf("y[%d]:",i);scanf("%f",&y[i]);}

用C语言实现拉格朗日插值

用C语言实现拉格朗日插值

用C语言实现拉格朗日插值

拉格朗日插值是一种在给定有限个数据点的函数值的情况下,用一个多项式函数逼近这些数据点,从而在数据点之间进行插值和外推的方法。这个多项式函数称为拉格朗日插值多项式。

拉格朗日插值多项式的形式如下:

P(x) = Σ L(x) * yi

其中,i的取值范围是从0到n,n为给定的数据点的数量。L(x)代表拉格朗日基函数,可以表示为:

L(x) = Π (x - xj) / (xi - xj), 其中i ≠ j

接下来,我们将用C语言实现拉格朗日插值。

首先,我们定义一个结构体来存储数据点的x和y坐标:

```c

typedef struct

double x;

double y;

} DataPoint;

```

然后,我们定义一个函数来计算拉格朗日基函数的值:

```c

double lagrange_basis(double x, DataPoint* data_points, int data_count, int index)

double result = 1.0;

for (int i = 0; i < data_count; i++)

if (i != index)

result *= (x - data_points[i].x) / (data_points[index].x - data_points[i].x);

}

}

return result;

```

接下来,我们定义一个函数来计算拉格朗日插值多项式的值:

```c

double lagrange_interpolation(double x, DataPoint*

拉格朗日插值法c语言

拉格朗日插值法c语言

实验报告实验课程名称数值计算方法

实验项目名称 Lagrange插值公式

年级

专业

学生姓名

学号

理学院

实验时间:201 年月日

学生实验室守则

一、按教学安排准时到实验室上实验课,不得迟到、早退和旷课。

二、进入实验室必须遵守实验室的各项规章制度,保持室内安静、整洁,不准在室内打闹、喧哗、吸烟、吃食物、随地吐痰、乱扔杂物,不准做与实验内容无关的事,非实验用品一律不准带进实验室。

三、实验前必须做好预习(或按要求写好预习报告),未做预习者不准参加实验。

四、实验必须服从教师的安排和指导,认真按规程操作,未经教师允许不得擅自动用仪器设备,特别是与本实验无关的仪器设备和设施,如擅自动用或违反操作规程造成损坏,应按规定赔偿,严重者给予纪律处分。

五、实验中要节约水、电、气及其它消耗材料。

六、细心观察、如实记录实验现象和结果,不得抄袭或随意更改原始记录和数据,不得擅离操作岗位和干扰他人实验。

七、使用易燃、易爆、腐蚀性、有毒有害物品或接触带电设备进行实验,应特别注意规范操作,注意防护;若发生意外,要保持冷静,并及时向指导教师和管理人员报告,不得自行处理。仪器设备发生故障和损坏,应立即停止实验,并主动向指导教师报告,不得自行拆卸查看和拼装。

八、实验完毕,应清理好实验仪器设备并放回原位,清扫好实验现场,经指导教师检查认可并将实验记录交指导教师检查签字后方可离去。

九、无故不参加实验者,应写出检查,提出申请并缴纳相应的实验费及材料消耗费,经批准后,方可补做。

十、自选实验,应事先预约,拟订出实验方案,经实验室主任同意后,在指导教师或实验技术人员的指导下进行。

10个重要的算法C语言实现源代码:拉格朗日,牛顿插值,高斯,龙贝格

10个重要的算法C语言实现源代码:拉格朗日,牛顿插值,高斯,龙贝格

10个重要的算法C语言实现源代码:拉格朗日,牛顿插值,高斯,龙

贝格~~

关键字: 拉格朗日,牛顿插值,高斯,龙贝格

1.拉格朗日插值多项式,用于离散数据的拟合

C/C++ code

#include <stdio.h>

#include <conio.h>

#include <alloc.h>

float lagrange(float *x,float *y,float xx,int n) /*拉格朗日插值算法*/

{ int i,j;

float *a,yy=0.0; /*a作为临时变量,记录拉格朗日插值多项式*/ a=(float *)malloc(n*sizeof(float));

for(i=0;i<=n-1;i++)

{ a[i]=y[i];

for(j=0;j<=n-1;j++)

if(j!=i) a[i]*=(xx-x[j])/(x[i]-x[j]);

yy+=a[i];

}

free(a);

return yy;

}

main()

{ int i,n;

float x[20],y[20],xx,yy;

printf("Input n:");

scanf("%d",&n);

if(n>=20) {printf("Error!The value of n must in (0,20)."); getch();return 1;}

if(n<=0) {printf("Error! The value of n must in (0,20)."); getch(); return 1;}

拉格朗日多项式插值(C语言)

拉格朗日多项式插值(C语言)

#include<iostream>

#include<conio.h>

#include<malloc.h>

float lagrange(float *x,float *y,float xx,int n) /*拉¤-格?朗¤¨º日¨?插?值¦Ì算?法¤¡§*/

{

int i,j;

float *a,yy=0.0; /*a作Á¡Â为a临¢¨´时º¡À变À?量¢?,ê?记?录?拉¤-格?朗¤¨º日¨?插?值¦Ì多¨¤项?式º?*/

a=(float *)malloc(n*sizeof(float));

for(i=0;i<=n-1;i++)

{

a[i]=y[i];

for(j=0;j<=n-1;j++)

if(j!=i) a[i]*=(xx-x[j])/(x[i]-x[j]);

yy+=a[i];

}

free(a);

return yy;

}

int main()

{

int i;

int n;

float x[20],y[20],xx,yy;

printf("Input n:");

scanf("%d",&n);

if(n>=20)

{

printf("Error!The value of n must in (0,20)."); getch();return 1;

}

if(n<=0)

{

printf("Error! The value of n must in (0,20)."); getch(); return 1;

}

for(i=0;i<=n-1;i++)

{

printf("x[%d]:",i);

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

#include

#include

#include

float lagrange(float *x,float *y,float xx,int n) /*拉¤-格?朗¤¨º日¨?插?值¦Ì算?法¤¡§*/

{

int i,j;

float *a,yy=0.0; /*a作Á¡Â为a临¢¨´时º¡À变À?量¢?,ê?记?录?拉¤-格?朗¤¨º日¨?插?值¦Ì多¨¤项?式º?*/

a=(float *)malloc(n*sizeof(float));

for(i=0;i<=n-1;i++)

{

a[i]=y[i];

for(j=0;j<=n-1;j++)

if(j!=i) a[i]*=(xx-x[j])/(x[i]-x[j]);

yy+=a[i];

}

free(a);

return yy;

}

int main()

{

int i;

int n;

float x[20],y[20],xx,yy;

printf("Input n:");

scanf("%d",&n);

if(n>=20)

{

printf("Error!The value of n must in (0,20)."); getch();return 1;

}

if(n<=0)

{

printf("Error! The value of n must in (0,20)."); getch(); return 1;

}

for(i=0;i<=n-1;i++)

{

printf("x[%d]:",i);

scanf("%f",&x[i]);

}

printf("\n");

for(i=0;i<=n-1;i++)

{

printf("y[%d]:",i);scanf("%f",&y[i]);

}

printf("\n");

printf("Input xx:");

scanf("%f",&xx);

yy=lagrange(x,y,xx,n);

printf("x=%f,y=%f\n",xx,yy);

getch();

}

牛顿(Newton)插值公式

#include

#include

#include"math.h"

#define N 4

using namespace std;

void main()

{ void lin(double x[],double y[],double t,int n);

void newton(double a[],double b[],double t,double h,int n);

double t,h,d; int i,j,n,k;

double x[N]={0.4,0.55,0.65,0.80};

double y[N]={0.41075,0.57815,0.69675,0.88811};

double a[N],b[N];

h=0.1; //h为a等̨¨距¨¤节¨²点Ì?宽¨ª度¨¨,ê?t为a插?值¦Ì点Ì?

t=0.596;

if(!h) cout<<"此ä?函¡¥数ºy为a常¡ê数ºy"<

else

{

if(tx[N-1])

cout<

else

{

cout<<"利¤?用®?分¤?段?线?性?插?值¦Ì:êo"<

lin(x,y,t,N);

cout<<"利¤?用®?等̨¨距¨¤节¨²点Ì?牛¡ê顿¨´插?值¦Ì:êo"<

newton(x,y,t,h,N);

}

}

system ("pause");

}

void lin(double x[],double y[],double t,int n)

{

int i;double w,e,c; //w为a逼À?近¨¹值¦Ìe为a余®¨¤项?

for(i=0;i

{if(t==x[i])

{

cout<<"sin("<

}

else if (t>x[i])

{ w=y[i]*(t-x[i+1])/(x[i]-x[i+1])+y[i+1]*(t-x[i])/(x[i+1]-x[i]);

c=fabs(cos(x[i])) > fabs(cos(x[i+1])) ? fabs(cos(x[i])) : fabs(cos(x[i+1]));

e=c*(t-x[i])*(t-x[i+1]);

cout<<"sin("<

break;

}

}

}

void newton(double a[],double b[],double t,double h,int n)

{

int i,j,c;

double d=0.0;

double r=1.0,k=0.0,m=1.0,s=0.0; //d为a所¨´求¨®近¨¹似?值¦Ì,ê?r为a差?值¦Ì余®¨¤项?

double f(double b[],int n,int a);

for(i=0;i

if (t

break;

d=b[i-1]; //b[i-1]为a牛¡ê顿¨´向¨°前¡ã插?值¦Ì的Ì?第̨²一°?个?点Ì?函¡¥数ºy值¦Ì

k=(t-a[i-1])/h; //k为a(ꡧ插?值¦Ì点Ì?—a相¨¤邻¢¨²前¡ã一°?点Ì?)ê?/等̨¨距¨¤h

c=j=i-1;

for(i=j,j=0;i

{

m*=(k-j)/(j+1);

if((i+1)

s=m * f(b,i,c);

d+=s;

r*=h*(k-j)/(j+1);

}

r*=h*(k-j)/(j+1)*fabs(cos(a[c]));

cout<<"si n("<

}

double f(double b[],int n,int a) //求¨®n阶¡Á差?分¤?,ê?用®?p【?a】?或¨°q【?a】?存ä?储ä¡én阶¡Á差?分¤?值¦Ì

{

double p[N-1];

double q[N-1]; //定¡§义°?两¢?个?数ºy组Á¨¦存ä?储ä¡é差?分¤?

int i,j;

for(i=0;i<=n;i++)

相关文档
最新文档