Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
тиімділеу дістері.doc
Скачиваний:
32
Добавлен:
23.03.2016
Размер:
368.13 Кб
Скачать

Мазмұны

Зерттеудің негізгі мақсаттары 3

1. Гаусс алгоритмі.. 4

2. Гаустың бас элементті таңдау әдісінің программалық листингі........................... 6

3. Жартылай бөлу немесе дихотомия әдісі... 8

4. Хорда немесе керме әдісі. 9

5. Ньютон немесе жанама әдісі 10

6. Итерациялық немесе біртіндеп жуықтау әдісі .. 11

7. Сызықсыз теңдеулер жүйесін жуықтап шешудің итерациялық әдіс 12

8. Сызықсыз теңдеулерді шешудің программалық листингі. 13

9. Эйлер әдісі. 19

10. Эйлер-Кошидің жетілдірілген әдісі немесе «предиктор-корректор» әдісі 19

11. Рунге-Кутт әдісі. 20

12. Рунге-Кутт әдісінің программа листингі. 20

Қорытынды 22

2 ескерту. Жуық xi+1 түбірді (2) формуламен есептегенде оны кіші жағына қарай дөңгелектеу қажет. 10

5 ескерту. Жоғарыда айтылғандардың барлығы орындалуы үшін бастапқы жуық шешім дәл шешімге мейлінше жақын болуы тиіс. Сондықтан, бүл әдісті алдынан қандай да бір әдісті қолданып, алғашқы жуық шешімнің мәнін анықтап алған дұрыс болады. 11

Зерттеудің негізгі мақсаттары:

  • Басқару объектілерінің тиімділеу әдістерін құрудың теориялық негіздері, принциптері мен математикалық құру әдістері;

  • қазіргі кездегі есептеу техникалық құралдары мен ғылыми зертеулерді автоматтандыруды қолдана отырып басқару объектілерінің тиімділеу әдістерін жобалау және есептеу әдістері;

  • тиімділік мақсаттары туралы, оларды формалді орнатудың әдістері және оларды шешу тәсілдері.

Гаусс алгоритмі.

Тиімділеу әдістері ғылым мен техниканың көптеген проблемаларын шешуде атқаратын рөлі өте үлкен. Мәселен тиімділеу есептерін шешуде, сандық тәсілдердің алгоритмдерін іске асыруда, математикалық физика есептерін шешкенде, эксперимент нәтижелерін зерттеп, қорытынды шығаруда және басқа да жағдайларда жоғарыда айтылған мәселелер кеңінен қолданылады.

Қазіргі кезеңде тиімділеу есептерін шешудің көптеген әдістері және соларға арналган сандық алгоритмдері бар. Біз сол тиімділеу әдістердің бірі – бас элементін таңдауға негізделген Гаусс әдісімен танысамыз.

n белгісізден тәуелді n сызықтық теңдеулер жүйесі берілсін:

Егер

, ,

векторлық-матрицалық белгілеулерді енгізсек, онда жоғарыдағы жүйені қысқаша былай жазуға болады

.

Әдістің тура жолы. Жүйенің кеңейтілген матрицасын қарастырайық

.

Оның элементі нөлден ерекше, яғни , деп есептеп матрицаның бірінші жатық жолының барлық элементтерін –ге бөліп шығамыз. Соңынан, осы бірінші жатық жолдың элементтерін кезегімен –ге көбейтіп оны - сыншы жатық жолдан шегеріп отырсақ, төмендегідей матрицаны аламыз:

.

Бұл арада

А(1) матрицаның екінші жатық жолының элементі шартты қанағаттандырады деп есептеп, жоғарыдағы процесті осы жатық жолдан бастап, келесілеріне қайталап шығамыз. Осы әдісті рет қайталағанан соң, матрица мынадай түрге енеді

және оның коэффициенттері былайша анықталады:

,

.

Аяқтау жолы. матрицаның соңғы жатық жолы бойынша жүйенің xn -ші жауабын анықтаймыз:

.

Матрицаның (n –1), (n –2), …, 1- ші жатық жолдары бойынша, xn-1, xn-2, …, x1 белгісіздерді біртіндеп төмендегі формула арқылы анықтаймыз

