Добавил:
Upload
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Информатика_1 / C / lecture6 / l6_1
.c/*1*/ #include<stdio.h>
/*2*/ #include<math.h>
/*3*/ #include<conio.h>
/*4*/ #define QUIT if(kbhit())if(getch()=='q')break
/*5*/ struct ans {double root; int err; };
/*6*/ double f(double);
/*7*/ double f(double z){return log(z)+2; }
/*8*/ double iter1(double, double, double (*f)(double));
/*9*/ void iter2(double *,double,int *,double (*)(double));
/*10*/ struct ans iter3(double , double, double (*)(double));
/*11*/ double iter1(double y, double e, double (*g)(double)){
/*12*/ while(fabs(y-g(y))>e){y=g(y); QUIT;}
/*13*/ return y;
/*14*/ }
/*15*/ void iter2(double *z,double e,int *err,double (*g)(double)){
/*16*/ while(fabs(*z-g(*z))>e){*z=g(*z); QUIT;}
/*17*/ if(fabs(*z-g(*z))<e)*err=0; else *err=1;
/*18*/ }
/*19*/
/*20*/ struct ans iter3(double y, double e, double (*g)(double)){
/*21*/ struct ans ret;
/*22*/ while(fabs(y-g(y))>e){y=g(y); QUIT;}
/*23*/ if(fabs(y-g(y))<e){ret.err=0; ret.root=y; } else ret.err=1;
/*24*/ return ret;
/*25*/ }
/*26*/
/*27*/ void main(void){
/*28*/ double x,eps,root,x1;
/*29*/ int error;
/*30*/ struct ans report;
/*31*/ printf("input x,eps -->");
/*32*/ scanf("%le%le",&x,&eps); x1=x;
/*33*/ root=iter1(x,eps,f);
/*34*/ printf("root from iter1=%e\n",root);
/*35*/ iter2(&x1,eps,&error,f);
/*36*/ if(error==0)printf("root from iter2=%e\n",x1);
/*37*/ else printf("error in iter2\n");
/*38*/ report=iter3(x,eps,f);
/*39*/ if(report.err==0)printf("root from iter3=%e\n",report.root);
/*40*/ else printf("error in iter3\n");
/*41*/
/*42*/ }
/*43*/
Соседние файлы в папке lecture6