cambaluc的个人博客分享 http://blog.sciencenet.cn/u/cambaluc

博文

帮学生看程序

已有 3424 次阅读 2014-11-26 16:58 |个人分类:算法|系统分类:教学心得

   “虽有嘉肴,弗食不知其旨也;虽有至道,弗学不知其善也。是故学然后知不足,教然后知困。知不足,然后能自反也;知困,然后能自强也。故曰:教学相长也。”

     这些天带学生上机做《数值分析》的题,辅导这些大三非计算机专业学生上机是很热闹的事,不少同学找不到错在哪里就喊老师帮忙看看,每组30几个同学写的C语言程序五花八门,对我也是个挑战,不但要找一些简单的符号错误,还得在他们不同的程序思路中来回切换。上午上完课,下午就犯困,真是“教然后知'困'”,不过通过为同学们查错,我也自强了点。

     最不好看的程序是语法没错,结果不对,几个同学下课了还不想让老师走,只好答应他们考回来看看。这是一个同学的三次样条插值程序,好几处错误,调试完后又“知困”了,困惑于想把学生都教会真难办,还有一大半自己同学没调试好呢。

 

#include<stdio.h>
#define N 4
void zhuiganfa(double a[],double b[],double c[],double f[],double x[])
{double bt[N],y[N];
bt[0]=c[0]/b[0];
for(int i=1;i<N-1;i++)
bt[i]=c[i]/(b[i]-a[i]*bt[i-1]);
y[0]=f[0]/b[0];
for(i=1;i<N;i++)
y[i]=(f[i]-a[i]*y[i-1])/(b[i]-a[i]*bt[i-1]);
x[N-1]=y[N-1];
for(i=N-2;i>=0;i--)
x[i]=y[i]-bt[i]*x[i+1];
}
void main()
{double x[N]={27.7,28,29,30},y[N]={4.1,4.3,4.1,3.0},b[N]={2,2,2,2};
  double h[N],miu[N],lanmada[N],d[N],m[N];
  double  s0=3.0,s3=-4.0;
  double xx,s;
  int i;
  miu[0]=lanmada[N-1]=h[N-1]=0;
  for(i=0;i<N-1;i++)
   h[i]=x[i+1]-x[i];
  for(i=1;i<N-1;i++)   //for(i=0;i<N;i++)
   miu[i]=h[i-1]/(h[i-1]+h[i]);
    miu[N-1]=1;  // ////

  for(i=1;i<N-1;i++)
   lanmada[i]=h[i]/(h[i-1]+h[i]);
     
  for(i=1;i<N-1;i++)  //for(i=0;i<N-1;i++)
      d[i]=6*((y[i+1]-y[i])/(x[i+1]-x[i])-(y[i]-y[i-1])/(x[i]-x[i-1]))/(h[i]+h[i-1]);
  lanmada[0]=1;
  d[0]=6*((y[1]-y[0])/h[0]-s0)/h[0];//d[0]=6*((y[1]-y[0])-s0)/h[0];
 
  d[N-1]=6*(s3-(y[N-1]-y[N-2])/(h[N-2]))/h[N-2];
  //d[N]=6*(s3-(y[i]-y[i-1])/(x[i]-x[i-1]))/h[i-1];
  for(i=0;i<N;i++)b[i]=2;//////

  zhuiganfa(miu,b,lanmada,d,m);//zhuiganfa(miu,d,b,m,lanmada);
  for(i=0;i<N-1;i++)
  for(xx=x[i];xx<x[i+1];xx+=0.01)
  {    s=m[i]*(x[i+1]-xx)*(x[i+1]-xx)*(x[i+1]-xx)/6*h[i]
    +m[i+1]*(xx-x[i])*(xx-x[i])*(xx-x[i])/6*h[i]
    +(y[i]-m[i]*h[i]*h[i]/6)*(x[i+1]-xx)/h[i]
    +(y[i+1]-m[i+1]*h[i]*h[i]/6)*(xx-x[i])/h[i] ;
  printf("%lf,%lfn",xx,s);
  }
}

//for(i=0;i<N;i++)
//   printf("%lf,%lf,%lf,%lf,%lfn",miu[i],b[i],lanmada[i],d[i],m[i]);

    程序中//后绿色部分是他原来的内容或缺少的语句,有5处错误.


 

 



https://blog.sciencenet.cn/blog-797552-846483.html

上一篇:9月的《读书》杂志
下一篇:地球物理专业的计算方法
收藏 IP: 222.222.111.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (1 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-11-23 10:35

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部