.

1 ескерту. Есептеу алгоритмінде шартының орындалуын талап еттік. Егер ол шарт орындалмаса, онда теңдеулердің орындарын алмастыру арқылы диагоналдық элементтің нөлден ерекше болуын қадағалау қажет. Ондай жағдай алгоритмнің программалық орындалуында ескерілуі қажет.

Есепті шешу алгоритмінде сандарды бөлу амалы өте көп орындалады. Соның нәтижесінде машиналық қателіктер жинақтала бастайды. Ондай қателіктерді кеміту үшін Гаустың бас элементті таңдау әдісі қолданылады. Ол әдістің мағынасы төмендегіше:

- матрицаның орналасқан бірінші тік жолдағы элеметтерінің арасынан абсолют шамасы ең үлкенін анықтап, сол элемент жатқан жатық жолды бірінші жатық жолмен ауыстырамыз; сонан соң Гаусс процесінің бірінші кезеңін атқарамыз; нәтижеде А(1) матрицаны аламыз.

- А(1) матрицаның екінші тік жолын қарастырамыз; элементтен төмен жатқандарының арасынан абсолют шамасы ең үлкенін анықтап, сол жатқан жатық жолды екінші жатық жолмен ауыстырамыз; сонан соң Гаусс процесінің екінші кезеңін атқарамыз; нәтижедеА(2) матирцаны аламыз.

- А(2) матрица үшін жоғарыдағы процесті қайталаймыз.

Егер осы әдіс Гаусс алгоритмінің программалық орындалуында ескерілсе, онда жуық шешімнің дәлділігі арта түседі.

2 ескерту. Егер жүйенің реті , ал матрица элементтерінің арасында нөл саны сирек кездессе (ондай матрицалардытығыз матрицалар деп атайды) онда СТЖ жуықтап шешуге Гаусс алгоритмі тиімді. Бұл жағдайда орындалатын арифметикалық опреациялардың саны (2/3)n3 шамадан аспайды.

3 ескерту. Егер жүйенің реті , немесе, жүйе матрицасында нөл саны көп болса (ондай матрицалардыжұпыны матрицалар деп атайды) онда СТЖ шешуге басқа әдісті, мәселен Зейдель-Гаусс әдісін қолданған жөн.

2 Гаустың бас элементті таңдау әдісінің

программалық листингі

program gauss;

uses crt;

var a:array [1..10,1..10] of real;

b:array [1..10] of real;

c:array [1..10,1..10] of real;

x:array [1..10] of real;

i1,j1,k,i,j,n:integer;

s,c1:real;

Label 1,2,3,4,5,6,7,8;

BEGIN

window(1,1,80,25);textbackground(0);clrscr;

writeln('*****************************************************');

writeln('* *');

writeln('* Данной программой решается *');

writeln('* система линейных алгебраических уравнений *');

writeln('* методом Гаусса с выбором главного элемент *');

writeln('* *');

writeln('****************************************************');

writeln;

writeln('Введите число уравнении n');

readln(n);

writeln('Введите по строчно коэффициентов при нейзвестных');

for i:=1 to n do

begin

for j:=1 to n do

begin

writeln('a[',i,j,']');

read(a[i,j]);

end;

end;

writeln('Введите по элементно свободные члены системы');

for i:=1 to n do

begin

