Методы решения некорректно поставленных задач. Методы_решения_некорректно_поставленных_задач_-_StudentLib. Рассмотрим систему линейных алгебраических уравнений
Скачать 270.5 Kb.
|
ПРИЛОЖЕНИЯПриложение 1. Текст программы для реализации метода Тихонова на языке PASCAL Uses CRT; type real=extended; const matrixA: array[1..3,1..3] of real = ((-19/20,1/5, 3/5), (-1 ,0.1, 0.5), (-0.01 ,0 ,1/200)); One: array [1..3,1..3] of real = ((1,0,0), (0,1,0), (0,0,1)); U:array[1..3] of real = (1,1,1.1); var i,j,k,q:byte; A,At,A1,A2,Ar,One1:array[1..3,1..3] of real; delta,Det,S,alpha:real; B,Z,U1:array[1..3] of real; f:text; Procedure TransA; begin for i:=1 to 3 do for j:=1 to 3 do At[i,j]:=A[j,i] end; Function Koef(par1,par2:byte):real; var Sum:byte; Tmp:real; begin Sum:=par1+par2; Tmp:=1; for k:=1 to sum do Tmp:=Tmp*(-1); Koef:=Tmp; end; Function AlAdd(par1,par2:byte):real; type element=record value:real; flag:boolean; end; var BB:array[1..2,1..2] of real; AA:array[1..3,1..3] of element; k,v,w:byte; N:array[1..4] of real; P1:real; begin for v:=1 to 3 do for w:=1 to 3 do begin AA[v,w].value:=A2[v,w]; AA[v,w].flag:=true end; for v:=1 to 3 do AA[par1,v].flag:=false; for v:=1 to 3 do AA[v,par2].flag:=false; { for v:=1 to 3 do begin for w:=1 to 3 do write(AA[i,j].value:2:3,' '); writeln end; } k:=1; for v:=1 to 3 do for w:=1 to 3 do begin if AA[v,w].flag then begin N[k]:=AA[v,w].value; { writeln(N[k]);} k:=k+1 end; end; BB[1,1]:=N[1]; BB[1,2]:=N[2]; BB[2,1]:=N[3]; BB[2,2]:=N[4]; { writeln('alg dop',par1,par2,' ',BB[1,1]*BB[2,2]-BB[1,2]*BB[2,1]);} AlAdd:=BB[1,1]*BB[2,2]-BB[1,2]*BB[2,1]; end; Function DetCount:real; var S1:real; z:byte; begin S1:=0; for z:=1 to 3 do S1:=S1+A2[1,z]*Koef(1,z)*AlAdd(1,z); DetCount:=S1; end; Procedure RevMatr; begin for i:=1 to 3 do for j:=1 to 3 do Ar[j,i]:=Koef(i,j)*AlAdd(i,j)/DetCount; { for i:=1 to 3 do begin for j:=1 to 3 do write(Ar[i,j],' '); writeln; end;} end; Function AllRight:boolean; begin writeln(f,'Ґўп§Є Ї® 1-¬г н«-вг',(abs(U[1]-U1[1]))); writeln(f,'Ґўп§Є Ї® 2-¬г н«-вг',(abs(U[2]-U1[2]))); writeln(f,'Ґўп§Є Ї® 3-¬г н«-вг',(abs(U[3]-U1[3]))); writeln(F); if (abs(U[1]-U1[1])<0.001) and (abs(U[2]-U1[2])<0.001) and (abs(U[3]-U1[3])<0.001) then AllRight:=true else AllRight:=false end; Function Pow(par1:real;par2:byte):real; var S2:real; z:byte; begin S2:=1; if par2=0 then begin Pow:=1; exit end else for z:=1 to par2 do S2:=S2*par1; Pow:=S2; end; BEGIN clrscr; Assign(f,'c:\tikh.txt'); Rewrite(f); for i:=1 to 3 do for j:=1 to 3 do A[i,j]:=matrixA[i,j]; TransA; Det:=0.000125; {----------------------------} for i:=1 to 3 do begin S:=0; for j:=1 to 3 do begin S:=S+At[i,j]*U[j]; B[i]:=S end; end; {----------------------------} for i:=1 to 3 do for j:=1 to 3 do begin S:=0; for k:=1 to 3 do begin S:=S+At[i,k]*A[k,j]; A1[i,j]:=S end end; {-----------------------------} q:=1; repeat alpha:=q/pow(4,q); for i:=1 to 3 do for j:=1 to 3 do One1[i,j]:=One[i,j]*alpha; for i:=1 to 3 do for j:=1 to 3 do A2[i,j]:=One1[i,j]+A1[i,j]; RevMatr; {------------------------------} for i:=1 to 3 do begin S:=0; for j:=1 to 3 do begin S:=S+Ar[i,j]*B[j]; Z[i]:=S end; end; for i:=1 to 3 do begin S:=0; for j:=1 to 3 do begin S:=S+A[i,j]*Z[j]; U1[i]:=S end end; q:=q+1; until AllRight; {------------------------------} clrscr; writeln('ЏаЁЎ«Ё¦ҐЁҐ Є ®а¬ «м®¬г аҐиҐЁо'); for i:=1 to 3 do writeln('Z(',i,')=',z[i]); writeln; writeln('‡ 票Ґ Їа ў®© з бвЁ ЇаЁ Ї®¤бв ®ўЄҐ ЇаЁЎ«. аҐиҐЁп'); for i:=1 to 3 do writeln('U1(',i,')=',U1[i]); writeln; writeln('‡ 票Ґ Ї а ¬Ґва ॣг«паЁ§ жЁЁ:'); writeln(alpha); Close(f); readln; END. Приложение 2. Распечатка результатов пересчета на каждом шаге невязка по 1-му эл-ту 7.75620788018006E-0002 невязка по 2-му эл-ту 9.12970302562861E-0002 невязка по 3-му эл-ту 1.09101153877771E+0000 невязка по 1-му эл-ту 3.51667654246499E-0002 невязка по 2-му эл-ту 4.81631787337596E-0002 невязка по 3-му эл-ту 1.09057642915500E+0000 невязка по 1-му эл-ту 8.14255746519741E-0003 невязка по 2-му эл-ту 1.75271999674588E-0002 невязка по 3-му эл-ту 1.09024740493812E+0000 невязка по 1-му эл-ту 1.64128226088452E-0004 невязка по 2-му эл-ту 1.40420815653456E-0003 невязка по 3-му эл-ту 1.09002512985506E+0000 невязка по 1-му эл-ту 1.09651876415789E-0003 невязка по 2-му эл-ту 8.01044623892439E-0003 невязка по 3-му эл-ту 1.08980075500722E+0000 невязка по 1-му эл-ту 3.24092274239579E-0003 невязка по 2-му эл-ту 1.28969442769472E-0002 невязка по 3-му эл-ту 1.08943309314635E+0000 невязка по 1-му эл-ту 4.29878415191160E-0003 невязка по 2-му эл-ту 1.47864580098997E-0002 невязка по 3-му эл-ту 1.08840358157784E+0000 невязка по 1-му эл-ту 4.64764022304719E-0003 невязка по 2-му эл-ту 1.53489294761093E-0002 невязка по 3-му эл-ту 1.08488736141985E+0000 невязка по 1-му эл-ту 4.70263264899617E-0003 невязка по 2-му эл-ту 1.53524096326819E-0002 невязка по 3-му эл-ту 1.07252416252061E+0000 невязка по 1-му эл-ту 4.54618391386039E-0003 невязка по 2-му эл-ту 1.47935415193105E-0002 невязка по 3-му эл-ту 1.03007092553528E+0000 невязка по 1-му эл-ту 3.97950585276394E-0003 невязка по 2-му эл-ту 1.29378307693635E-0002 невязка по 3-му эл-ту 9.00028069734717E-0001 невязка по 1-му эл-ту 2.71895340473448E-0003 невязка по 2-му эл-ту 8.83742514077426E-0003 невязка по 3-му эл-ту 6.14624514462952E-0001 невязка по 1-му эл-ту 1.25089904346179E-0003 невязка по 2-му эл-ту 4.06552487723671E-0003 невязка по 3-му эл-ту 2.82729125073012E-0001 невязка по 1-му эл-ту 4.15581257891512E-0004 невязка по 2-му эл-ту 1.35064829843828E-0003 невязка по 3-му эл-ту 9.39264706989556E-0002 невязка по 1-му эл-ту 1.18814900667952E-0004 невязка по 2-му эл-ту 3.86149131520602E-0004 невязка по 3-му эл-ту 2.68533566153482E-0002 невязка по 1-му эл-ту 3.22671215741144E-0005 невязка по 2-му эл-ту 1.04868192738639E-0004 невязка по 3-му эл-ту 7.29267248287954E-0003 невязка по 1-му эл-ту 8.61328853146714E-0006 невязка по 2-му эл-ту 2.79931897352870E-0005 невязка по 3-му эл-ту 1.94668264668650E-0003 невязка по 1-му эл-ту 2.28298750498679E-0006 невязка по 2-му эл-ту 7.41970775380851E-0006 невязка по 3-му эл-ту 5.15976051172231E-0004 Приближение к нормальному решению Z(1)= 3.47834819174013E+0002 Z(2)=-1.08948394975175E+0003 Z(3)= 9.15566443137791E+0002 Значение правой части при подстановке прибл. решения U1(1)= 9.99997717012495E-0001 U1(2)= 1.00000741970775E+0000 U1(3)= 1.09948402394883E+0000 Значение параметра регуляризации: 2.61934474110603E-0010 СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ1.А.Н.ТИХОНОВ, В.Я.АРСЕНИН «МЕТОДЫ РЕШЕНИЯ НЕКОРРЕКТНЫХ ЗАДАЧ» – МОСКВА «НАУКА» 1979. 2.Г.И.МАРЧУК «МЕТОДЫ ВЫЧИСЛИТЕЛЬНОЙ МАТЕМАТИКИ» – МОСКВА «НАУКА» 1977. 3.Л.И.ГОЛОВИНА «ЛИНЕЙНАЯ АЛГЕБРА И НЕКОТОРЫЕ ЕЕ ПРИЛОЖЕНИЯ» – МОСКВА «НАУКА» 1975. 4.В.И.РАКИТИН, В.Е.ПЕРВУШИН «ПРАКТИЧЕСКОЕ РУКОВОДСТВО ПО МЕТОДАМ ВЫЧИСЛЕНИЙ» – МОСКВА «ВЫСШАЯ ШКОЛА» 1998. 5.В.В.ФАРОНОВ «ПРОГРАММИРОВАНИЕ НА ПЕРСОНАЛЬНЫХ ЭВМ В СРЕДЕ TURBO PASCAL» -- ИЗДАТЕЛЬСТВО МГТУ 1990. |