Научная литература
booksshare.net -> Добавить материал -> Математика -> Боглаев Ю.П. -> "Вычислительная математика и программирование " -> 34

Вычислительная математика и программирование - Боглаев Ю.П.

Боглаев Ю.П. Вычислительная математика и программирование — Высшая школа, 1990. — 546 c.
ISBN 5-06-00623-9
Скачать (прямая ссылка): vychmatiprog1990.djvu
Предыдущая << 1 .. 28 29 30 31 32 33 < 34 > 35 36 37 38 39 40 .. 168 >> Следующая

EXTERNAL F
DATA X0,H,N/0.,0.01,100/
CALL Z0S0(F,H,X0,N,Y)
END
С ВНЕШНЯЯ ФУНКЦИЯ-ПОДПРОГРАММА, ВЫЧИС-
С ЛЯЮЩАЯ F(X)
FUNCTION F(X)
REAL Хг
F=EXP( - X)+ATAN(X)
RETURN
END
Пусть необходимо иметь таблицу значений функции f(x) в точках 1 шаг hi=xi+1—xi, вообще говоря, переменный.
В этом случае:
входные данные задачи: xf, 1 <г<л,/(х);
выходные данные: f{xx),f{х2), ...,/(х„).
Подпрограмме табулирования с переменным шагом присвоим имя Z0S1:
SUBROUTINE Z0S1(F,X,N,Y)
REAL X(N),Y(N)
INTEGER N DO 1 1 = 1,N 1 Y(I) = F(X(I))
RETURN END
3.3.3. Аппроксимация функций. Простейшим способом приближения функции f(x), заданной в п точках xt, 1</<и, является линейная интерполяция по двум точкам.
Для любого.л:, хх^х^хн9 значение f(x) приближенно заменяется формулой
f(x)~p(x)=f(xi)Xi+1 х +/(xi+1) * Х‘ Х^Х<Х;+1,
xi+l~xi xi+l~xi
описывающей прямую, которая проходит по двум точкам (х;. /(х;) И (xi+i,f(xi+i)) плоскости (х, у).
Напишем программу линейной интерполяции в двух вариантах:
1) когда /(х) задана таблично с постоянным шагом; 2) с переменным.
Вариант 1.
Входные данные: /(хг), 1^г<и, х0, h, х; выходные данные: р(х).
Основным моментом алгоритма линейной интерполяции является поиск интервала [х;, xi+1], которому принадлежит точка х, где производится вычисление р(х). Чтобы найти номер i, следует вычислить целую часть дроби [(х—хЦ/й]. Среди библиотечных функций фортрана есть соответствующая функция INT(X), реализующая выделение целой части. Поэтому программа может иметь следующий вид:
FUNCTION A3S0(Y,N,X 1 ,Н,Х)
REAL Y(N),X 1 ,H,P,XM,XM 1 INTEGER N,M С ВХОДНЫЕ ПАРАМЕТРЫ
С Y(N) —МАССИВ ЗНАЧЕНИЙ ФУНКЦИИ
С N—РАЗМЕРНОСТЬ МАССИВА
С Н—ШАГ ТАБЛИЦЫ
С X—КООРДИНАТА, В КОТОРОЙ ПРОИЗВОДИТСЯ
С ИНТЕРПОЛЯЦИЯ
С ВЫХОДНЫЕ ПАРАМЕТРЫ
С A3S0—ПРИБЛИЖЕННОЕ ЗНАЧЕНИЕ ФУНКЦИИ В
С ТОЧКЕ X
М = INT((X—X1 )/Н)
ХМ=Х1 + М*Н ХМ1=ХМ+Н
Р=(Y (М)*(ХМ 1 — X)+Y(M +1 )*(Х—ХМ))/Н
A3S0=P
RETURN
END
Вариант 2.
Входные данные: х;, /(х f), Ui<«, г,
выходные данные: p(z). Будем предполагать, что гфхп. В этом варианте поиск интервала [xi9xi+1], содержащего точку z, можно провести различными способами. Воспользуемся простым перебором, а именно: в цикле по /, используем логический
оператор IF. Когда выражение в скобках станет истинным, цикл прекратим. Имеем соответствующий фрагмент
93
1=1
1 IF (Z.GE.X(I).AND.Z.LT.X(I +1)) GO TO 2 1=1+1
GO TO 1
2
Теперь полная программа может быть полностью представлена следующим образом:
FUNCTION A3S1(X,Y,N,Z)
REAL X(N),Y(N),P,Z INTEGER N,I 1 = 1 .
1 IF (Z.GE)X(I).AND.Z.LT.X(I +1)) GO TO 2 1=1+1 GO TO 1
2 P=(Y(I>(X(I+1) - Z)+Y(I + 1)*(Z -X(I)))/(X(I +1) -X(I)) A3S1 =P '
RETURN ENP .
3.3.4. Интегрирование. В качестве элементарного алгоритма численного интегрирования примем формулу Симпсона
. / т т-1 \
Q = ?i\fo+^ Z /гг-1+2 X /г.+Лт)-
Здесь h—шаг по оси x,fi=f(xi),0^i^2m, xi+l—xi=h (см. рис. 7.7). Для написания программы вычисления Q по значениям функции /, заметим, что она может быть представлена в виде
Каждое слагаемое в сумме имеет вид
/(*)+4/(х+h) +/(х+2 h),
где x — x2i, х0 = а. Поэтому для вычисления суммы можно использовать следующий фрагмент:
Q=0.
Х=А
DO 1 1 = 2,N,2
Q=Q+F(X)+4.*F(X+H)+F(X+2.*H)
1 Х=Х+2.*Н
Здесь N = 2т. Н=Л, А—а. Теперь уже не представляет труда оформить соответствующую программу:
FUNCTION A4S0(A,B,N,F)
REAL A,B,H,Q INTEGER N С ВХОДНЫЕ ПАРАМЕТРЫ
С А—НИЖНИЙ ПРЕДЕЛ ИНТЕГРИРОВАНИЯ
С В—ВЕРХНИЙ ПРЕДЕЛ ИНТЕГРИРОВАНИЯ
С N—ЧЕТНОЕ ЧИСЛО ОТРЕЗКОВ ИНТЕГРИРОВАНИЯ
С F—ИМЯ ВНЕШНЕЙ ФУНКЦИИ ВИДА
С REAL FUNCTION F(X)
С REAL X
С ВЫЧИСЛЯЮЩЕЙ ЗНАЧЕНИЕ ПОДИНТЕГРАЛЬНОЙ
С ФУНКЦИИ
С A4S0—ПРИБЛИЖЕННОЕ ЗНАЧЕНИЕ ИНТЕГРАЛА
Н=(В—A)/N Q=0.
Х=А
DO 1 1=2, N,2
Q = Q+F(X)+4.*F(X+H)+F(X+2.*H)
1 Х=Х+2.*Н
Q=Q*H/3 A4S0=Q RETURN END
В гл. 7 показано, что оценка погрешности приближенного значения интеграла может быть получена вычислением Qx с шагом Н, затем Q2 с шагом Н/2, а абсолютная погрешность в определяется выражением (по правилу Рунге)
8=161-62 1/15.
Вычислим
| exp (sin х) clx
о
с числом отрезков разбиения интервала [0, 2], равным N = 100, 200. Результаты (приближенное значение интеграла Q2 и ошибку е) будем выдавать на терминал:
REAL A, B,E,Q1,Q2 INTEGER N EXTERNAL F DATA A,В,N/0.,2., 100/
Q1 = A4S0 (A, B, N, F)
Q2=A4S0 (A, B,2 * N, F)
E=ABS((Q1 —Q2)/15.)
WRITE (5,1) Q2,E 1 FORMAT (2X,E13.6,2X,E13.6)
END
С ВНЕШНЯЯ ФУНКЦИЯ F(X)
FUNCTION F(X)
F = EXP (SIN (X))
RETURN
END
95
3.3.5. Суммирование рядов. Суммирование конечной числовой последовательности
S=YJai
i = 1
выполняется с помощью оператора цикла DO тремя операторами: S=0.
DO 1 1=1,N 1 S=S+A(I)
где А—имя функции-подпрограммы, вычисляющей at. Например,
REAL FUNCTION A (I)
INTEGER I
RETURN END * .
Суммирование бесконечных числовых рядов
00
i=l
выполняется обычно с помощью цикла, организованного логическим оператором IF и оператором безусловной передачи управления GO ТО. Выход из цикла осуществляется при достижении значения вычисляемой точности f. ] заданной ?.
Рассмотрим программу суммирования сходящегося знакопеременного ряда, для которого легко вычислить оценку погрешности; она меньше модУля первого отброшенного члена ряда
Предыдущая << 1 .. 28 29 30 31 32 33 < 34 > 35 36 37 38 39 40 .. 168 >> Следующая

Реклама

c1c0fc952cf0704ad12d6af2ad3bf47e03017fed

Есть, чем поделиться? Отправьте
материал
нам
Авторские права © 2009 BooksShare.
Все права защищены.
Rambler's Top100

c1c0fc952cf0704ad12d6af2ad3bf47e03017fed