Численное нахождение корня функции

  • Вид работы:
    Практическое задание
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    4,25 Кб
  • Опубликовано:
    2014-11-21
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Численное нахождение корня функции

Минобрнауки России

Федеральное государственное бюджетное образовательное учреждение

высшего профессионального образования

"Нижегородский государственный технический университет

им. Р.Е. Алексеева"

Арзамасский политехнический институт (филиал)






Лабораторная работа

по дисциплине "Численные методы"

Вариант №6


Выполнили:

студентки гр. АСПМ 12-1

Кузнецова Ольга

Минеева Ирина

Архипова Екатерина

Проверил преподаватель:

Эварт Т.Е.

Арзамас

г.

Задание №1

корень дихотомия ньютон программа

Выполнить отделение корней для функции


Выполнить уточнение корней с точностью 0,001, используя метод дихотомии, метод Ньютона, метод простой итерации.

Решение.

)        Метод дихотомии

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

#include<iostream>

#include<cmath>

#include<iomanip>namespace std;

//прототип функции - правая частьf (double x0);

//прототип функции - метод половинного деленияpol(double a, double b, double eps, int& t);main()

{(LC_ALL,"Russian");a,b,eps,R1,x1;t1;<<"\n Ввести начало отрезка а = ";>>a;<<"\n Ввести конец отрезка b = ";>>b;<<"\n Ввести точность eps = ";>>eps;<<"\n*** Метод дихотомии ***\n";<<"\n Начало отрезка а = "<<a;<<"\n Конец отрезка b = "<<b;<<"\n Точность eps = "<<eps;=pol(a,b,eps,t1);=(b-a)/(pow(2.0,t1));<<"\n Корень x="<<x1;<<"\n Количество итераций t="<<t1;<<"\n Абсолютная погрешность метода R1="<<R1;<<endl;

}

//определение функции - правая частьf (double x0)

{y;=pow((x0+1),3)+log(x0);y;

}

//определение функции - метод половинного деленияpol(double a, double b, double eps, int& t)

{x0;=1;:x0=(a+b)/2;(f(x0)==0) goto c1;if(f(a)*f(x0)<0) b=x0;a=x0;(abs(b-a)>2*eps) {

t++;c;

}: return x0;

}

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

Ввести начало отрезка а = 0.1

Ввести конец отрезка b = 0.2

Ввести точность eps = 0.001

*** Метод дихотомии ***

Начало отрезка а = 0.1

Конец отрезка b = 0.2

Точность eps = 0.001

Корень x=0.185938

Количество итераций t=6

Абсолютная погрешность метода R1=0.0015625

Для продолжения нажмите любую клавишу . . .

)        Метод Ньютона

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

#include<iostream>

#include<cmath>

#include<iomanip>namespace std;

//прототип функции - правая частьf (double x0);

//прототип функции - правая часть - первая производнаяf1 (double x0);

//прототип функции - правая часть - вторая производнаяf2 (double x0);

//прототип функции - метод Ньютонаnewton(double x0, double eps,double M, double m,double& x, int& t, double& R);main()

{setlocale(LC_ALL,"Russian");M,m,eps,R2,x2,x0;t2;<<"\n Ввести точность eps = ";>>eps;<<"\n Ввести абсолютное максимальное значение второй производной функции правой части уравнения на заданном отрезке M = ";>>M;<<"\n Ввести абсолютное минимальное значение первой производной функции правой части на заданном отрезке m = ";>>m;<<"\n Ввести начальное приближение x0 = ";>>x0;<<"\n***Метод Ньютона ***\n";<<"\n Абсолютное максимальное значение второй производной функции правой части уравнения на заданном отрезке M = "<<M;<<"\n Абсолютное минимальное значение первой производной функции правой части на заданном отрезке m = "<<m;<<"\n Точность eps = "<<eps;<<"\n Начальное приближение x0 = "<<x0;(x0,eps,M,m,x2,t2,R2);<<"\n Корень x="<<x2;<<"\n Количество итераций t="<<t2;<<"\n Абсолютная погрешность метода R2="<<R2;<<endl;

}

//определение функции - правая частьf (double x0)

{y;=pow((x0+1),3)+log(x0);y;

}

//определение функции - правая часть - первая производнаяf1 (double x0)

{y;=3*pow((x0+1),2)+1/x0;y;

}

{y;=6*(x0+1)-(1/pow(x0,2));y;

}

//определение функции - метод Ньютонаnewton(double x0, double eps,double M, double m,double& x, int& t, double& R)

