Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпоры по информатике.DOC
Скачиваний:
29
Добавлен:
02.05.2014
Размер:
1.68 Mб
Скачать

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 итераций это составит 220.

Метод секущих (хорд) при нахождении корня уравнения 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. Далее корень ищется на том отрезке, где функция меняет знак. Процесс прекращается при достижении требуемой точности.

150

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

Y МЕТОД СЕКУЩИХ

F(B)

Y(x)

0 A x B X

F(A)

dx:= (b1-a1)/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.

N Вид функции F(x) интервал изменения аргумента "x"

один корень несколько корней

1 x3 - 4*x2 - x + 1 0 ... 1 -2 ... 6

2 2*x3 - 6*x2 - x - 1 -1 ... 0 -1 ... 4

3 x - 2 + 4*SIN(x) 0 ... 1 0 ... 7

4 x2 - LN(1+x) - 3 -0.9 ... 1 -0.9 ... 3

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

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

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

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

В случае линейной итерационной схемы xi = xi-1 - Ki-1*F(xi-1);

Коэффициент Ki-1 зависит от выбранной схемы и может существенно повлиять на количество итераций, необходимых для получения решения с заданной точностью.

Получим итерационную формулу для расчета корня из числа "a", т. е. x= a;

(x- a)2 = x2 - 2*x* a + a =0; откуда a = (x + a/x)/2; где a > 0.

полагая a = xi; и x = xi-1; получаем: xi = (xi-1 + a/xi-1)/2;

n

В более общем виде для x = a; xi = ((n-1)*xi-1 + a/(xi-1)(n-1))/n;

151

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

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

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

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

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