На тему биография ньютона

Содержание

Используемая литература

1. Учимся программировать на С++

2. Решение линейных уравнений методом Ньютона (касательных)

Метод Ньютона (касательных).

Описание

В рамках метода Ньютона предполагается, что функция дифференцируема. Согласно этому методу строится линейная аппроксимация функции в начальной точке, а точка, в которой аппроксимирующая линейная функция обращается в нуль, принимается в качестве следующего приближения.

Итерационый процесс схождения к корню реализуется формулой:
xn+1=xn-f(xn)/f "(xn). Вычисления продолжаются пока соблюдается условие
|xn+1-xn |>=eps.

В зависимости от выбора начальной точки и вида функции алгоритм по методу Ньютона может как сходиться к корню уравнения, так и расходиться.

Ниже приведена блок-схема алгоритма и листинг программы, реализующей данный алгоритм на языке С++. Также привожу текст, которая выдает данная программа при решении исходного уравнения.


Блок-схема алгоритма

[image]


Листинг программы

//метод Ньютона для решения кубических уравнений

#include<math.h>

#include<iostream.h>

double a[4]={0},

b[3]={0},

c[2]={0},

prec=0.00000;

double minim=0, maxim=0;

void Hello(void);

void Input();

void Derivative();

void Calculation();

double Calc_Fun(double);

double Calc_First(double);

double Calc_Second(double);

main(void)

{

Hello();

Input();

Derivative();

Calculation();

return 0;

}

void Hello(void)

{

cout<<"Программа для решения кубических уравнений методом касательных (метод Ньютона). ";

}

void Input()

{

cout<<"Кубическое уравнение имеет вид"<<endl

<<"a1*x^3+a2*x^2+a3*x+a4=0"<<endl<<endl;

for (int i=0;i<4;i++)

{

cout<<"Введите значение коэффициента a["<<i+1<<"] : ";

cin>>a[i];

}

cout<<endl<<"Необходимо указать интервал поиска решения."<<endl

<<"Введите нижнюю границу поиска : ";

cin>>minim;

cout<<"Введите верхнюю границу поиска : ";

cin>>maxim;

while(minim==maxim||minim>maxim)

{

cout<<" Нижняя граница должна быть меньше верхней и не может быть ей равна."<<endl

<<"Повторите ввод нижней границы : ";

cin>>minim;

cout<<"Повторите ввод верхней границы : ";

cin>>maxim;

}

cout<<"Введите допустимую погрешность : ";

cin>>prec;

}

void Derivative()

{

b[0]=a[0]*3;

b[1]=a[1]*2;

b[2]=a[2];

c[0]=b[0]*2;

c[1]=b[1];

cout<<" "

<<"Исходное уравнение имеет вид : "

<<a[0]<<"x^3+("<<a[1]<<")x^2+("<<a[2]<<")x+("<<a[3]<<")=0 "

<<"Первая производная имеет вид : "

<<"f"(x)="<<b[0]<<"x^2+("<<b[1]<<")x+("<<b[2]<<") "

<<"Вторая производная имеет вид : "

<<"f""(x)="<<c[0]<<"x+("<<c[1]<<") ";

}

void Calculation()

{

double x=0, m=0;

cout<<"-------------------------------------------------"<<endl

<<"| Xn | f(Xn) | |f(Xn)|/m |"<<endl

<<"-------------------------------------------------"<<endl;

if (abs(Calc_Fun(minim))*abs(Calc_Second(minim))>0) x=minim;

else x=maxim;

if (Calc_First(minim)>Calc_First(maxim)) m=abs(Calc_First(maxim));

else m=abs(Calc_First(minim));

cout<<"|";

cout.width(15);cout.precision(10);

cout<<x;

cout<<"|";

cout.width(15);cout.precision(10);

cout<<Calc_Fun(x);

cout<<"|";

cout.width(15);cout.precision(10);

cout<<(fabs(Calc_Fun(x))/m);

cout<<"| ";

while((fabs(Calc_Fun(x))/m)>prec)

{

x=(x-(Calc_Fun(x)/Calc_First(x)));

cout<<"|";

cout.width(15);cout.precision(10);

cout<<x;

cout<<"|";

cout.width(15);cout.precision(10);

cout<<Calc_Fun(x);

cout<<"|";

cout.width(15);cout.precision(10);

cout<<fabs(Calc_Fun(x))/m;

cout<<"| ";

}

cout<<"-------------------------------------------------";

}