{(f(x0)*f1(x0)>0)

{<<"\n Уравнение методом Ньютона решается\n";=1;:x=x0-f(x0)/f1(x0);(abs(x-x0)>eps) {t++;=x;c;

}=M/(2*m)*abs(x-x0);

}{<<"\n Выберите новое начальное приближение х0\n";(1);

}

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

Ввести точность eps = 0.001

Ввести абсолютное максимальное значение второй производной функции правой части уравнения на заданном отрезке M = 93

Ввести абсолютное минимальное значение первой производной функции правой части на заданном отрезке m = 9

Ввести начальное приближение x0 = 0.2

***Метод Ньютона ***

Абсолютное максимальное значение второй производной функции правой части уравнения на заданном отрезке M = 93

Абсолютное минимальное значение первой производной функции правой части на заданном отрезке m = 9

Точность eps = 0.001

Начальное приближение x0 = 0.2

Уравнение методом Ньютона решается

Корень x=0.187439

Количество итераций t=2

Абсолютная погрешность метода R2=0.000827463

Для продолжения нажмите любую клавишу . . .

)        Метод простой итерации

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

#include<iostream>

#include<cmath>

#include<iomanip>namespace std;

//прототип функции - правая частьf (double x0);

//прототип функции - правая часть - первая производнаяf1 (double x0);

//прототип функции приведения уравнения к виду удобному для метода итерацийphi(double x0, double lambda);

//прототип метода простой итерацииpit (double x0, double eps, double lambda, double q, double& x, int& t, double& R);main()

{(LC_ALL,"Russian");M1,eps,R3,x3,x0,lambda,q;t3;<<"\n Ввести точность eps = ";>>eps;<<"\n Ввести абсолютное максимальное значение первой производной функции правой части на заданном отрезке M1 = ";>>M1;<<"\n Ввести абсолютное максимальное значение первой производной функции удобной для метода на заданном отрезке q = ";>>q;<<"\n Ввести начальное приближение x0 = ";>>x0;<<"\n*** Метод простой итерации ***\n";<<"\n Абсолютное максимальное значение первой производной функции правой части на заданном отрезке M1 = "<<M1;<<"\n Абсолютное максимальное значение первой производной функции удобной для метода на заданном отрезке q = "<<q;<<"\n Точность eps = "<<eps;<<"\n Начальное приближение x0 = "<<x0;=(-1.0)/M1;(x0,eps,lambda,q,x3,t3,R3);<<"\n Корень x="<<x3;<<"\n Количество итераций t="<<t3;<<"\n Абсолютная погрешность метода R3="<<R3;<<endl;

}

//определение функции - правая частьf (double x0)

{y;=pow((x0+1),3)+log(x0);y;

}

//определение функции - правая часть - первая производнаяf1 (double x0)

{y;=3*pow((x0+1),2)+1/x0;y;

}

//определение функции приведения уравнения к виду удобному для метода итерацийphi(double x0, double lambda)

{p;=x0+lambda*f(x0);p;

}

//определение метода простой итерацииpit (double x0, double eps, double lambda, double q, double& x, int& t, double& R)

{=phi(x0,lambda);=0;:if (abs(1+lambda*f1(x0))<1)

{

//cout<<"

\n Метод простой итерации применим \n";++;=phi(x0,lambda);(abs(x-x0)>eps) {=x;c;

}=1/(1-q)*abs(x-x0);

}cout<<"\n Метод простой итерации не применим \n";

}

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

Ввести точность eps = 0.001

Ввести абсолютное максимальное значение первой производной функции правой части на заданном отрезке M1 = 14

Ввести абсолютное максимальное значение первой производной функции удобной для метода на заданном отрезке q = 0.33429

Ввести начальное приближение x0 = 0.2

*** Метод простой итерации ***

Абсолютное максимальное значение первой производной функции правой части на заданном отрезке M1 = 14

Абсолютное максимальное значение первой производной функции удобной для метода на заданном отрезке q = 0.33429

Точность eps = 0.001

Начальное приближение x0 = 0.2

Корень x=0.187855

Количество итераций t=3

Абсолютная погрешность метода R3=0.00134136

Для продолжения нажмите любую клавишу . . .

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

clcall

close allx;(solve('(x+1)^3+ln(x)=0',x))=fzero('(x+1)^3+log(x)',[0.1 0.2])

[x,f,e_flag,inform]=fzero('(x+1)^3+log(x)',[0.1 0.2])

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

.1874=

0.1874=

.1874=

.2204e-016_flag =

=: 0: 6: 8: 'bisection, interpolation': 'Zero found in the interval [0.1, 0.2]'

Похожие работы на - Численное нахождение корня функции

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!