Написание программы отделения корней. Написание программы поиска корней (5 методами)

Страницы работы

9 страниц (Word-файл)

Содержание работы

Министерство образования  и науки Российской Федерации

Томский   Университет Систем Управления и Радиоэлектроники (ТУСУР)

Кафедра автоматизированных систем управления (АСУ)

Отчет по лабораторной работе №1

по дисциплине «Вычислительная математика»

      Студенты группы:

                                                                                                 433-2

_______ 

                                                                                    _______ 

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

_______ 

2005


Содержание

Задание …………………………………………………………………………………………………...…3

Краткая теория …………………………………………………………………………………………...…4

Результаты работы …………………………………………………………………………………………6

Приложение А


3

Задание

1.   Написать программу отделения корней.

2.  Написать программу поиска корней (5 методами). Выполнить тестирование. Всё оформить в виде подпрограмм.

Входные данные для головной программы:

-  функция   и её первая и вторая производные;

-  интервал ;

-  количество узлов;

-  точность  и ;

-  метод.

Выходные данные:

-  промежутки (интервалы), где есть корни;

-  корни , точность;

-  значения функции ;

-  количество итераций n;

-  параметр сходимости .

4

Краткая теория

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

Если считать , то точность определения корня равна

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

Пусть в интервале  расположен один корень функции, и его нужно найти с определённой точностью

Будем искать корень,  вычисляя значения и

Если  выполняется условие  ,  где   то процесс вычисления заканчивается, а корень уравнения  .

Если условие   не выполняется , то проверяются  следующие условия:

А)  если ,  то , и  продолжаем  процесс деления интервала  ;

Б)  если , то , и продолжаем процесс деления интервала . Процесс деления продолжаем до тех пор, пока не будет выполнено либо условие  либо условие , где  ,  - границы интервала на n-ом шаге деления исходного интервала. При выполнении условия

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

При заданных двух числах  и .  Итерационный процесс будет строиться по формуле:    

Начальное приближение определяется из условия

где  равно либо  либо .

Если  не задана, то начальное приближение можно искать по формулам:

  5

Условия завершения поиска:   

Значение корня равно .

Метод хорд 

Итерационный процесс строится по формулам:

     , если - неподвижен конец , или   если - неподвижен конец .

Окончание поиска  по условию , где  - заданная точность. Значение корня равно .

Метод золотого сечения

Золотое сечение отрезка  осуществляется  двумя точками  , где ;

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

можно представить функции можно представить так:

Полагаем   

Шаг первый:  Проверяется условие  , где - заданная точность.

Если  данное условие  выполнено, то  . Конец.

Если  не выполнено то переход к шагу 2.

Ш2:    Вычисление координат точек золотого сечения

  и проверяем условия

Если выполнено условие , то ; , на первый шаг.

Если  выполнено условие , то ;  и переход на шаг 1.

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

Исходное уравнение   приводится к виду  , где , а      Итерационный процесс идёт по формуле   .

Критерий завершения вычислений имеет вид

 где  а -заданная точность.

6

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

Входные данные:

Функция: f = exp (x) - 1/x;

Интервал: 0,1 – 2

Точность: 0,0001

Выходные данные:

Название метода

Результат

Кол-во итераций

Дихотомии

0,5672

15

Хорд

0,5672

35

Касательных

0,5671

5

Золотого сечения

0,5640

11

Комбинированный

0,5671

4

Вывод:

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

Анализ результатов показывает что для исследуемой функции самыми  эффективными методами оказались:  Метод Ньютона и Метод Итераций.  Эти методы находят корни данной функции  с за наименьшее число итераций, а следовательно с наименьшими затратами времени.

Приложение А

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

uses

crt;

type

func=function(i:real):real;

var

i:word;

al,st:real;

const

eps=0.0001;

{====================================== ДИХОТОМИЯ }

function dihot (f:func; a:real; b:real):real;

var

c:real;

begin

i:=0;

repeat

inc(i);

c:=(a+b)*0.5;

if f(c)*f(a)<0 then  b:=c else a:=c;

until (b-a)<=eps;

dihot:=c;

end;

{====================================== ХОРД }

function hord(f:func;a,b:real):real;

var

c:real;

begin

i:=0;

repeat

inc(i);

c:=a-f(a)*(a-b)/(f(a)-f(b));

if f(c)*f(b)>0 then b:=c else a:=c;

until f(c)<=eps;

hord:=c;

end;

{====================================== КАСАТЕЛЬНЫХ }

function kasat( f:func; fp:func; fpp:func; a,b:real ):real;

var

c,d:real;

begin

i:=0;

if f(a)*fpp(a)>0 then c:=a

else c:=b;

d:=f(c)/fp(c);

repeat

inc(i);

c:=c-d;

d:=f(c)/fp(c);

until abs(d)<=eps;

kasat:=c;

end;

{====================================== ЗОЛОТОЕ СЕЧЕНИЕ }

function gold (f:func; a:real; b:real):real;

var

c:real;

begin

i:=0;

repeat

inc(i);

c:=abs(a-b)*0.618;

if f(a+c)*f(a)<0 then  b:=b-c else a:=a+c;

until (b-a)<=eps;

gold:=b;

end;

{====================================== ИТЕРАЦИИ}

function iter (f:func; a,b:real):real;

var

c,c1:real;

begin

i:=0;c:=a;

repeat

inc(i);

c1:=c;

c:=f(c);

until abs(c1-c)<=eps;

iter:=c;

end;

{====================================== КОМБИНИРОВАННЫЙ }

function komb(f,fp:func;a,b:real):real;

begin

i:=0;

repeat

inc(i);

a:=a-f(a)*(b-a)/(f(b)-f(a));

{if f(c)*f(b)>0 then b:=c else a:=c;}

b:=b-f(b)/fp(b);

until abs(a-b)<=eps;

komb:=a;

end;

{$f+}

function f1(x:real):real;

begin

f1:=exp(x)-1/x;

end;

function fp1(x:real):real;

begin

fp1:=exp(x)+1/(x*x);

end;

function fpp1(x:real):real;

begin

fpp1:=exp(x)-2/(x*x*x);

end;

{$f-}

begin

ClrScr;

writeln('Корни уравнения с точностью: ',eps:7:5);

writeln('найденные методом:');

writeln('(в скобках количество итераций)');

write('дихотомии: ');

gotoxy(20,wherey);

writeln(dihot(f1,0.1,2):7:4,' (',i:3,')');

write('хорд: ');

gotoxy(20,wherey);

writeln(hord(f1,0.1,2):7:4,' (',i:3,')');

write('касательных: ');

gotoxy(20,wherey);

writeln(kasat(f1,fp1,fpp1,0.1,2):7:4,' (',i:3,')');

write('золотого сечения: ');

gotoxy(20,wherey);

writeln(gold(f1,0.1,2):7:4,' (',i:3,')');

{write('итераций: ');

if fp1(2-0.1)<1 then

writeln('x=',iter(f1,0.1,2):7:4,i:3)

else writeln('Корни немогут быть найдены данным методом');

}    write('комбинированным: ');

gotoxy(20,wherey);

writeln(komb(f1,fp1,0.1,2):7:4,' (',i:3,')');

readln;

end.

Похожие материалы

Информация о работе

Тип:
Отчеты по лабораторным работам
Размер файла:
206 Kb
Скачали:
0