writeln('b[',i,']’);

read(b[i]);

end;

{*********** Прямой ход решения задачи *******}

k:=1;

1: i:=k+1;

if a[k,k]<>0 then goto 3;

2: i1:=k+1;

if a[i1,k]=0 then goto 2; j1:=i1;

For j:=1 to n do

begin

c[k,j]:=a[k,j];

a[k,j]:=a[j1,j];

a[j1,j]:=c[k,j];

end;

3: c1:=a[i,k]/a[k,k];

a[i,k]:=0;

j:=k+1;

4: a[i,j]:=a[i,j]-c1*a[k,j];

if j<n then

begin

j:=j+1; goto 4;

end;

b[i]:=b[i]-c1*b[k];

if i<n then

begin

i:=i+1; goto 3;

end;

if k<n-1 then

begin

k:=k+1; goto 1;

end;

{*********** Обратный ход решения задачи ************}

x[n]:=b[n]/a[n,n];

i:=n-1;

5: j:=i+1; s:=0;

6: s:=s+a[i,j]*x[j];

if j<n then

begin

j:=j+1; goto 6;

end;

x[i]:=(b[i]-s)/a[i,i];

if i>1 then

begin

i:=i-1; goto 5;

end;

writeln(' Решения системы ');

for i:=1 to n do

writeln('x[',i,']=',x[i]:7:4);

readln

end.

1.1 Жартылай бөлу немесе дихотомия әдісі. Математикалық талдау курсында Вейерштрастың мынадай теоремасы дәлелденеді: егер кесіндіде анықталған үздіксіз функция шартты қанағаттандырса, онда осы кесіндінің ең кем дегенде бір с нүктесі табылып , ол нүктеде функцияның мәні нөлге тең болады, яғни: .

Сызықсыз

(1)

теңдеуді қарастырайық. f(x) функция үшін жоғарыдағы Вейерштрасс теоремасының шарттары орындалсын деп есептейік. Онда, сол теорема бойынша, (1) теңдеудің кесіндіде әйтеуір бір шешімі бар болады.

1 ескерту. Біз теңдеудің кесіндіде бір ғана шешімі бар деп есептейміз. Шешімдері көп болған жағдайда оларды жеке-жеке кесінділерге бөліп қарастыру қажет. Шешімдер жатқан кесінділерді аналитикалық немесе графиктік тәсілдермен бөлектеуге болады.

Жартылай бөлу немесе дихотомия әдісінің негізі мынада:

- кесіндіні тең екі бөлікке бөлеміз , егер болса, онда берілген теңдеудің шешімі болғаны;

- егер теңдеудің шешімі болмаса, онда немесе теңсіздіктердің қайсысы орындалатынын тексереміз, айталық бірінші теңсіздік орындалсын; бұл жағдайда жуық шешімді кесіндіден іздейміз;

- кесіндіге алғашқы екі процесті қайталай береміз; нәтижеде бірінің ішіне бірі орналасқан кесінділер тізбегін аламыз. Процесті (берілген дәлдік) шарт орындалғанға дейін қайталай береміз.

k және (k+1) -итерациялар арасындағы қателік

, k =1, 2, …

қатынаспен анықталады. Демек дихотомия әдісінің жинақталу жыл-дамдығын «сызықтық» немесе «бірінші дәрежелі» – деп айтуға болады. Берілген дәлдікке жету үшін

итерация жасау қажет. Бір итерация нәтижесінде дәлдік екі есе арта-ды. Бұл әдіс өте қарапайым және сенімді. Дөңгелектеу нәтижесінде қателіктер реті өспейді. Басқаша айтқанда – есептеу тұрғысынан әдіс өте орнықты, программалық орындалуы қарапайым.

1.2 Хорда немесе керме әдісі. Екі рет үздіксіз дифференциал-данатын функция үшін Вейерштрасс теоремасының барлық шарттары орындалсын. Бұл жағдайда теңдеудің жуық шешімін төменде келтірілген алгоритмдер бойынша анықтауға болады.

А) Егер ) аралықта шарты орындалса онда жуық шешімді

(2)

формуламен есептеуге болады; бұл арада x0 = a.

2 ескерту. Жуық xi+1 түбірді (2) формуламен есептегенде оны кіші жағына қарай дөңгелектеу қажет.

Б) Егер (a, b) аралықта шарт орындалса онда жуық шешімді

(3)

формуламен есептеуге болады; бұл арада х0 = b.

3 ескерту. Жуық xi+1 шешімді (3) формуламен есептегенде оны үлкен жағына қарай дөңгелектеу қажет.

Итерациялау процесі шарт орындалғанға дейін жүргізіле береді.

1.3 Ньютон немесе жанама әдісі. Екі рет үздіксіз дифферен-циалданатын функция үшін Вейерштрасс теоремасының барлық шарттары орындалсын. Бұл жағдайда теңдеудің жуық шешімін төменде келтірілген алгоритм бойынша анықтауға болады:

.

Бұл формулада шарт орындалса, онда, ал жағдайында деп алу қажет.

