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

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

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

| S—SN | = S— ? й( «jv+i I*
i=i
Приведем соответствующую программу:
FUNCTION A5S0 (Е,А)
REAL E,S INTEGER N С ВХОДНЫЕ ПАРАМЕТРЫ
С Е—ЗАДАННАЯ АБСОЛЮТНАЯ ПОГРЕШНОСТЬ
С А—ИМЯ ВНЕШНЕЙ ФУНКЦИИ-ПОДПРОГРАММЫ,
С ВЫЧИСЛЯЮЩЕЙ ОБЩИЙ ЧЛЕН ЗНАКОПЕРЕ-
С МЕННОГО РЯДА
С ВЫХОДНЫЕ ПАРАМЕТРЫ
С A5S0—ПРИБЛИЖЕННОЕ ЗНАЧЕНИЕ СУММЫ РЯДА
DATA N,S/1,0./
1 S = S + A (N)
IF (ABS (A (N)).GT.E) GO TO 2 GO TO 3
2 N=N+1
96 \
V.. ?
GO ТО 1 3 A5S0 = S
RETURN END
В качестве иллюстрации применения этой программы рассмотрим суммирование ряда
5-1(-1)г(.Ч1)-
i=l
с точностью е = 10-4. Программа может иметь вид
REAL E,S EXTERNAL А DATA E/l.E—4/
S=A5S0(E,A)
WRITE (5,1) S 1 FORMAT (2X,'S=',E11.4)
END
С
FUNCTION A (I)
INTEGER I
IF (MOD(I,2).EQ.l) GO TO 1 A= 1/(I*I+1)
RETURN 1 A=(-l)/(l*I + l)
RETURN
END
Суммирование функциональных рядов 5(x)= ? di(x)
i—1
в области сходимости x, с точки зрения программирования, приводит к незначительным усложнениям- по сравнению с числовыми рядами. Действительно, пусть требуется найти 5(л:) в точках Xj, из области сходимости с заданной абсолютной
точностью в. Тогда эта задача сводится к суммированию т числовых рядов
S{xj)= ? at(xj)
i= 1
с точностью 8, т. е. к задаче, рассмотренной выше. Поэтому приведенная программа является небольшой модификацией A5S0:
SUBROUTINE A5S1 (X,S,E,A,E1,M)
REAL X(M),S(M),E INTEGER N,M С ВХОДНЫЕ ПАРАМЕТРЫ
С Х(М)—МАССИВ, СОДЕРЖАЩИЙ ЗНАЧЕНИЯ Х,В
4 Ю. П. Боглаев
97
С КОТОРЫХ ВЫПОЛНЯЕТСЯ СУММИРОВАНИЕ
С РЯДА
С Е —ЗАДАННАЯ АБСОЛЮТНАЯ ПОГРЕШНОСТЬ
С А —ИМЯ ВНЕШНЕЙ ФУНКЦИИ, ВЫЧИСЛЯЮЩЕЙ
С ОБЩИЙ ЧЛЕН РЯДА, ДОЛЖНА ИМЕТЬ ВИД
С REAL FUNCTION A(I,X)
С REAL X
С INTEGER I
С El —ИМЯ ВНЕШНЕЙ ФУНКЦИИ, ВЫЧИСЛЯЮЩЕЙ
С ДОСТИГНУТУЮ ПОГРЕШНОСТЬ, ДОЛЖНА
С ИМЕТЬ ВИД
С REAL FUNCTION El (I,X)
С REAL Я
С INTEGER I
С M —РАЗМЕРНОСТЬ МАССИВА X,S
С ВЫХОДНЫЕ ПАРАМЕТРЫ
С S(M)—МАССИВ, СОДЕРЖАЩИЙ СУММЫ РЯДА В
С ТОЧКАХ X(J)
DO 3 J=1?M N = 1 S(J)=0.
1 S (J)=S (J)+A (N, X (J))
IF (El (N,X(J)).GT.E) GO TO 2 GO TO 3
2 N=N+1 GO TO 1
3 CONTINUE RETURN END
Отличие этой программы от A5S0 состоит в том, что добавлен цикл по J—перебор по точкам Xj—и предполагается, что пользователь должен написать внешние функции-подпрограммы А(1,Х), Е1(1,Х). Применим программу A5S1 для суммирования ряда
п/, J X3 X5 x2"+1 1
S(*)-2[*+T+T+...+—+ ...J .
с абсолютной погрешностью е = 10“5 в точках Xj= — 0,5; —0,3; + 0,4; +0,7. Известно, что сумма этого ряда
S (д:) = 1п ((1 +х)/(1 -х));
область сходимости |*|<1, оценка остатка
Программа может иметь вид
REAL X(4),S(4),E INTEGER М EXTERNAL А,El
98
\
V.
DATA E, M/l.E-5, 4/,X/-0.5,-0.3,0.4,0.7/
CALL A5S1 (X, S, E, A, El, M)
WRITE (5,1) S 1 FORMAT (2X,4E12.5)
END
С
FUNCTION A(I,X)
REAL X INTEGER I
IF (MOD(I,2).EQ.l) GO TO 1 A=0.
RETURN 1 1 = 2*1 +1
A = 2*X**I/I
RETURN
END
С
FUNCTION El (I,X)
REAL X INTEGER I
IF (MOD (I,2).EQ.l) GO TO 1 El = 1.E10 RETURN 1 1 = 2*1 +1
El =(ABS(X))**I/(l*(l —X*X))
RETURN
END
На примере этой программы можно заметить, что она далеко не универсальна. Действительно, если в массив Xj внести значение х=\. 3, лежащее вне области сходимости, то программа A5S1 зацикливается (нет выхода из цикла операторов с метками 1—3) и заканчивается аварийно переполнением. Однако если пользователь знает область сходимости ряда и может оценить скорость сходимости, то применение программы A5S1 может быть оправдано.
С другой стороны, программа A5S1 служит для суммирования рядов общего вида, поэтому она более громоздка, чем программа суммирования конкретного ряда, например, приведенного выше/
3.3.6. Фурье-анализ. Под Фурье-анализом обычно понимается процедура определения коэффициентов ряда Фурье функции f(x). В зависимости от того, в каком виде задается /(./) (аналитически или таблично, в вещественном виде или комплексном) существует несколько процедур Фурье-анализа. Однако в основе всех процедур лежит вычисление интегралов по формулам
Я
ат = (1/к) J f(x)cosmxdx, т = 0, 1, 2,

я
bm = (l/я) J f(x)sinmxdx, т= 1, 2, ....
4*
99
Будем предполагать, что для вычисления f(x) может быть написана функция-подпрограмма. Количество коэффициентов ат, Ьт. подлежащих определению, задается параметром М, 0 sj т ^ М. Для вычисления интеграла воспользуемся программой A4S0 с числом отрезков интегрирования п=2к(т+1), где коэффициент к будем задавать:
SUBROUTINE A6S0 (F, М, М1, К,А, В)
REAL A (Ml), В (M),PI, Q, Rl, R2, R3 INTEGER M,M1,K,I1,N
С ------------------------------
С ВХОДНЫЕ ПАРАМЕТРЫ
С F —ИМЯ ВНЕШНЕЙ ФУНКЦИИ-ПОДПРОГРАММЫ,
С ВЫЧИСЛЯЮЩЕЙ F(X)
С М—РАЗМЕРНОСТЬ МАССИВА В
С Ml—РАЗМЕРНОСТЬ МАССИВА А, М1=М+1
С К—КОЭФФИЦИЕНТ, ОПРЕДЕЛЯЮЩИЙ ЧИСЛО
С ОТРЕЗКОВ ИНТЕГРИРОВАНИЯ
С ВЫХОДНЫЕ ПАРАМЕТРЫ
С А—МАССИВ КОЭФФИЦИЕНТОВ ФУРЬЕ А(1)
С В —МАССИВ КОЭФФИЦИЕНТОВ ФУРЬЕ В(1)
с --------------------------------------------------
DATA PI/3.1415929/
С ВЫЧИСЛЕНИЕ МАССИВА А
Н=Р1/(К*М1)
N=2*K*M1 DO 2 1=1,Ml Q=0.
X=-PI 11 = 1-1 DO 1 J = 2,N,2 Rl =F(X)*COS(Il *X)
R2 = F(X+H)*COS(Il*(X+H))
R3 = F(X+2.*H)*C0S(I1*(X+2.*H))
1 Q=Q + R1+4.*R2+R3
Предыдущая << 1 .. 29 30 31 32 33 34 < 35 > 36 37 38 39 40 41 .. 168 >> Следующая

Реклама

c1c0fc952cf0704ad12d6af2ad3bf47e03017fed

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

c1c0fc952cf0704ad12d6af2ad3bf47e03017fed