|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Решение системыx[1]= 2.2923714674E+00 x[2]=-4.8172224771E+00 x[3]= 9.7070991429E-01 Результат, полученный в соответствии с округлением: х1 = 2,2924; х2 = -4,8172; х3 = 0,9707. На практике для оценки завершенности итерационного процесса можно использовать эмпирический критерий: если в ходе итераций некоторая десятичная цифра повторилась в трех-четырех следующих друг за другом итераций, то она верна. Этот прием имеет особенный смысл для тех случаев, когда не удается легко установить выполнение достаточных условий сходимости, в между тем практическая реализация итерационного процесса может оказаться результативной (в смысле эмпирического критерия). Подкорректировав программу, выведем значения всех приближений, начиная с первого. Получим следующие результаты: 2.9632 -5.8158 0.6790 Номер итерации = 1 2.9504 -4.3955 0.4687 Номер итерации = 2 2.0017 -4.6121 0.9505 Номер итерации = 3 2.1600 -4.9610 0.8376 Номер итерации = 4 2.3902 -4.8497 0.9961 Номер итерации = 5 2.3126 -4.7738 1.0023 Номер итерации = 6 2.2631 -4.8152 0.9590 Номер итерации = 7 2.2915 -4.8291 0.9641 Номер итерации = 8 2.3003 -4.8159 0.9749 Номер итерации = 9 2.2914 -4.8142 0.9718 Номер итерации = 10 2.2904 -4.8180 0.9694 Номер итерации = 11 2.2929 -4.8179 0.9706 Номер итерации = 12 2.2928 -4.8169 0.9711 Номер итерации = 13 2.2922 -4.8171 0.9707 Номер итерации = 14 2.2923 -4.8173 0.9706 Номер итерации = 15 2.2924 -4.8172 0.9707 Номер итерации = 16 2.2924 -4.8172 0.9707 Номер итерации = 17 2.2924 -4.8172 0.9707 Номер итерации = 18 2.2924 -4.8172 0.9707 Номер итерации = 19 2.2924 -4.8172 0.9707 Номер итерации = 20 2.2924 -4.8172 0.9707 Номер итерации = 21 Итерационный процесс окончен. Число итераций =21 Решение системы x[1]= 2.2923714674E+00 x[2]=-4.8172224771E+00 x[3]= 9.7070991429E-01
Повторяющиеся цифры выделены жирным шрифтом. Как видно, в данном случае указанный критерий справедлив. Алгоритмически метод Зейделя очень похож на метод простой итерации, кроме того, что в нем нет необходимости во втором массиве переменных (y). Новое значение x k вычисляется сначала в переменной g, а затем присваивается x k. Блок-схема алгоритма:
Текст программы: program Zeidel; uses crt; const n=3; {порядок системы} type T=real; var a:array[1..n, 1..n] of T; x,b:array[1..n] of T; alfa, s, eps, g:T; I,j,k:integer; Begin clrscr; writeln(’ввод данных’); for k:=1 to n do for j:=1 to n do Begin writeln(’введите a[’,k,’,’,j,’]’); read(a[k,j]); end; for k:=1 to n do begin writeln(’введите b[’,k,’]’); read(b[k]); end; writeln(’введите eps’); read(eps); alfa:=0; for k:=1 to n do for j:=1 to n do alfa:= alfa + sqr(a[k,j]); alfa:= sqrt(alfa); i:=-1; if alfa<1 then Begin for k:=1 to n do x[k]:= b[k]; repeat s:=0; i:=i+1; for k:=1 to n do begin g:= b[k]; for j:=1 to n do g:= g + a[k,j]*x[j]; s:= s+sqr(x[k]- g); x[k]:= g; end; until sqrt(s)<eps*(1-alfa)/alfa; Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.005 сек.) |