Rambler's Top100

Скачать программы    Все программы автора

2. 5. Программы математических расчетов

2. 5. 1. Численное решение уравнений

Решение уравнения F(x) = 0 заключается в определении значений переменной "x", при которых функция обращается в нуль, т. е. в нахождении корней уравнения. Методы решения уравнений в конечном, аналитическом виде называются прямыми. Например, для уравнения F(x) = a * X+b = 0; решение имеет вид X = - в/а. Аналитически можно определить корни алгебраических уравнений не выше четвертой степени, причем для показателя степени больше двух формулы получаются достаточно сложные. Для определения корней алгебраических и трансцендентных уравнений разработаны численные методы, основанные на уточнении значения корня в предположении, что на отрезке [A, B] функция Y=F(x) непрерывна и имеет только один корень. В этом случае значения функции на концах отрезка имеют разные знаки. Знак вещественного числа "Y" можно определить при помощи функции:

 

FUNCTION SGN( Y: real): integer;

Begin if Y < 0 then SGN:= -1 else SGN:= 1 End;

Значение переменной SGN= - 1 если Y<0, SGN= 1 если Y>=0.

Рассмотрим некоторые численные методы нахождения корней уравнения.

 

Метод половинного деления (дихотомии) при нахождении корня уравнения F(x)=0 состоит в делении пополам отрезка [A, B], где находится корень. Затем анализируется изменение знака функции на половинах отрезка и одна из границ отрезка [A, B] переносится в его середину. Переносится та граница, со стороны которой функция на половине отрезка знака не меняет. Далее процесс повторяется. Итерации прекращаются при выполнении одного из условий: либо длина интервала [A, B] становится меньше заданной погрешности нахождения корня "Е", либо функция попадает в полосу шума (Е1) - значение функции сравнимо с погрешностью расчетов.

 

REPEAT { начало итерации }

x:= (A + B)/2; { x - середина отрезка [A, B] }

Y:= F(x); YA:= F(A); { значения функции в середине и на конце отрезка }

if SGN(Y) * SGN(YA) > 0 { если знаки функции в точках "A" и "x" совпадают }

then A:= x else B:= x { то, перенос границы "A", иначе - "В" }

UNTIL (ABS(B-A)< E) OR (ABS(F(x))< E1);

Метод дихотомии уменьшает интервал определения корня за 1 итерацию в 2 раза - за 20 итераций это составит 2 20 .

Метод секущих (хорд) при нахождении корня уравнения Y = F(x)=0 состоит в определении точки пересечения секущей с осью "x". Секущей называется линия, соединяющая точки с координатами (A, F(A)) и (B, F(B)) на плоскости XoY. Приближенное значение корня определяется точкой пересечения с осью "X" секущей и находится по формуле:

 

x = (A * F(B) - B * F(A))/(F(B) - F(A));

 

При следующем приближении вычисляется Y = F(x), YA = F(A) и полагается A=X, если знак функции на половине отрезка [A, x] не меняется, иначе B=x. Далее корень ищется на том отрезке, где функция меняет знак. Процесс прекращается при достижении требуемой точности.

Если на исследуемом интервале [A1, B1] функция имеет несколько корней x1[1. . m], то для их нахождения можно разбить этот интервал на "N" малых интервалов и выбрать из них те, где функция меняет знак. Здесь полагается, что на каждом малом интервале функция имеет не более одного корня. Затем следует на каждом выбранном малом интервале применить метод дихотомии или секущих:

 

 

dx := ( b 1- a 1)/ N ; { длина отрезков }

m:= 0 { счетчик корней }

for k:= 1 to N do begin

a:= a1+(k-1) * dx; b:= a+dx;

if SGN(F(a)) * SGN(F(b) <= 0

then begin m:= m+1;

REPEAT << метод дихотомии >>

UNTIL (ABS(b-a)< E) OR (ABS(F(x)) < E1);

x1[m]:= x; { корень номер m }

end

end;

 

Практическое задание N 2. 28

 

1. Рассчитать методом дихотомии, либо секущих корней уравнения F(x) = 0. Определить количество итераций, для расчета корня с погрешностью < 0. 0001.

 

 

В общем случае уравнение F(x) = 0 решается итерационными методами.

 

Метод итераций (повторений) основан на расчете значения переменной по рекуррентным формулам. Общая итерационная формула имеет вид:

x i = F i (x i -1); где i = 1, 2, . . . , m; x 0 - начальное приближение.

Для сходимости итерационной схемы должно выполняться условие: |dF i (x)/dx|< 1;

Практическое задание N 2. 29

 

Составить функцию

1_1. Итерационного расчета корня n - ой степени из положительного числа "a".

1_2. Итерационного расчета корня уравнения: x= Ln(A+x); при x>0; A>1;

1_3. Итерационного расчета корня уравнения: x= Arctg(x); при x<>0;

Вверх

Белорусский рейтинг MyMinsk.com Сайты беларуси Регистр "ЗУБР" Каталог на TIGA.BY, а также  новости, работа, объявления, фото и многое другое Rambler's Top100 Белорусский каталог программ Faststart - рейтинг сайтов, каталог интернет ресурсов, счетчик посещаемос­ти Яндекс.Метрика
Hosted by uCoz