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

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

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

S=ABS(Y (1)—Х(1))
DO 5 1=2, N
IF (S.LT.ABS (Y (I)—X (I))) S=ABS (Y (I)—X (I))
5 CONTINUE
С ЗАСЫЛКА НОВОГО ПРИБЛИЖЕНИЯ В СТАРОЕ
DO 6 1 = 1, N
6 X(I)=Y(I)
С СРАВНЕНИЕ С ЗАДАННОЙ ТОЧНОСТЬЮ
IF (S.LT.E) GO ТО 7 GO ТО 100
7 RETURN END
3.3.10. Решение линейных интегральных уравнений. Одним из численных методов решения интегрального уравнения ъ
}>(x;) = JК(х, л) у ($)<& + /(*), a^x^b,
а
является его приближенная замена системой линейных алгебраических уравнений
п
y(xi)=Y,hK(xi’sj)y(sj)+f(xi)’ j= 1
Xi=a+(i— 1 /2) A, Sj=a+(j-1 /2) A, h=(b-a)/n. Обозначим матрицу K=(Ki J) = hK(xi, Sj), векторы у, /
J = yi=y(xi), f=(fi), /i =/(*,•)•
Будем предполагать, что ||^||<#<1. Тогда систему алгебраических уравнений
y=Ky+f
можно решать с помощью программы A9S0, а центральным моментом следующей программы оказывается вычисление матрицы К и свободного вектора /. Значение элементов вектора у принимается в качестве приближенных значений точного решения у (л;) в точках хь.
105
SUBROUTINE B2S0 (N, К, F, АО, ВО, В, D, Е, X, Y) REAL АО, ВО, В (N, N), D (N), Y (N), ХО, S, Е, X (N) INTEGER N
С ВХОДНЫЕ ПАРАМЕТРЫ
С N—РАЗМЕРНОСТЬ МАССИВОВ B,D,Y
С К —ВНЕШНЯЯ ФУНКЦИЯ-ПОДПРОГРАММА,
С ВЫЧИСЛЯЮЩАЯ K(X,S)
С REAL FUNCTION K(X,S)
С REAL X,S
С АО—НИЖНИЙ ПРЕДЕЛ ИНТЕГРАЛА
С ВО—ВЕРХНИЙ ПРЕДЕЛ ИНТЕГРАЛА
С В —РАБОЧИЙ МАССИВ
С Е —ТОЧНОСТЬ РЕШЕНИЯ СИСТЕМЫ УРАВНЕНИЙ
С X —РАБОЧИЙ МАССИВ
С ВЫХОДНЫЕ ПАРАМЕТРЫ
С Y —ВЕКТОР ПРИБЛИЖЕННЫХ ЗНАЧЕНИЙ
С РЕШЕНИЯ
С —----------------------------------------------
С ВЫЧИСЛЕНИЕ ЭЛЕМЕНТОВ МАТРИЦЫ K(I,J),F(I) И
С ЗАПИСЬ В МАССИВЫ B(N,N),D(N)
Н=(В0—A0)/N
Х0=А0
S=A0
DO 2 J=1,N DO 1 1=1,N B(I,J)=K(X0,S)
1 X0=X0+H/2 D(J) = F(S)
2 S = S + H/2
С ОБРАЩЕНИЕ К ПРОГРАММЕ A9S0
CALL A9S0 (N, В, D, E, Y, X)
RETURN
END
3.3.11. Корни полиномов и нелинейных уравнений. Существует множество алгоритмов определения корней нелинейных уравнений, в частности полиномов. Рассмотрим наиболее простой алгоритм, применимый для полиномов и скалярных уравнений вида
/(х) = 0 или Р„(х) = 0,
где f(x)—непрерывная функций; Рп{х)— полином п-й степени; д:—скаляр, принадлежащий заданному интервалу а^х^Ь.
Первый этап: вычисление перебором значений f(x) с шагом h1 в точках x—a + ih^ h1=(b-a)/n, вывод на терминал
ГраНИЧНЫХ ТОЧеК ИНТерваЛОВ [^, ^и], ГДе /(*;)/(*?+1)<0 или /(*.) = О, /(д:. + 1) = 0. Указанные интервалы заведомо содержат по крайней мере один корень.
106 ^ ,
Второй этап: повторение первого этапа с более мелкими шагами на выделенных интервалах с целью обнаружения нескольких корней на интервалах [xh xi+l], Этот этап можно опустить, если пользователь имеет дополнительную информацию о расположении корней уравнений.
Третий этап: в предположении, что на заданном интервале уравнение имеет единственный корень, определение его с заданной точностью методом бисекции (см. 9.4).
Первый и второй этапы реализуются в следующей программе:
SUBROUTINE B4S0 (A,B,H,F)
REAL A,B,H,X1,X2,Y1,Y2,Y3,Y4 INTEGER K1,K2,K3 DATA Kl,K2,K3,Y4/3*0, 1./
С -------------------------------------
С ВХОДНЫЕ ПАРАМЕТРЫ
С А—ЛЕВЫЙ КОНЕЦ ИНТЕРВАЛА
С В—ПРАВЫЙ КОНЕЦ ИНТЕРВАЛА
С Н—ШАГ ПЕРЕБОРА
С F—ИМЯ ВНЕШНЕЙ ФУНКЦИИ-ПОДПРОГРАММЫ,
С ВЫЧИСЛЯЮЩЕЙ ЗНАЧЕНИЯ F(X) ИЛИ Р(Х)
С -------------------------------------------------------
XI = А
1 Y1=F(X1)
Х2=Х1+Н Y2 = F (Х2)
Y3 = SIGN(Y4, Y1)*SIGN(Y4, Y2)
IF (Y1.EQ.0.) Kl = l IF Y2.EQ.0.) K2= 1 IF (Y3.LT.0.) K3=l IF ((Kl.OR.K2.OR.K3).NE.0) GO TO 3
2 IF (X2.GT.B) GO TO 4 X1=X1+H
GO TO 1
3 WRITE (5, 5) XI, X2, Kl, K2, КЗ GO TO 2
4 WRITE (5, 6)
5 FORMAT (2X, 'XI = ', E13.6, 'X2=', E13.6, 2X, 312)
6 FORMAT (10X, КОНЕЦ ПЕРЕБОРА )
RETURN
END
Приведем программу метода бисекции по схеме алгоритма п. 9.4.2:
SUBROUTINE B4S1 (A,B,E,F,C)
REAL A,B,E,C,S,Y,Y1 DATA S/1./
С -------------------------------------------------------
107
С ВХОДНЫЕ ПАРАМЕТРЫ
С А—ЛЕВЫЙ КОНЕЦ ИНТЕРВАЛА
С В —ПРАВЫЙ КОНЕЦ ИНТЕРВАЛА
С Е—ТОЧНОСТЬ ОПРЕДЕЛЕНИЯ КОРНЯ
С Ь—ИМЯ ВНЕШНЕЙ ФУНКЦИИ-ПОДПРОГРАММЫ,
С ВЫЧИСЛЯЮЩЕЙ ЗНАЧЕНИЯ Е(Х) ИЛИ Р(Х)
С ВЫХОДНЫЕ ПАРАМЕТРЫ
С С—ЗНАЧЕНИЕ КОРНЯ
с --------------------------------------------
1 С=(А+В)*0.5
(S, Y)*SIGN(S, Yl).GT.O) А = С
Y1=F(B)
IF (SIfrN (S, Y)*SIGN(S, Yl).GT.O) B = C IF ((B—A)*0.5.GE.E) GO TO 1 2 RETURN END
3.3.12. Нелинейная оптимизация. В основе многих алгоритмов поиска минимума (максимума) нелинейной целевой функции Ф(*) (х, вообще говоря, вектор) лежит минимизация функции одной переменной. Одним из возможных алгоритмов минимизации функции одной переменной является алгоритм метода золотого сечения (см. 9.7).
Приведем программу, соответствующую схеме алгоритма метода золотого сечения (см. п. 9.7.3): ПЙлШ
SUBROUTINE B5S0(A,B,E,F,C) «SSL
REAL А,В,Е,С,Т
С -----------------------------------------------------
С ВХОДНЫЕ ПАРАМЕТРЫ
С А—ЛЕВЫЙ КОНЕЦ ИНТЕРВАЛА
С В—ПРАВЫЙ КОНЕЦ ИНТЕРВАЛА
С Е—ПОГРЕШНОСТЬ ОПРЕДЕЛЕНИЯ ТОЧКИ MIN
С F—ИМЯ ВНЕШНЕЙ ФУНКЦИИ-ПОДПРОГРАММЫ,
С ВЫЧИСЛЯЮЩЕЙ ЗНАЧЕНИЕ МИНИМИЗИРУЕ-
С МОЙ ФУНКЦИИ
С ВЫХОДНЫЕ ПАРАМЕТРЫ
С С—ПРИБЛИЖЕННОЕ ЗНАЧЕНИЕ ТОЧКИ MIN
Предыдущая << 1 .. 31 32 33 34 35 36 < 37 > 38 39 40 41 42 43 .. 168 >> Следующая

Реклама

c1c0fc952cf0704ad12d6af2ad3bf47e03017fed

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

c1c0fc952cf0704ad12d6af2ad3bf47e03017fed