计算方法_拉格朗日插值_C++实现_方法4
2016-11-03 22:00
465 查看
#include<time.h>
#include<stdio.h>
#include<graphics>
#include<dos.h>
#include<stdlib.h>
#define N 7
int minX,maxX;
int x[N+1],y[N+1];
int main()
{
int i;
char pp[30];
int driver=DETECT,mode;
initgraph(&driver,&mode," ");
setcolor(15);
line(30,400,600,400);/*划x轴*/
line(30,400,30,30);/*划y轴*/
line(587,405,600,400);/*划x轴的箭头*/
line(587,395,600,400);
line(30,30,25,43);/*划y轴的箭头*/
line(30,30,35,43);
setcolor(6);
line(400,45,450,45);
setcolor(1);
line(400,65,450,65);
setcolor(2);
line(400,85,450,85);
setcolor(13);
settextstyle(1,0,1);
outtextxy(600,407,"X");
outtextxy(15,10,"Y");
outtextxy(30,407,"O");
setcolor(6);
outtextxy(455,35,"Lagrange");
setcolor(1);
outtextxy(455,55,"Newton");
setcolor(2);
outtextxy(455,75,"spline");
randomize();
for(i=0;i<=N;i++)/*随机产生N个点*/
{
x[i]=random(60)+i*70;
y[i]=random(80)+100;
/*putpixel(30+x[i],400-y[i],1);*/
}
setcolor(2);
settextstyle(2,0,4);
for(i=0;i<=N;i++)/*划N个点坐标*/
{
circle(30+x[i],400-y[i],2);
sprintf(pp,"(%d,%d)",x[i],y[i]);
outtextxy(32+x[i],400-y[i],pp);
}
getch();
minX=x[0];
maxX=x
;
Lagrange();/*调用拉格朗日插值子函数*/
getch();
Newton();/*调用牛顿插值子函数*/
getch();
Spline();
getch();
closegraph();
}
Lagrange()/*拉格朗日插值子函数*/
{
float L,LI;
int i,j,k;
moveto(30+x[0],400-y[0]);
for(k=minX;k<=maxX;k++)
{
L=0;
for(i=0;i<=N;i++)
{
LI=1;
for(j=0;j<=N;j++)
if(j!=i) LI=LI*(k-x[j])/(x[i]-x[j]);
L=L+LI*y[i];
}
setcolor(6);
lineto(30+k,400-L);
delay(50);
}
}
Newton()/*牛顿插值子函数*/
{
}
Spline()/*样条插值子函数*/
{
}
#include<stdio.h>
#include<graphics>
#include<dos.h>
#include<stdlib.h>
#define N 7
int minX,maxX;
int x[N+1],y[N+1];
int main()
{
int i;
char pp[30];
int driver=DETECT,mode;
initgraph(&driver,&mode," ");
setcolor(15);
line(30,400,600,400);/*划x轴*/
line(30,400,30,30);/*划y轴*/
line(587,405,600,400);/*划x轴的箭头*/
line(587,395,600,400);
line(30,30,25,43);/*划y轴的箭头*/
line(30,30,35,43);
setcolor(6);
line(400,45,450,45);
setcolor(1);
line(400,65,450,65);
setcolor(2);
line(400,85,450,85);
setcolor(13);
settextstyle(1,0,1);
outtextxy(600,407,"X");
outtextxy(15,10,"Y");
outtextxy(30,407,"O");
setcolor(6);
outtextxy(455,35,"Lagrange");
setcolor(1);
outtextxy(455,55,"Newton");
setcolor(2);
outtextxy(455,75,"spline");
randomize();
for(i=0;i<=N;i++)/*随机产生N个点*/
{
x[i]=random(60)+i*70;
y[i]=random(80)+100;
/*putpixel(30+x[i],400-y[i],1);*/
}
setcolor(2);
settextstyle(2,0,4);
for(i=0;i<=N;i++)/*划N个点坐标*/
{
circle(30+x[i],400-y[i],2);
sprintf(pp,"(%d,%d)",x[i],y[i]);
outtextxy(32+x[i],400-y[i],pp);
}
getch();
minX=x[0];
maxX=x
;
Lagrange();/*调用拉格朗日插值子函数*/
getch();
Newton();/*调用牛顿插值子函数*/
getch();
Spline();
getch();
closegraph();
}
Lagrange()/*拉格朗日插值子函数*/
{
float L,LI;
int i,j,k;
moveto(30+x[0],400-y[0]);
for(k=minX;k<=maxX;k++)
{
L=0;
for(i=0;i<=N;i++)
{
LI=1;
for(j=0;j<=N;j++)
if(j!=i) LI=LI*(k-x[j])/(x[i]-x[j]);
L=L+LI*y[i];
}
setcolor(6);
lineto(30+k,400-L);
delay(50);
}
}
Newton()/*牛顿插值子函数*/
{
}
Spline()/*样条插值子函数*/
{
}
相关文章推荐
- 计算方法_拉格朗日插值_C++实现_方法1
- 计算方法_拉格朗日插值_C++实现_方法2
- 计算方法_拉格朗日插值_C++实现_方法3
- 计算方法_插值_C++实现
- 计算方法_牛顿插值_C++实现
- 车辆识别码VIN校验位计算方法及实现 VIN号检验、车架号检验 java、 C++
- 第四次程序设计作业 C++计算器计算及命令行的使用 前缀表达式方法实现
- 第四次程序设计作业 C++计算器计算及命令行的使用 前缀表达式方法实现
- 计算表达式的值c++逆波兰式实现方法
- C++使用递归和非递归算法实现的二叉树叶子节点个数计算方法
- C++基于蔡基姆拉尔森计算公式实现由年月日确定周几的方法示例
- C++实现统计学数据计算
- 【转载】python计算文件的行数和读取某一行内容的实现方法
- C++实现修改函数代码HOOK的封装方法
- android实现app通过jni调用C/C++方法
- C++实现不能被继承的类的两种方法
- 数值分析——c++实现非线性方程求根的方法
- 动态数组C++实现方法(分享)
- 矩阵特征分解介绍及雅克比(Jacobi)方法实现特征值和特征向量的求解(C++/OpenCV/Eigen)
- PHP编程计算两个时间段是否有交集的实现方法(不算边界重叠)