double Calc_Fun(double x)

{

return (a[0]*x*x*x+a[1]*x*x+a[2]*x+a[3]);

}

double Calc_First(double x)

{

return (b[0]*x*x+b[1]*x+b[2]);

}

double Calc_Second(double x)

{

return (c[0]*x+c[1]);

}


Результаты работы программы

Пример №1

Программа для решения кубических уравнений методом касательных (метод Ньютона).

Кубическое уравнение имеет вид

a1*x^3+a2*x^2+a3*x+a4=0

Введите значение коэффициента a[1] : 1

Введите значение коэффициента a[2] : -6

Введите значение коэффициента a[3] : -9

Введите значение коэффициента a[4] : 58

Необходимо указать интервал поиска решения.

Введите нижнюю границу поиска : -4

Введите верхнюю границу поиска : -3

Введите допустимую погрешность : 0.00005

Исходное уравнение имеет вид :

1x^3+(-6)x^2+(-9)x+(58)=0

Первая производная имеет вид :

f"(x)=3x^2+(-12)x+(-9)

Вторая производная имеет вид :

f""(x)=6x+(-12)

-------------------------------------------------

| Xn | f(Xn) | |f(Xn)|/m |

-------------------------------------------------

| -4| -66| 1.222222222|

| -3.24137931| -9.922506048| 0.183750112|

| -3.079817529| -0.40621762| 0.007522548518|

| -3.07261683|-0.000789793230|1.462580056e-05|

-------------------------------------------------

Пример №2

Программа для решения кубических уравнений методом касательных (метод Ньютона).

Кубическое уравнение имеет вид

a1*x^3+a2*x^2+a3*x+a4=0

Введите значение коэффициента a[1] : 1

Введите значение коэффициента a[2] : -6

Введите значение коэффициента a[3] : -9

Введите значение коэффициента a[4] : 58

Необходимо указать интервал поиска решения.

Введите нижнюю границу поиска : 3

Введите верхнюю границу поиска : 4

Введите допустимую погрешность : 0.00005

Исходное уравнение имеет вид :

1x^3+(-6)x^2+(-9)x+(58)=0

Первая производная имеет вид :

f"(x)=3x^2+(-12)x+(-9)

Вторая производная имеет вид :

f""(x)=6x+(-12)

-------------------------------------------------

| Xn | f(Xn) | |f(Xn)|/m |

-------------------------------------------------

| 3| 4| 0.4444444444|

| 3.222222222| 0.159122085| 0.01768023167|

| 3.231855174| 0.000341137633|3.790418145e-05|

-------------------------------------------------

Пример №3

Программа для решения кубических уравнений методом касательных (метод Ньютона).

Кубическое уравнение имеет вид

a1*x^3+a2*x^2+a3*x+a4=0

Введите значение коэффициента a[1] : 1

Введите значение коэффициента a[2] : -6

Введите значение коэффициента a[3] : -9

Введите значение коэффициента a[4] : 58

Необходимо указать интервал поиска решения.

Введите нижнюю границу поиска : 5

Введите верхнюю границу поиска : 6

Введите допустимую погрешность : 0.00005

Исходное уравнение имеет вид :

1x^3+(-6)x^2+(-9)x+(58)=0

Первая производная имеет вид :

f"(x)=3x^2+(-12)x+(-9)

Вторая производная имеет вид :

f""(x)=6x+(-12)

-------------------------------------------------

| Xn | f(Xn) | |f(Xn)|/m |

-------------------------------------------------

| 6| 4| 0.6666666667|

| 5.851851852| 0.2601229487| 0.04335382479|

| 5.840787634| 0.001413241032| 0.000235540172|

| 5.840726862|4.255405933e-08|7.092343222e-09|

-------------------------------------------------


Метод итераций.

Блок-схема алгоритма

Блок-схема решения и листинг программы, реализующей этот алгоритм на языке программирования С++.

[image]


Листинг программы

//метод итераций для решения кубических уравнений

#include<math.h>

#include<iostream.h>

double a[4]={0},

b[3]={0},

