⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 exp.c

📁 BC环境下开发C语言实现的埃尔米特差值法的图形输出
💻 C
字号:

  #include<stdio.h>
  #include<graphics.h>
  #include<conio.h>

  double hmt(x,y,dy,n,t)
  int n;
  double t,x[],y[],dy[];
  { int i,j;
    double z,p,q,s;
    z=0.0;
    for (i=1;i<=n;i++)
      { s=1.0;
	for (j=1;j<=n;j++)
	  if (j!=i) s=s*(t-x[j-1])/(x[i-1]-x[j-1]);
	s=s*s;
	p=0.0;
	for (j=1;j<=n;j++)
	  if (j!=i) p=p+1.0/(x[i-1]-x[j-1]);
	q=y[i-1]+(t-x[i-1])*(dy[i-1]-2.0*y[i-1]*p);
	z=z+q*s;
      }
    return(z);
  }

  int x_transform(double doub_x)
  {
	return doub_x*640-20;
  }

  int y_transform(double doub_y)
  {
	return 480-doub_y*480-20;
  }

  void pot(int x,int y)
  {
	fillellipse(x,y,3,3);
  }

  void main()
  {
    int i;
    double t,z;
    static double x[10]={0.1,0.15,0.3,0.45,0.55,0.6,0.7,0.85,0.9,1.0};
    static double y[10]={0.904837,0.860708,0.740818,0.637628,0.576950,
		       0.548812,0.496585,0.427415,0.406570,0.367879};
    static double dy[10];
    char xy[10][4]={
    {'0','.','1','\0'},
    {'0','.','2','\0'},
    {'0','.','3','\0'},
    {'0','.','4','\0'},
    {'0','.','5','\0'},
    {'0','.','6','\0'},
    {'0','.','7','\0'},
    {'0','.','8','\0'},
    {'0','.','9','\0'},
    {'1','.','0','\0'},
    };
    int t_pre=x_transform(x[0]),z_pre=y_transform(y[0]);

    int gdriver=DETECT;
    int gmode;
    initgraph(&gdriver,&gmode,"");

    for (i=0;i<=9;i++)
    {
	dy[i]=-y[i];
    }

    setcolor(WHITE);
    line(10,440,630,440);
    line(10,440,10,10);
    line(630,440,620,435);
    line(630,440,620,445);
    line(10,10,5,20);
    line(10,10,15,20);
    outtextxy(5,450,"0");
    for (i=0;i<=9;i++)
    {
	outtextxy(i*62+43,450,xy[i]);
	outtextxy(17,400-i*43,xy[i]);
    }

    for	(t=0.1;t<=1.0;t+=0.001)
    {
	int int_t,int_z;
	z=hmt(x,y,dy,10,t);

	int_t=x_transform(t);
	int_z=y_transform(z);

	line(t_pre,z_pre,int_t,int_z);

	t_pre=int_t;
	z_pre=int_z;
    }

    setcolor(YELLOW);
    setfillstyle(SOLID_FILL,YELLOW);
    for (i=0;i<=9;i++)
    {
	dy[i]=-y[i];
	pot(x_transform(x[i]),y_transform(y[i]));
    }
    outtextxy(150,460,"The yellow pots are those which has been given");
    outtextxy(175,470,"The white curve is computed by hermite");
    getch();
    closegraph();
  }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -