Скачиваний:
14
Добавлен:
01.05.2014
Размер:
902 б
Скачать
#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()
{
double x = 43.356;
newton(x);//Ї а ¬Ґва x - ЇаЁ¬Ґа­л© Є®аҐ­м
}

Соседние файлы в папке Лабораторная работа №12