дәлдік көрсетілген жағдайда итерация төменгі шарттар орындалғанға дейін жүргізіле беруі тиіс:

.

Бұл арада

4 ескерту. Итерациялық Ньютон әдісін қолданғанда бас-тапқы жуық шешім ретінде шартты қанағаттандыра-тын кез келгенмәнді алуға болады. Жоғарыдағы шарт орындалмаған жағдайда итерациялық процестің жинақталуына кепілдік беруге болмайды. Әдетте жоғарыдағы шарттынемесе нүктелер үшін тексеріледі.

k және (k+1) -итерациялар арасындағы қателік

[x*, xk-1]

қатынас бойынша байланысқан, сондықтан Ньютон итерациялық процесінің жинақталу жылдамдығын «екінші дәрежелі» деп атайды.

5 ескерту. Жоғарыда айтылғандардың барлығы орындалуы үшін бастапқы жуық шешім дәлшешімге мейлінше жақын болуы тиіс. Сондықтан, бүл әдісті алдынан қандай да бір әдісті қолданып, алғашқы жуық шешімнің мәнін анықтап алған дұрыс болады.

1.4 Итерациялық немесе біртіндеп жуықтау әдісі . Егер {xk} = х0, х1, …, хктізбек қандайда бір рекурренттік қатынас арқылы анықталса, онда ол тізбекті итерациялық тізбек деп атайды.

Бізге

(4)

түрдегі теңдеу берілсін. Егер кесіндіде (4) теңдеудің бір ғана шешімі бар болса жәнеаралықтың әр нүктесінде туынды төмендегідей

(5)

шартты қанағаттандырса, онда осы теңдеу бойынша анықталған итерациялық тізбек міндетті түрде жинақталады.

Төмендегі

шарт орындалған жағдайда итерациялық процесті тоқтатуға болады.

(1) -теңдеуді әртүрлі әдіспен (4) -теңдеу түріне келтіруге болады. Көп жағдайда былайша алынады

.

Егер праметр «с» –ның таңбасын туындының таңбаласына қарсы етіп алсақ, онда жағдайында соңғы теңдеудің оң жағы (5) шартты қанағаттандыратын болады.

k және (k+1) -итерациялар арасындағы қателік

қатынас бойынша байланысқан, сондықтан итерациялық процестің жинақталу жылдамдығы «бірінші дәрежелі» болады.

1.5 Сызықсыз теңдеулер жүйесін жуықтап шешудің итерациялық әдісі. Сызықсыз теңдеулер жүйесі берілсін:

облыста осы жүйенің бірден- бір шешімі бар деп есептейік. Ол шешімді жуықтап анықтау үшін осы облыстан «кез келген»нүкте алып төменде-гідейқарапайым итерациялық тізбек жасаймыз:

Егер осы облыста

шарттар орындалса итерациялық процесс нақты шешімге жинақтала-тын болады.

Итерациялық тізбекті Гаусс-Зейдель әдісімен де құрастыруға болады. Егер қандай да бір әдіспен жуық (xi, yi) шешім белгілі болса, онда келесі шуық шешімді былайша анықтауға болады:

Итерациялық процесс

теңсіздіктер орындалғанға дейін жүргізіле береді.

6 ескерту. Бастапқы (х0, у0) нүкте дәл (х*, у*) шешімге мүм-кіндігінше жақын алынуы тиіс. Басқадай жағдайда итерациялық тізбек дәл шешімге жинақталмауы мүмкін.

1.6 Сызықсыз теңдеулер жүйесін жуықтап шешудің Ньютон әдісі Бұл әдіс бойынша жуық шешімдер тізбегі дәл шешімге анағұрлаым жылдамырақ жиналады.

Теңдеулер жүйесі берілсін

Әдістің негізі функцияларды Тейлор қатарына жіктеп, оның алғашқы үш мүшесін нөлге теңеу болып саналады. Бастапқы (х0, у0) берілген жағдайда функцияларды Тейлор қатарына жіктеп, жоғарыда айтылған әдісті қолдансақ, төмендегідей итерациялық жүйені аламыз:

.

Бұл арада

,

, .

жүйені Крамер әдісімен шешкенде пайда болатын анықтауыштар.