当前位置:首页 > 计算方法实验报告册
float F1(float x) {
//该函数计算函数?1(x)的值 }
float P0(float x) {
//该函数计算函数?0(x)的值 }
float P1(float x) {
//该函数计算函数?1(x)的值 }
调用上述函数,实现三次样条插值 float *Cubic_Spline() {
//该函数计算所有点的插值结果 }
三 实验组织运行要求
实验前,由任课教师落实实验任务,每个学生事先编写好算法设计源程序代码。集中上机、调试
并通过计算机图形可视化演示操作实例来测试、验证所学的数值分析理论。
四 实验条件
为每个学生提供一台具有WINDOWS 98/XP/NT/2000操作系统的计算机;同时提供VC++/VB/JAVA/TC等集成语言开发环境来编程设计计算方法的上机实验。
五 实验步骤
1. 根据实验内容和算法流程图预先编好程序初稿,上机调试、运行, 输出正确的结果。
2. 三种类型的插值函数所生成的图形要显示在同一坐标轴上,并用三种不同的颜色分别表示出来。 3. 分析它们的运行结果,并比较三种插值函数各自不同的特点。 4. 实验完毕后提交实验报告
六 实验程序
NInterpolation.cpp #include \#include \
NInterpolation::NInterpolation(void) { }
NInterpolation::NInterpolation(double *x,double *y,int n) {
this->n=n;
this->x=new double[n+1];
}
this->y=new double[n+1]; for(int i=0;i<=n;i++) { }
N=x[n]-x[0]; X=new double[N+1]; Y=new double[N+1]; for(int i=0;i<=N;i++) X[i]=x[0]+i; a=new double[n+1]; for(int k=0;k<=n;k++) {
double t=0;
for(int i=0;i<=k;i++) { } a[k]=t; }
double m=1;
for(int j=0;j<=k;j++) { }
t+=y[i]/m;
if(j==i)
continue; m*=(x[i]-x[j]); else
this->x[i]=x[i]; this->y[i]=y[i];
NInterpolation::~NInterpolation(void) { }
void NInterpolation::Netwon(void) { }
for(int i=0;i<=N;i++) { }
Y[i]=0;
for(int j=0;j<=n;j++) { }
Y[i]+=((l(X[i],j)*a[j]));
double NInterpolation::l(double mx,int p) { }
ZInterpolation.cpp #include \#include \
ZInterpolation::ZInterpolation(void) { }
ZInterpolation::ZInterpolation(double *x,double *y,int n) { }
ZInterpolation::~ZInterpolation(void) { }
double ZInterpolation::l(double mx, int i) { }
double t=1;
for(int j=0;j<=n;j++)
if(j==i)
continue;
t*=(mx-x[j])/(x[i]-x[j]); else this->n=n;
this->x=new double[n+1]; this->y=new double[n+1]; for(int i=0;i<=n;i++) { }
N=x[n]-x[0]; X=new double[N+1]; Y=new double[N+1]; for(int i=0;i<=N;i++) X[i]=x[0]+i;
this->x[i]=x[i]; this->y[i]=y[i]; double m=1;
for(int i=0;i
m*=(mx-x[i]);
return t;
double ZInterpolation::L(double mx) { }
void ZInterpolation::lagrange(void) { }
x=[1 2 3 4]; y=[12 -8 34 100]; xi=1:0.1:4;
yi=interp1(x,y,xi,'spline'); plot(x,y,'o',xi,yi);
for(int i=0;i<=N;i++)
Y[i]=L(X[i]); double t=0;
for(int i=0;i<=n;i++)
t+=y[i]*l(mx,i); return t;
七 实验结果
NInterpolation ZInterpolation
Cubic_Spline
共分享92篇相关文档