Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Метод дихотомии, метод итерации, метод Ньютона подходит для первого уравнения (1).

Министерство общего и профессионального образования РФ

Московский Авиационный Институт

(Национальный Исследовательский Университет)

Факультет прикладной математики и физики

Кафедра вычислительной математики и программирования

 

Задание №4

Тема: « Процедуры и функции в качестве параметров»

I семестр

Руководитель

­ _______________________

(фамилия, инициалы)

­­­­­­­­­­­­­­­­­ ___________________________ (подпись) (дата)

Студент _________________

(группа)

_________________________

(фамилия, инициалы)

_________________________

(подпись) (дата)

 

_________

(оценка)

 

 

Москва 2012 г.

 

 

Постановка задачи:

Составить программу на языке Си с процедурами решения трансцендентных алгебраических уравнений различными методами (итераций, Ньютона и половинного деления – дихотомии). Нелинейные уравнения оформить как параметры-функции, разрешив относительно неизвестной величины в случае необходимости. Применить каждую процедуру к решению двух уравнений, заданных двумя строками таблицы, начиная с варианта с заданным номером. Если метод неприменим, дать математическое обоснование и графическую иллюстрацию, например, с использованием gnuplot.

Вариант №14.

 

Метод решения:

Создаем три функции (первая решается с помощью метода дихотомии, вторая с помощью итераций, третья методом Ньютона) и выводим значения получившихся корней.

Предполагается, что функция F(x) достаточно гладкая, монотонная и существует единственный корень уравнения x ∈ [a,b].

 

Описание методов:

· Метод дихотомии (половинного деления)

Методом половинного деления возможно лишь в том случае, если известно, что на заданном отрезке [a,b] имеется корень, и он является единственным, при этом функция должна иметь на концах отрезка разные знаки: (то есть метод не подходит если функция задает параболу на заданном отрезке). Метод заключается в делении отрезка пополам и его сужении в два раза на каждом шаге итерационного процесса, в зависимости от знака функции в середине отрезка.

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

o Если

·

·

o Если

·

·

Процесс повторяется до тех пор, пока не будет выполнено условие окончания.

 

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

Метод заключается в замене исходного уравнения F(x)=0 уравнением вида x=f(x). Достаточное условие сходимости метода итераций: |f’(x)|<1, x∈[a,b].

Начальное приближение корня - это середина исходного отрезка. Далее следующему значению x присваивается значение f от предыдущего значения х. Условием окончания является сравнение разницы текущего значения x и предыдущего с машинным эпсилон.

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

Метод Ньютона является частным случаем метода итераций.

В методеследующее значение x (на каждом шаге) получается путем вычитания от предыдущего значения, значения разности исходной функции на производную этой функции. Достаточное условие сходимости метода Ньютона: |F(x)*F’’(x)| < (F’(x))2 .

Функциональное назначение:

Программа предназначена для нахождения решений трансцендентных алгебраических уравнений различными численными методами(итераций, Ньютона и половинного деления-дихотомии). Обрабатываемые данные имеют тип double.

 

Описание алгоритма:

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

 

Общие сведения о программе:

Операционная система: Ubuntu 10.04 LTS Lucid Lynx

Язык программирования: C

Число строк программы: 64

Программа компилируется и вызывается с помощью g++ cours4.cpp – o cours4.exe

 

Уравнения по заданию:

· [1, 2] (1)

· [1, 2] (2)

Описание переменных и констант:

Имя Тип Назначения
eps double Хранит значение машинного эпсилон
a double Хранит значение начала отрезка функции
b double Хранит значение конца отрезка функции
c double Переменная, принимающая значения на отрезке [a, b]
с1 double Переменная максимально приближенная к с

Описание подпрограмм:

double Halving(double f(double), double a, double b) – вычисляет корень методом дихотомии

{ double c; while(fabs(b-a)>eps && f(c)!=0) { c=(a+b)/2; if(f(a)*f(c)>0) a=c; else b=c; } return c;}

double Iteration(double F(double), double a, double b) – вычисляет корень методом итерации

{ double c=(a+b)/2, c1=c+1; while(fabs(c-c1)>eps && F(c)!=c) { c1=c; c=F(c); } return c;}

 

double Newton(double f(double), double fp(double), double a, double b) – вычисляет корень методом Ньютона

{ double c=(a+b)/2, c1=c+1; while(fabs(c-c1)>eps && f(c)!=c) { c1=c; c=c-f(c)/fp(c); } return c;}

 

 

double f1(double x) – задается функция f1 для метода дихотомии(1)
{return sin(x/2)/cos(x/2)-cos(x/2)/sin(x/2)+x;}

 

double F1(double x) - задается функция F1 для метода итерации(1)
{return 2*atan(cos(x/2)/sin(x/2)-x);}

 

double fp1(double x) – задается производная функции f1(fp1) для метода Ньютона(1)
{return 1/(2*cos(x/2)*cos(x/2))+1/(2*sin(x/2)*sin(x/2))+1;}

 

Метод дихотомии, метод итерации, метод Ньютона подходит для первого уравнения (1).

Helving root of f1=1.076875

Iteration root of f1=1.076875

Newton root of f1= 1.076874(небольшая погрешность зависит от машинного эпсилон)

double f2(double x) -задается функция f2 для метода дихотомии(2)
{return 0.4+atan(sqrt(x))-x;}


double F2(double x) - задается функция F2 для метода итерации(2)
{return 0.4+atan(sqrt(x));}


double fp2(double x)- – задается производная функции f2(fp2) для метода Ньютона(2)
{return (1/(1+x))*(1/2*(sqrt(x)));}

 



<== предыдущая лекция | следующая лекция ==>
Тема: Организация развивающей среды ДОУ | 
Поделиться с друзьями:


Дата добавления: 2016-12-18; Мы поможем в написании ваших работ!; просмотров: 1029 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Так просто быть добрым - нужно только представить себя на месте другого человека прежде, чем начать его судить. © Марлен Дитрих
==> читать все изречения...

2463 - | 2219 -


© 2015-2024 lektsii.org - Контакты - Последнее добавление

Ген: 0.013 с.