Вторая пачка часть 77


Формальные параметры процедуры. Входныe: а, b (тип real) - отрезок, на котором ищется ко¬рень; ерs (тип re¬¬al) - точность вычисления корня; k (тип in¬¬¬teger) - раз¬р嬬¬шен¬¬¬¬ное число итераций; FUNC - внеш¬няя про¬це¬д󬬬¬ра-фунꬬ¬ция. Выходные: k (тип in¬te¬ger) - количество вы¬пол¬нен¬ных ите¬раций; х (тип real) - най¬ден¬ное зна¬ч嬬ние кор¬ня с за¬дан¬ной точностью ерs. PROCEDURE HORD (A,B,EPS:REAL; IT:INTEGER; VAR X : REAL; VAR K:INTEGER); VAR X1,X2,X3 : REAL; K1 : INTEGER; BEGIN K := 1; X1 := FUNC(A); X2 := FUNC(B); X3 := B - X2*(B-A)/(X2-X1); IF SIGN(X2)=SIGN(FUNC(X3)) THEN K1:=1 ELSE BEGIN K1:=2; X1:=X2; END; REPEAT INC (K); X := X3; CASE K1 OF 1: X2:= X3-FUNC(X3)*(X3-A)/(FUNC(X3)-X1); 2: X2:= X3-FUNC(X3)*(B-X3)/(X1-FUNC(X3)); END; X3 := X2; UNTIL (K>IT) OR (ABS(X-X2)<EPS); END. Для проверки процедуры решалось уравнение 2 соs(х + ?/6) + х2 - 3х + 2 = 0. Первоначально корни уравнения опре¬де-ля¬ли с точностью 0.1 графическим методом, а за-тем на鬬денное значение корня уточняли ме¬то-дом хорд до 0.0001. Перепишем уравнение в виде 2 соs(х + ?/6) = -х2 + 3х - 2 , и если построить два графика: у = 2 соs(х +?/6) и у = -х + 3х- - 2, то можно убе¬дить¬ся, что один ко-рень ~1.1, а второй ~2.9. Поэтому пе¬р¬¬¬вый ин¬тер-вал выбираем [0.9; 1.3], второй - [2.7; 3.1]. Точ-ность уста¬новим ? = 0.0005. Процедура-функция может выглядеть так: FUNCTION FUNC (X :REAL) : REAL; BEGIN FUNC := X*X - 3*X +2.0 + 2.0*COS(X+PI/6); END. Результаты расчетов с использованием под¬прграм¬мы HORD приводятся в табл. 1.6. Таблица 1.6 Первый корень на интервале [0.9; 1.3] Второй корень на интервале [2.7; 3.1] xi xi +1 № итерации xi xi+1 № итерации 1.044879 1.032336 1.031823 1.031803 1.032336; 1.031823; 1.031803; 1.031802; k = 1 k = 2 k = 3 k = 4 2.915101 2.953624 2.959635 2.960551 2.960690 2.960711 2.953624; 2.959635; 2.960551; 2.960690; 2.960711; 2.960714; k = 1 k = 2 k = 3 k = 4 k = 5 k = 6 x = 1
Индекс
Элементарные функции    Линейные уравнения    Нелинейные уравнения    Случайные числа


Hosted by uCoz