Скачиваний:
16
Добавлен:
01.05.2014
Размер:
1.01 Кб
Скачать
#include<stdio.h>
#include<math.h>
//newton

void func(double x, double & fx, double & dfx)
{
	fx = x*x*x-3*x+1;//ўлзЁб«Ґ­ЁҐ §­ зҐ­Ёп дг­ЄжЁЁ
	dfx = 3*x*x - 3; //ўлзЁб«Ґ­ЁҐ §­ зҐ­Ёп Їа®Ё§ў®¤­®©
}



void newton(double x) /* newton */
{
	const	double tol   = 1.0E-9;
	int max = 20;
	double fx, dfx, dx, x1;
	int i;
	char error;


  error = 0;
  i = 0;
  do
 {
    i = i + 1;
    x1 = x;
    func(x,fx,dfx);
    if (dfx == 0.0)
      {
	error = 1;
	x = 1.0;
       //	printf("%cERROR: slope zero",7);
      }
    else
      {
	dx = fx/dfx;
	x = x1 - dx;
	//printf("x=%f, fx=%f, dfx=%f\n",x,fx,dfx);
      }
  }while(!(error || (i > max) || (abs(dx) <= abs(tol*x)) ));
  /*if (i > max)
    {
	printf("%cERROR: no convergence in %d loops\n",7,max);
      error = 1;
    }   */
}		/* newton */

void main()
{
  int k;
  k = 0;
  do
  {
   k = k + 1;
   double x = 43.356;
   newton(x);//Ї а ¬Ґва x - ЇаЁ¬Ґа­л© Є®аҐ­м
  }
     while (k < 100000);

     }
Соседние файлы в папке lap_1