Скачиваний:
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