ZX Review
#1-2
31 декабря 1996 |
|
Спектрум в школе - статья о численных методах "Метод Зейделя решения СЛАУ".
СПЕКТРУМ В ШКОЛЕ ИФК.: Пугачев Андрей Николаевич из г.Ковров, Владимирской области, предлагает на суд читателей ZX РЕВЮ свой материал, посвященный численным методам. КОРР: в ZX РЕВЮ 1993 года было напечатано несколько статей о численных методах. Но потом эта очень интересная тема была забыта. Чтобы как то вернуть справедливость, я специально для журнала написал три программы на бейсике по численным методам. Это программа решения СЛАУ "методом Зейделя" (очень полезная вещь - является модификацией метода простых итераций), и две программы по поиску минимума функций: метод золотого сечения и метод дихотомии. Метод Зейделя решения СЛАУ. Позволяет получить решение системы с заданной погрешностью за ограниченное количество итераций. Метод сходится при условии, что диагональные коэффициенты системы по абсолютной величине равны или больше любого другого коэффициента в своей строке. │A11 A12 A13 ... A1n│ │B1│ │A21 A22 A23 ... A2n│ │B2│ │A31 A32 A33 ... A3n│ │B3│ │... ... ... ... ...│ │..│ │An1 An2 An3 ... Ann│ │Bn│ Программа на Бейсике: 5 REM Ввод 10 DIM A(30,30) : DIM B(30) : DIM Z(30) : DIM D(30) : DIM X(30) 20 INPUT "Количество уравнений (<=30)";KOLUR 40 INPUT "Погрешность метода";EPS 50 FOR I=1 TO KOLUR 60 FOR J=1 TO KOLUR 70 INPUT "Введите A[i,j]";A(I,J) 80 PRINT "A[";I;",";J;"]=";A(I,J) 90 NEXT J 100 INPUT "Введите B[i]";B(I) 110 LET Z(I)=B(I)/A(I,I) 120 PRINT "B[";I;"]=";B(I) 130 NEXT I 135 REM Analiz 140 FOR I=1 TO KOLUR 150 FOR J=1 NJ KOLUR 160 IF ABS (A(I,I)) < ABS (A(I,J)) THEN PRINT "Нет сходимости!": STOP 170 NEXT J 180 NEXT I 185 Solution 190 LET S=0 : REM Счетчик итераций 200 LET K=0 : REM Признак точности решения 210 FOR I=1 TO KOLUR 220 LET D(I)=-B(I) 230 FOR J=1 TO KOLUR 240 LET D(I)=D(I)+A(I,J)*Z(J) : REM Вычисление "невязок" 250 NEXT J 260 IF ABS (D(I)/A(I,I)) > EPS THEN LET K=1: REM Точность не достигнута 270 LET X(I)=Z(I)-D(I)/A(I,I) : REM Корректировка решения 280 LET Z(I)=X(I) : REM Заполнение для использования на данной итерации 290 NEXT I 300 LET S=S+1 310 PRINT "Итерация номер ";S 320 FOR I=1 TO KOLUR 330 PRINT "X[";I;"]=";X(I);" delta_X=";-D(I)/D(I,I) 340 NEXT I 350 PRINT "Для продолжения нажмите Enter" 355 PAUSE 0 360 IF K<>0 THEN GO TO 200 : REM Точность достигнута 365 REM Result 380 PRINT "Результаты: " 390 PRINT "Количество итераций = "; S 400 FOR I=1 TO KOLUR 410 PRINT "X[";I;"]=";X(I) 420 NEXT I Метод "Золотого сечения" поиска минимума функции y=F(x) 10 LET C=0.618 : LET D=0.382 13 INPUT "Hачало отрезка = ";A : INPUT "Конец отрезка = "; B : IF A>=B THEN GO TO 13 15 INPUT "Допустимая погрешность = "; EPS : GOSUB 58 : GOSUB 70 21 IF Y1>Y2 THEN GO TO 36 26 LET B=X2 : LET X2=X1 : LET Y2=Y1 27 GOSUB 58 : GO TO 43 36 LET A=X1 : LET X1=X2 : LET Y1=Y2 37 GOSUB 70 43 IF ABS (B-A) > EPS THEN GO TO 21 50 PRINT "Результат: " 52 LET X=(A+B)/2 : PRINT "X_min=";X : STOP 58 LET X1=C*A+D*B : LET X=X1 : GOSUB 82 : LET Y1=Y : RETURN 70 LET X2=D*A+C*B : LET X=X2 : GOSUB 82 : LET Y2=Y : RETURN 82 LET Y=......................... : REM Здесь вводится исследуемое уравнение Поиск минимума одномерной функции методом "дихотомии" 10 DEF FN F(X)=................ : REM Здесь вводится функция 20 INPUT "Hачало отрезка "; A 30 INPUT "Конец отрезка "; B 40 INPUT "Допустимая погрешность "; EPS 50 REM Metod 60 LET I=0 70 LET C=(A+B)/2 80 IF FN F(C-EPS/10) < FN F(C+EPS/10) THEN GO TO 100 90 LET A=C-EPS/10 : GO TO 110 100 LET B=C+EPS/10 110 LET I=I+1 120 PRINT "C=";C;"Итерация номер: "; I 130 IF (B-A) > EPS THEN GO TO 70 140 PRINT "Результат: " 150 PRINT "X_min=";C;" Количество итераций = "; I
Другие статьи номера:
Похожие статьи:
В этот день... 21 ноября