prec=0.00000;

double minim=0, maxim=0;

void Hello(void);

void Input();

void Derivative();

void Calculation();

double Calc_Fun(double);

double Calc_First(double);

main(void)

{

Hello();

Input();

Derivative();

Calculation();

return 0;

}

void Hello(void)

{

cout<<"Программа для решения кубических уравнений методом итераций. ";

}

void Input()

{

cout<<"Кубическое уравнение имеет вид"<<endl

<<"a1*x^3+a2*x^2+a3*x+a4=0"<<endl<<endl;

for (int i=0;i<4;i++)

{

cout<<"Введите значение коэффициента a["<<i+1<<"] : ";

cin>>a[i];

}

cout<<endl<<"Необходимо указать интервал поиска решения."<<endl

<<"Введите нижнюю границу поиска : ";

cin>>minim;

cout<<"Введите верхнюю границу поиска : ";

cin>>maxim;

while(minim==maxim||minim>maxim)

{

cout<<" Нижняя граница должна быть меньше верхней и не может быть ей

равна." <<endl

<<"Повторите ввод нижней границы : ";

cin>>minim;

cout<<"Повторите ввод верхней границы : ";

cin>>maxim;

}

cout<<"Введите допустимую погрешность : ";

cin>>prec;

}

void Derivative()

{

b[0]=a[0]*3;

b[1]=a[1]*2;

b[2]=a[2];

}

void Calculation()

{

double x=0, x_old=0, m=0;

cout<<"-------------------------------------------------"<<endl

<<"| Xn | f(Xn) | X(n+1)-Xn |"<<endl

<<"-------------------------------------------------"<<endl;

if(fabs(Calc_First(minim))>fabs(Calc_First(maxim))) m=x=x_old=minim;

else m=x=x_old=maxim;

m=fabs(1/Calc_First(m));

cout<<"|";

cout.width(15);cout.precision(10);

cout<<x;

cout<<"|";

cout.width(15);cout.precision(10);

cout<<Calc_Fun(x);

cout<<"| | ";

if(Calc_First(x)>0)

{

do

{

x_old=x;

x=x_old-m*Calc_Fun(x_old);

cout<<"|";

cout.width(15);cout.precision(10);

cout<<x;

cout<<"|";

cout.width(15);cout.precision(10);

cout<<Calc_Fun(x);

cout<<"|";

cout.width(15);cout.precision(10);

cout<<fabs( Calc_Fun(x) - Calc_Fun(x_old) );

cout<<"| ";

}

while(( fabs( Calc_Fun(x) - Calc_Fun(x_old) ) )>prec);

}

else

{

do

{

x_old=x;

x=x_old+m*Calc_Fun(x_old);

cout<<"|";

cout.width(15);cout.precision(10);

cout<<x;

cout<<"|";

cout.width(15);cout.precision(10);

cout<<Calc_Fun(x);

cout<<"|";

cout.width(15);cout.precision(10);

cout<<fabs( Calc_Fun(x) - Calc_Fun(x_old) );

cout<<"| ";

}

while(( fabs( Calc_Fun(x) - Calc_Fun(x_old) ) )>prec);

}

cout<<"-------------------------------------------------";

}

double Calc_Fun(double x)

{

return (a[0]*x*x*x+a[1]*x*x+a[2]*x+a[3]);

}

double Calc_First(double x)

{

return (b[0]*x*x+b[1]*x+b[2]);

}

Результаты работы программы

Пример №1

Программа для решения кубических уравнений методом итераций.

Кубическое уравнение имеет вид

a1*x^3+a2*x^2+a3*x+a4=0

Введите значение коэффициента a[1] : 1

Введите значение коэффициента a[2] : -6

Введите значение коэффициента a[3] : -9

Введите значение коэффициента a[4] : 58

Необходимо указать интервал поиска решения.

Введите нижнюю границу поиска : -4

Введите верхнюю границу поиска : -3

Введите допустимую погрешность : 0.00005

-------------------------------------------------

| Xn | f(Xn) | X(n+1)-Xn |

-------------------------------------------------

| -4| -66| |

| -3.24137931| -9.922506048| 56.07749395|

| -3.127327517| -3.12093462| 6.801571427|

| -3.091454705| -1.064778438| 2.056156183|

