Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
11
Добавлен:
09.06.2015
Размер:
1.65 Кб
Скачать
/*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