| -3.079215872| -0.372281515| 0.6924969227|

| -3.074936774| -0.131239433| 0.241042082|

| -3.073428275| -0.04639844126| 0.08484099175|

| -3.07289496| -0.01642029825| 0.02997814301|

| -3.072706221|-0.005813178631| 0.01060711962|

| -3.072639403|-0.002058264249| 0.003754914382|

| -3.072615744|-0.000728799396| 0.001329464852|

| -3.072607367|-0.000258060628|0.0004707387678|

| -3.072604401|-9.137721784e-0|0.0001666834108|

| -3.072603351|-3.235601088e-0|5.902120696e-05|

| -3.072602979|-1.145703711e-0|2.089897377e-05|

-------------------------------------------------

Пример №2

Программа для решения кубических уравнений методом итераций.

Кубическое уравнение имеет вид

a1*x^3+a2*x^2+a3*x+a4=0

Введите значение коэффициента a[1] : 1

Введите значение коэффициента a[2] : -6

Введите значение коэффициента a[3] : -9

Введите значение коэффициента a[4] : 58

Необходимо указать интервал поиска решения.

Введите нижнюю границу поиска : 3

Введите верхнюю границу поиска : 4

Введите допустимую погрешность : 0.00005

-------------------------------------------------

| Xn | f(Xn) | X(n+1)-Xn |

-------------------------------------------------

| 3| 4| |

| 3.222222222| 0.159122085| 3.840877915|

| 3.231062338| 0.01338370012| 0.1457383849|

| 3.231805877| 0.001151957391| 0.01223174272|

| 3.231869875|9.934183961e-05| 0.001052615552|

| 3.231875394|8.568402322e-06|9.077343728e-05|

| 3.23187587|7.390497921e-07| 7.82935253e-06|

-------------------------------------------------

Пример №3

Программа для решения кубических уравнений методом итераций.

Кубическое уравнение имеет вид

a1*x^3+a2*x^2+a3*x+a4=0

Введите значение коэффициента a[1] : 1

Введите значение коэффициента a[2] : -6

Введите значение коэффициента a[3] : -9

Введите значение коэффициента a[4] : 58

Необходимо указать интервал поиска решения.

Введите нижнюю границу поиска : 5

Введите верхнюю границу поиска : 6

Введите допустимую погрешность : 0.00005

-------------------------------------------------

| Xn | f(Xn) | X(n+1)-Xn |

-------------------------------------------------

| 6| 4| |

| 5.851851852| 0.2601229487| 3.739877051|

| 5.842217669| 0.0346921878| 0.2254307609|

| 5.840932773| 0.004788677115| 0.02990351069|

| 5.840755414|0.0006639855431| 0.004124691572|

| 5.840730822|9.212373716e-05|0.0005718618059|

| 5.84072741|1.278267885e-05|7.934105832e-05|

| 5.840726937|1.773688694e-06|1.100899016e-05|

-------------------------------------------------


МИНИСТЕРСТВО ОБРАЗОВАНИЯ РЕСПУБЛИКИ ТАТАРСТАН

АЛЬМЕТЬЕВСКИЙ НЕФТЯНОЙ ИНСТИТУТ

Кафедра информатики

Курсовая работа

На тему: метод касательных (метод Ньютона)

Работу выполнил студент гр. 52-61

Низамова Г.Н.

Проверил: Борганова Э.М.

Альметьевск 2003 г.





Похожие курсовые работы

1. 2008 2009курсовая работа по гражданскому праву на тему вексель и вексельные правоотношения

2. КРОСФОРД НА ТЕМУ ЗАКОН НЬЮТОНА

3. Презентация на тему биография Т Юнг

4. Презентация на тему биография А С Попов

5. Презентация на тему биография жуковского

6. Презентация на тему биография Достоевского

7. Презентация на тему биография Маяковского

8. Презентация на тему Биография А П Чехова

9. Скачать бесплатно курсовую работу на тему управления социальным развитием организации

10. Анненский биография презентация к уроку

11. Анкета на тему Алкоголизм среди подростков

12. Анкета социологического опроса на тему алкоголизма

13. Анненский биография презентация

14. Александр блок биография презентация

15. На тему биография островского

Курсовые работы, рефераты и доклады