пәнді оқуға әдістемелік нұсқаулар · ФСО ПГУ 7.18.2/05...
TRANSCRIPT
Дәрістердің тірек коспектілеріФ
ФСО ПГУ 7.18.2/05
Қазақстан Республикасының Білім және ғылым министрлігі
С. Торайғыров атындағы Павлодар мемлекеттік университеті
Информатика және ақпараттық жүйелер кафедрасы
050703 –ақпараттық жүйелері мамандығының студенттері үшін
«Сандық әдістері» пәні бойынша
пәнді оқуға әдістемелік нұсқаулар
Павлодар
Дәрістердің тіреккоспектілерін бекіту парағы
ФФСО ПГУ 7.18.1/05
БЕКІТЕМІНФМж/еАТ факультетінің деканы___________ С.К.Тлеукенов 200 __ ж. «___»____________
Құрастырушы: Аға оқытушы Джарасова Г.С.
Информатика және ақпараттық жүйелер кафедрасы
050703 «Ақпараттық жүйелер» мамандығының студенттері үшін
«Сандық әдістер» пәні бойынша пәнді оқуға әдістемелік нұсқаулар
Кафедра мәжілісінде бекітілді, 200__ж. «___»____________ Хаттама №_____.
Кафедра меңгерушісі _________________________ Нұрбекова Ж.Қ.
Факультеттің әдістемелік кеңесінде құпталды,
200__ж. «___»____________ Хаттама №_____.
ӘК төрайымы _________________________ Кишубаева А.Т.
2
Пәнді оқытудағы мақсат – оқушыларға есептеу машинасының әдістерін игеру үшінқажетті білім мен дағдыларын қамтамасыз ету және оларды кейінгі маман ретіндеқолданбалы математика аймағындағы іс-әрекеттерінде пайдалануға оқыту.
Курс міндеттері – студенттерге жүйелі түрде қолданбалы есептерді жуықтау (сандық)әдістерімен шешу ұғымдарын қалыптастыру және студенттерді математикалық есептердішешудің есептеу алгоритмдерін құрастыруға және ЭЕМ көмегін қолдануға дайындау.
Жоғары кәсіптік білім берудің Мемлекеттік білім беру стандартының талаптарынасәйкес курсты оқу нәтижесінде студенттердің игеруі керек:
есептерді сандық шешудің негізгі ұғымдары; алгоритмдер және программалық құралдарды пайдалану принциптері; вариациалық есептеменің негізгі әдістері туралы түсінік алу.
Курсты оқу нәтижесінде студенттер білуі керек: ЕТ мүмкіндіктерін және программалық қамтамасыздандыруды пайдалануды; тәжірибелік экстремальды есептердің математикалық моделдерін құрастыруды; шешудің белгілі әдістерін пайдалануды және қорытынды жасауды.
«Есептеу әдістері» пәнін оқу үшін студенттер келесі пәндерді меңгерулері тиіс: Математикалық талдау; Алгебра және геометрия; Дифференциалдық теңдеулер.
3
Дәріс №1 КіріспеЖоспар1. Есептеу әдістері – таным үрдісіндегі есептеу математикасының қажетті бөлімі. 2. Есептеу математикасының пайда болуындағы сандық әдістердің рөлі.3. Есептеу математикасының әртүрлі халық шаруашылық аймағында практикалық
қолданылуының болашақтылығы. Әдебиеттер: [1], 6-13 б., [2]-[4], 13-16 б., [6], 8-13 б.
Дәріс №2 Алгебралық және трансценденттік теңдеулерді шешудің сандықәдістері
2.1 Теңдеулерді шешу есебінің қойылымыТеңдеуді шешу – оның түбірлері болатынын, егер бар болатын болса нешеу екенін
және оларды белгілі дәлдікпен мәндерін анықтау. 0xF
түріндегі сызықтық емес теңдеулердің түбірлерін табу есебі әртүрлі ғылыми зерттеулердекездеседі (мұндағы xF – анықталған және шектеулі немесе шектеусіз ba,
аралығында үздіксіз функция). Сызықтық емес теңдеулерді екі класқа бөлуге болады:алгебралық және трансценденттік. Алгебралық теңдеулер деп тек алгебралық функциялардығана (бүтін, рационал, иррационал) қамтитын теңдеулерді айтады. Дербес жағдайда,көпмүше бүтін алгебралық теңдеу болып табылады. Басқадай функцияларды(тригонометриялық, көрсеткіштік, логарифмдік, және т.б.) қамтитын теңдеулердітрансценденттік деп атайды.
Әрбір ba, сандар xF функциясын нөлге айналдыратын болса,яғни 0xF , берілген теңдеудің түбірі деп аталады. саны k еселі түбірдеп аталады, егер x болғанда xF функциясымен бірге оның 1k -шіретті туындылары да нөлге тең болса:
01 kFFF
Сызықтық емес теңдеулерді шешудің әдістері тура және итерациялық болып бөлінеді.Тура әдістер түбірлерді шекті қатынас (формула) түрінде жазуға мүмкіндік береді. Мектепкурсынан тригонометриялық, логарифмдік, көрсеткіштік, сонымен қатар қарапайымалгебралық теңдеулерді шешу үшін әдістер белгілі. Бірақ та тәжірибеде теңдеулердің мұндайәдістермен шешілмейтіндері де кездеседі. Оларды шешу үшін итерациялық әдістерпайдаланады, яғни тізбектелген жуықтау әдістері (сандық әдістер).
Теңдеудің түбірлерін сандық әдіспен табу есебі екі кезеңнен тұрады: түбірлерді айыру,яғни түбірдің бір ғана мәнін қамтитын жеткілікті аз (сығылған) аймақтарды табу жәнетүбірлерді анықтау, яғни қандайда бір аймақтағы түбірді белгілі дәлдікпен есептеу.
2.2 Алгебралық және трансценденттік теңдеулердің түбірлерін айыруАйталық бізге
0xF
түріндегі теңдеу берілсін. Мұндағы xF – алгебралық немесе трансценденттік функция.Егер біз xF функциясының графигін пайдалансақ, онда теңдеудіңтүбірлері жуықтап алғанда, абсцисса осімен қиылысу нүктелері болмақ.Есепті ықшамдау арқылы, берілген теңдеуді оған мәндес
xfxf 21
теңдеуімен алмастыруға болады. Мұндай жағдайда xf1 және xf 2
функцияларының графиктері салынып, Ох осіндегі осы графиктердіңқиылысу нүктелерін көрсететін кесінділері белгіленеді.
Мысал 1. 0ln2sin xx теңдеуінің түбірлерін айыру керек.
4
Түбірлерін графикалық түрде айыру үшін, оны оған мәндесxx ln2sin түрге келтіреміз. xy 2sin1 және xy ln2 функцияларының
графиктерін жеке-жеке саламыз.Графикке қарап, оның бір түбірі болатынын көреміз және ол 5,1;1
кесіндісінде жатады.
Түбірлерді айыру туралы есептерді шешу барысында келесі жайттардың пайдасы бар:1. Егер ba; кесіндісінде үздіксіз xF функциясы, оның шеткі
нүктелерінде әртүрлі таңбалы мәндер қабылдаса (яғни 0 bFaF ) , ондаберілген теңдеудің осы кесіндіде кем дегенде бір түбірі бар болады.
2. Егер xF функциясы монотонды (кемімелі немесе өспелі) болса, ba; кесіндісіндегі түбір жалғыз ғана болады.
Тексеру үшін xxxF ln2sin функциясының 5,1;1 кесіндісінің шеткінүктелеріндегі мәндерін есептейік: 909298,01 F ; 264344,05,1 F .Байқауымызша, 5,1;1 кесіндісінде түбірдің болатынын аламыз.
Қарапайым жағдайда, түбірлерді графикалық айыруды қолмен еептеуге болады, кейдекүрделі жағдайларда теңдеудің түбірі берілген кесіндіде болуын (санын) анықтаудакомпьютердің қолданбалы бағдарламасын пайдалануға немесе программалау тіліндепрограмма құрастыруға болады.
Айталық 0xF теңдеуінің барлық түбірлері CA; кесіндісіне тиістіболсын, яғни 0 CFAF . Бізге теңдеудің түбірлерін айыру керек, яғнибір түбірден жататын барлық CAba ;; кесінділерді көрсету керек.
xF -тің мәнін Ax нүктесінен бастап оң жаққа қарай қандайда бірh қадаммен қозғала отырып есептейміз.
xF -тің көршілес екі әртүрлі таңбалы мәндері пайда болған кезде, алынған кесіндігетүбір тиісті болатынын аламыз.
5
Теңдеудің шешімін программалау тілі көмегімен қарастырайық.Осыған сәйкес келетін алгоритмнің жалпы схемасын көрсетейік.Қойылған есептің нәтижесі экранда көрсетілген 1x және 2x
параметрлерінің мәндері (белгіленген кесіндінің шеткі нүктелері) болады.
Мысал 2. xx 1,0cos теңдеуінің 10;10 кесіндідегі түбірлерін 0,1қадаммен бөліктерге бөліңдер.
Бұл есепті Excel көмегімен шешуге болады. Компьютер экранындаxxy 1,0cos функциясының графигінен басқа мәндері анықталған кесте
және одан 0,1 қадаммен жеті бөлінген кесінділердің нәтижесін алуғаболады: 6,97,9 1 x ; 9,80,9 2 x ; 2,43,4 3 x ; 7,18,1 4 x ;
5,14,1 5 x ; 3,52,5 6 x ; 1,77 7 x .
6
Түбірлерді айыру алгоритмінің схемасы бойынша программаны оңайқұрастыруға болады. Төменде Turbo Pascal тілінде құрылған программаныұсынамыз: Program Separat_root;uses crt;var a,b,x1,x2,y1,y2,h:real; n,k:integer;function f(x:real):real; {уравнение вида F(x)=0}begin f:=cos(x)-0.1*x;end;
begin clrscr; writeln (' Введите a,b,h '); read (a,b,h); k:=0; x1:=a; x2:=x1+h; y1:=f (x1); while x2<b do begin y2:=f (x2); if y1*y2<0 then begin inc(k);
writeln (k, '-й корень [ ', x1:4:1, , ' ; ' , x2:4:1, , ' ] ' )
end; x1:=x2; x2:=x1+h; y1:=y2; end; repeat until keypressedend.
Программаның орындалу нәтижесі:
Ескерту. Теңдеудің түбірлерін айыру алгоритмінің сенімділігі xF
функциясының сипатына және таңдалған h қадамның шамасынатәуелді. xF функциясының hxx ; кесіндісінде бір емес бірнешетүбірлері болуы мүмкін. Сондықтан түбірлерді айыру барысында hқадамның шамасын өте аз етіп алған дұрыс.
7
Тапсырма 1. Берілген теңдеудің түбірлерін графикалық әдісті пайдаланып айырыңдаржәне осы тапсырманы программалау тілінің көмегімен орындаңдар:
8
2.3 Жартылай бөлу әдісімен теңдеудің түбірін анықтауСызықтық емес теңдеулердің түбірлерін табудың қарапайым әдістердің бірі болып
табылады. 0xF
теңдеуін шешу барысында, ереже бойынша түбірі жуық мәнінің алдын ала мүмкін қателігі беріледі. Түбірлерді анықтау үрдісінде олардың қателігінен үлкен емес жуық мәндерін табуды талап етеді.
Айталық теңдеудің ba, кесіндісінде бір түбірі бар болсын, яғни
xF функциясы осы кесіндіде үздіксіз. ba, кесіндісін 2
baс
нүктесімен
жартылай бөлеміз. xF функциясының ca, және bс, кесінділерініңшеткі нүктелеріндегі мәндерін зерттейміз, яғни bca ,, нүктелерінде.Егер 0cF болса, онда екі жағдай болуы мүмкін: xF функциясы ca,
кесіндісінде немесе bс, кесіндісінде таңбасын ауыстырады (2.6-сурет).
Функцияның таңбасы ауыспайтын кесіндіні алып тастап, таңбасы ауысатын кесіндінітаңдап алып (өйткені, ол аралықта ізделінді түбір жатыр), оны жаңа кесінді ретіндеқарастырамыз. Жартылай бөлу үрдісін жалғастыра отырып, теңдеудің түбірі тиісті болатынең кіші кесіндіге келеміз.
Айталық анықтық үшін 0,0 bFaF болсын.
Бастапқы жуық түбір ретінде 20
baс
аламыз. Қарастырылған жағдайда 00 сF , онда bсс 0 және bс ,0
кесіндісін ғана қарастырамыз. Келесі
жуықтау: 2
01
bcс
. Мұнда bс ,1
кесіндісін алып тастаймыз, өйткені 01 сF және 0bF , яғни 10 cсс .
Осыған ұқсас басқа жуықтауларды
табамыз: 2
102
ccс
және т.б.
Жуықтау үрдісін xF функциясының модульімен алынған мәніберілген ең аз санынан аз болғанша жалғастырамыз, яғни nсF .
Төмендегі суретте теңдеудің түбірін кесіндіні жартылай бөлуәдісімен табудағы итерациялық үрдістің блок-схемасын ұсынамыз. Мұндакесіндіні сығу a және b шектерін ағымдық c түбіріне ауыстыруменжүргізіледі.
9
Сонымен қатар алынған кесіндінің ұзындығын бағалауға болады:егер ол мүмкін қателігінен кіші болса, есептеу тоқтатылады, яғни
ab . Төмендегі суретте теңдеудің түбірін кесіндіні жартылай бөлу
әдісімен табудағы итерациялық үрдістің блок-схемасын ұсынамыз. Мұндакесіндіні сығу a және b шектерін ағымдық c түбіріне ауыстыруменжүргізіледі.
10
Мысал 3. 0ln2sin xx теңдеуінің 5,1;3,1 кесіндісінде бір түбірі бар.Осы теңдеуді 4101 дәлдігіне дейін жартылай бөлу әдісіменкомпьютердің программасы көмегімен шешейік.
Алгоритмнің блок-схемасына сәйкес Turbo Pascal тілінде программамынадай болады:
Программаның орындалу нәтижесі:
Тапсырма 2. Жартылай бөлу әдісімен берілген теңдеудің бір түбірін 10-3 дәлдікпенесепте:
а) Есептеме кестенің көмегімен;б) Прграммалау тілінің көмегімен.Есептің берілгендерін 1-тапсырмадан алыңыз.
11
2.4 Ньютон әдістеріЖартылай бөлу әдісімен қатар күрделі және тиімді итерациялық әдістер бар. Бұл
әдістерге Ньютон есімімен байланысқан әдістердің тобы қатысады. Олардың екеуінқарастырайық: жанама әдісі және хорда (қиюшы) әдісі. Бл әдістердің екеуі де мынадайтәсілге негізделген.
0xF
теңдеуінің ba ; кесіндісінде жалғыз түбірі бар болсын. Оны оған мәндес теңдеугетүрлендіреміз:
xFxxx
мұндағы, x - ba ; кесіндісінде анықталған және осы кесіндіде нөлге айналмайтын кезкелген функция.
x - ті әртүрлі тәсілмен таңдай отырып, көрсетілген әдістердіалуға болады.
Жанама әдісіа) Бірінші тәсіл
Айталық xF
x
1
. Сонымен итерациялық тізбек
,2,1,01
nxF
xFxx nn
реккуренттік қатынасының көмегімен құрылады. Бастапқы 0х мәнін таңдау мәселесі, xF
функциясының мынадай шарттарды қанағаттандыруымен шешіледі:1) ba ; кесіндісінде екінші рет дифференциалданады;2) Бірінші және екінші ретті туындылары осы кесіндіде таңбасын сақтайды, яғни
xF функция монотонды және дөңестік сипатын ауыстырмайды.Мұндай жағдайда 0х мәні ретінде ba ; кесіндісінің шеткі нүктелерінің бірі
алынады және ол нүктеде xF функциясы және оның екінші ретті туындысыбірдей таңбалы болуы керек, яғни 000 xFxF шарты орындалады.
Реккуренттік қатынаспен ( 0n ) болғандаанықталған 1x нүктесі, xFу функциясыныңграфигіне 0x нүктесінде жүргізілгенжанамамен абсциссаның қиылысу нүктесіболады.
Итерациялық тізбектің әрбір келесімүшесіне xFу функциясының графигінетізбектің алдыңғы мүшесі арқылы жүргізілгенжанаманың абсциссамен қиылысу нүктесісәйкес келетін болады.
Қателікті бағалау мынадай теңсіздіктің көмегіменжүзеге асырылады:
xFmm
xFx
ban
;min,
nxF мәндері реккуренттік тізбектің мүшелерін табуда есептелетінболады.
Мысал 4. 0ln2sin xx теңдеуінің 5,1;3,1 кесіндісіндегі түбірін4101 -ке дейінгі дәлдікпен жанама әдісі арқылы анықта.Берілген жағдайда реккуренттік қатынас мынадай түрде болады:
,2,1,0/12cos2
ln2sin1
n
xx
xxxx
nn
nnnn
12
0x нүктесін анықтау үшін 5,1;3,1 кесіндісінің шеткі нүктелеріндегі
xxxF ln2sin және 2
12cos4
xxxF таңбаларын табамыз:
025,03,1 F , 002,43,1 F
026,05,1 F , 004,45,1 F
Сонымен, 3,10 x .Итерациялық үрдісті тоқтатуды тексеру үшін (белгілі дәлдік
бойынша)
xxxFm
ba
12cos2minmin
5,1;3,1;
мәндерін анықтаймыз. Кесіндінің шеткі нүктелері үшін 65,25,1,48,23,1 FF .Кесінді өте аз болғандықтан, 4,2m деп алуға болады.
Итерациялық тізбектің бірнеше мүшелерін есептейік:
0401948,13,1/13,12cos2
3,1ln3,12sin3,11
nx
Түбірдің жету дәлдігіне тексеру жасайық:
003,04,2
4019448,1ln401948,12sin1
m
xF - талап етілген дәлдік жеткілікті
емес.
1399430,1401948,1/1401948,12cos2
401948,1ln401948,12sin401948,12
nx
Тағы тексеру жасаймыз: 62 101
4,2
399430,1ln399430,12sin
m
xF - талап етілген дәлдік жеткілікті.
Итерациялық тізбек мүшелерін тізбектеліп есептелуін кесте түріндекөрсетейік:
nnx
nn
nnnn xx
xxxx
/12cos2
ln2sin1
nx
0 1,3 1,401948 0,0031 1,401948 1,399430 0,000001
Сонымен, 399430,1 нәтижесінде барлық сандар дұрыс болады.б) Екінші тәсіл
xFу қисығына kcx нүктесінде жанама жүргізіліп, жанаманыңабсцисса осімен қиылысу нүктесі анықталады. Мұндай жағдайда 0cx
бастапқы жуықтау түбірін табу керек.
13
xFу қисығына )(; 000 cFcM нүктесінде жүргізілген жанаманыңтеңдеуі
000 )( cxcFcFу .Осыдан жанаманың Ох осімен ( 0у ) қиылысу нүктесі ретіндегі 1cx жуық
түбірін табамыз:
)( 0
001 cF
cFcс
Осыған ұқсас )(; 111 cFcM , )(; 222 cFcM және т.б. нүктелеріндежүргізілген жанамалардың абсцисса осімен қиылысу нүктелері ретіндегіжуықтаулар табылады. 1n - ші ретті жуықтау үшін формула:
)(1
n
nnn cF
cFcс
Мұндай жағдайда, 0 ncF болуы керек. Итерациялық үрдісті тоқтату үшін ncF шартын немесе тізбектің екі жуықтауының жақындалу
nn cс 1 шартын пайдалануға болады.
Хорда (қиюшы) әдісі Жанама әдісін жүзеге асыру барысында, xF функиясының мәнін ғана емес
оның xF туындысының мәнінде есептеу қажетті. Бірақ Ньютон әдісініңтек xF мәнін есептеумен шектелетін нұсқасы бар.
а) Бірінші тәсіл
Егер )(cFxF
cxx
деп алып, с мәні ретінде ba ; кесіндісінің шеткі
нүктелерінің бірі алынады және ол нүктеде 0 сFсF шарты орындалады.Осыдан итерациялық әдіс
,2,1,01
n
cFxF
cFxxсFx
n
nnn
реккуренттік қатынаспен анықталатын хорда әдісіне (қиюшы әдісіне) келеміз.0х мәні ретінде ba ; кесіндісінен с мәні таңдағаннан қалған екінші
шеткі нүктесі алынады (яғни, егер ac болса, онда bx 0 немесекерісінше).
Тізбек реккуренттік қатынастың формуласы бойынша құрылады. Жуықтау түбірініңбағалауы
xFmm
xFx
ban
;min,
теңсіздігінің көмегімен анықталады. Әдістің геометриялық мағынасы төмендегі суретте
көрсетілген. Берілген жағдайда axbc 0, . 1х мәнінеқисықтың шеттерін қосатын хорданың абсциссаосімен қиылысу нүктесіне сәйкес келеді. Кейінқисықтың бойынан абсцисасы 1х болатын нүктетабылып, хорда жүргізіледі және т.б.
Мысал 5. 0ln2sin xx теңдеуінің 5,1;3,1
кесіндісіндегі түбірін 4101 -ке дейінгі дәлдікпен хорда әдісі арқылыанықта.
14
с нүктесін анықтау үшін 5,1;3,1 кесіндісінің шеткі нүктелеріндегі
xxxF ln2sin және 2
12cos4
xxxF таңбаларын табамыз:
025,03,1 F , 002,43,1 F
026,05,1 F , 004,45,1 F
Сонымен, 3,1с . Осыдан 5,10 x .
1х мәнін табамыз:
0401948,13,1/13,12cos2
3,1ln3,12sin3,11
nx
397834,13,1ln3,12sin5,1ln5,12sin
3,1ln3,12sin5,15,1ln5,12sin3,1
0
001
cFxF
cFxxсFx
Берілген дәлдіктің жеткіліктілігін тексерейік:
002,04,2
397834,1ln397834,12sin1
m
xF - талап етілген дәлдік жеткілікті
емес.Келесі жуықтауды табамыз:
399410,1
3,1ln3,12sin397834,1ln397834,12sin
3,1ln3,12sin397834,1397834,1ln397834,12sin3,11
112
cFxF
cFxxсFx
52 1024,2
399430,1ln399430,12sin
m
xF - талап етілген дәлдік жеткілікті.
Итерациялық тізбек мүшелерін тізбектеліп есептелуін кесте түріндекөрсетейік:
n nx cFxF
cFxxсFx
n
nnn
1 nx
0 1,3 1,397834 0,0021 1,397834 1,399410 0,00002
Сонымен, 3994,1 .
б) Екінші тәсілАйталық xFу функциясы таңбасын ауыстыратын ba ; кесіндісін
бар болсын. Анықтық үшін 0,0 bFaF депалайық. Берілген әдісте итерация үрдісібойынша, теңдеудің түбірлеріне жуықтауретінде хорданың абсцисса осіменқиылысқан нүктелердің ,, 10 cc мәндеріалынады.
Алдымен АВ хордасының теңдеуінтабамыз:
ab
ax
aFbF
aFy
Оның абсцисса осімен қиылысу нүктелеріүшін ( 0,0 уcx )
15
)()()(0 aF
aFbF
abaс
теңдеуін аламыз.Қарастырылған жағдай үшін aF және 0сF шамаларының
таңбаларын салыстыра отырып, түбірдің 0; сa аралығында болатынын
аламыз, өйткені 00 сFaF . bс ;0 кесіндісін қарастырмаймыз. Келесі итерация
АВ1 хордасымен абсцисса осінің қиылысу нүктесі болатын жаңа 1c
жуықтауын анықтаудан тұрады және т.с.с. Итерациялық үрдіс ncF
шарты орындалғанша жалғастырылады.Хорда әдісінің блок-схемасы
Тапсырма 3. Берілген теңдеудің бір түбірін 10-6 дәлдікпен Ньютон әдістерінің бірінпайдаланып, программалау тілінің көмегімен есепте. Есептің берілгендерін 1-тапсырмаданалыңыз.
16
Дәріс №3 Сызықтық теңдеулер жүйесін шешудің сандық әдістері3.1 Сызықтық жүйелерКөптеген қолданбалы және таза математикалық есептер жиыны сызықтық алгебралық
жүйелерді шешудің қажеттілігіне әкеледі. Сызықтық теңдеулер жүйесін шешу есептеуматематикасының қажетті есептерінің бірі болып табылады.
Алгебра курсынан белгілі, жүйедегі белгісіздер саны теңдеулер санынан артық немесетең болуы мүмкін. Біз тек белгісіздер саны теңдеулер санына тең болатын жүйеніқарастырамыз. n белгісізі бар n сызықтық алгебралық теңдеулердің жүйесін жазайық:
nnnnnn
nn
nn
bxaxaxa
bxaxaxa
bxaxaxa
2211
22222121
11212111
(1)
Жүйенің коэффициенттерінен құралған матрицаны жүйенің негізгі матрицасы ( n ретті квадраттық матрица) деп атайды:
nnnn
n
n
aaa
aaa
aaa
A
21
22221
11211
(2)
ал жүйенің коэффициенттері мен бос мүшелерінен құрылған матрицаны жүйенің кеңейтілгенматрицасы деп атайды:
nnnnn
n
n
b
b
b
aaa
aaa
aaa
A
2
1
21
22221
11211
(3)
A матрицасы ұғымын пайдаланып, (1) теңдеулер жүйесін матрицалық түрде жазуғаболады:
BXA (4)мұндағы, X және B - белгісіздердің және бос мүшелердің векторлық-бағандары:
nx
x
x
X
2
1
,
nb
b
b
B
2
1
Теңдеулер жүйесінен әртүрлі матрицалар алынады, мысалы:
421
231
112
A ;
200
110
321
B ;
1000
0100
0010
0001
E ;
0000
0000
0000
0000
O
Мұнда, А – симметриялық матрица (оның элементтері бас диагоналға қатыстысимметриялы орналасқан ( jiij aa )).
B - жоғары үшбұрышты матрица (бас диагоналдан төмен орналасқан элементтернөлге тең);
Е – бірлік матрица; О – нөлдік матрица.
17
3.2 Сызықтық жүйелерді шешу әдістері туралыСызықтық теңдеулер жүйесін шешу әдістері екі топқа бөлінеді: тура және
итерациялық.Тура әдістер белгісіздерді есептеу үшін шектеулі қатынастар (формулалар)
пайдаланады. Олар алдын ала белгілі амалдарды орындаудан кейін шешімді береді. Бұләдістер қарапайым және әмбебап болып табылады. Сызықтық теңдеулер жүйесін шешудіңтура әдістерін кейде дәл әдістер деп атайды, өйткені шешім жүйенің коэффициенттеріарқылы дәл формулалар түрінде өрнектеледі. Бұл әдістерге:
анықтауыштар әдісі (Крамер әдісі); матрицалық шешім: BAX 1 (егер кері матрица белгілі болса); белгісіздерді біртіндеп жою әдісі (Гаусс әдісі).Итерациялық әдістер – біртіндеп жуықтау әдістері. Мұнда жуықталған шешімін
беру керек – бастапқы жуықтау. Бұдан кейін алгоритм көмегімен есептеудің бір цикліжүргізіледі (итерация деп аталады). Итерация нәтижесінде жаңа жуықтау алынады. Итерацияталап етілетін дәлдікпен шешім алынғанға дейін жүргізіледі. Итерациялық әдістердіпайдаланып сызықтық теңдеулерді шешудің алгоритмдері тура әдістермен салыстырғандаөте күрделі.
3.3 Гаусс әдісіГаусс әдісі (3) кеңейтілген матрицаны үшбұрышты түрге келтіруге негізделген. Бұл
жүйенің теңдеулерінен белгісіздерді біртіндеп жоюмен жүзеге асырылады. Гаусс әдісініңмәні – (1) жүйені оған мәндес үшбұрышты матрицалы жүйеге түрлендіру болып табылады,кейін біртіндеп (кері жүріс) барлық белгісіздердің мәндері алынады.
(1) жүйені келесідегідей түрлендірейік. 011 a (жүргізуші элемент) деп алып, біріншітеңдеудің коэффициенттерін 11a -ге бөлеміз:
112121 nnxxx (5)(5) теңдеуді пайдаланып, жүйенің басқа қалған теңдеулерінен 1x белгісізін оңай
жоюға болады (ол үшін алдын ала 1x -дің сәйкесінше коэффициентін (5) теңдеуге көбейтіп,әр теңдеуден азайтсақ жеткілікті).
Бірінші теңдеуді сол қалпында қалдырып, қалған теңдеулерге осындай түрлендірулержасаймыз: теңдеулерден жүргізуші элементімен теңдеуді таңдап, оның көмегімен қалғантеңдеулерден 2x белгісізін жоямыз. Осы үрдісті қайталай отырып, берілген жүйеге мәндесүшбұрышты матрицалы жүйені аламыз:
nn
nn
nn
x
xxx
xxxx
223232
113132121
(6)
(6) жүйеден біртіндеп 11 ,,, xxx nn белгісіздерінің мәндері табылады.Сонымен (1) жүйені Гаусс әдісімен шешу үрдісі екі кезеңге бөлінеді. Бірінші кезең,
белгісіздерді біртіндеп жою – тура жүріс деп аталады. Есептеудің екінші кезеңі –белгісіздердің мәндерін табу – кері жүріс деп аталады.
Мысал 1. Сызықтық теңдеулер жүйесін шеш:
18
56,5537,899,792,3
44,627,022,504,8
41,1461,1121,434,2
321
321
321
xxx
xxx
xxx
Жүйенің шешімін кесте түрінде көрсетейік:
Бөлім 1x 2x 3x Бос мүшелер
А
2,34
8,04
3,92
-4,21
5,22
-7,99
-11,61
0,27
8,37
14,41
6,44
55,56
/ 2,34
1 -1,799 -4,962 6,158
А1
19,685
-0,938
40,161
27,819
-55,951
31,420
/ 19,685
1 2,040 -2,842
А229,732 28,756 / 29,732
1 0,967
В
1
1
1 0,967
-4,816
2,293
Кестенің А бөліміне берілген жүйенің коэффициенттері және бос мүшелеріенгізіледі. А бөліміндегі бірінші жолдың элементтерін жүргізуші элемент 2,34 –ке бөліптөртінші жолға жазамыз. Осы төртінші жолды пайдаланып, осы бөлімнің екінші және үшіншіжолды түрлендіруге көшеміз (жүйенің 2-ші және 3-ші теңдеуінен 1x белгісізін жоямыз).Осы түрлендірудің нәтижелері А1 бөлімнің сәйкесінше бірінші және екінші жолдарын береді.
Мысалы, А1 бөлімнің бірінші жолын алу үшін, А бөліміндегі төртінші жолға (-8,04)-тікөбейтіп екінші жолға қосамыз, ал А1 бөлімнің екінші жолын алу үшін, А бөліміндегітөртінші жолға (-3,92)-ні көбейтіп үшінші жолға қосамыз.
А1 бөлімдегі үшінші жолдың элементтері бірінші жолды жүргізуші элемент 19,685-кебөлуден шығады, содан кейін А2 бөлімнің жолдары толтырылады.
А2 бөлімімен тура жүріс аяқталады. Бос мүшелер бағанында 967,03 x мәні алынады.Басқа белгісіздерінің мәндерін біртіндеп кері жүріспен табамыз:
816,48157,4967,0040,2842,22 x .Белгісіздерді табу үрдісі кестенің В бөлімінде берілген.
Мысал 2. СТЖ кестелік процессор Excel көмегімен шеш:
139373
353
1542
522
4321
421
4321
421
xxxx
xxx
xxxx
xxx
19
20
4.Тапсырма , 0,001 .Гаусс әдісін пайдаланып дәлдігімен жүйені шеш
: Программа құрастыр
3333232131
2323222121
1313212111
bxaxaxa
bxaxaxa
bxaxaxa
21
22
3.4 Анықтауыштарды және кері матрицаны есептеу
nnnnnn
nn
nn
bxaxaxa
bxaxaxa
bxaxaxa
2211
22222121
11212111
жүйенің анықтауышын D арқылы белгілейік:
nnnn
n
n
aaa
aaa
aaa
D
21
22221
11211
Теңдеулер жүйесін шешудің Гаусс әдісімен анықтауышты есептеу алгоритмінқарастырайық.
Бірінші теңдеудің сол және оң жақ бөліктерін 11a жүргізуші элементіне бөлсек,түрлендірілген жүйенің анықтауышы 11/ aD -ге тең. Бірінші қадамның келесі түрлендірулері(жүйенің басқа теңдеулерінен 1x белгісізін жою) анықтауыштың шамасын өзгертпейді.Екінші қадамда, екінші теңдеудің (түрлендірілген) екі бөлігін екінші жүргізуші элементке
(оны )1(22a арқылы белгілейік) бөлсек, алынған жүйенің анықтауышы )1(
2211/ aaD -ге тең.
Жүйенің теңдеуінен 2x белгісізін жоюдағы амалдар D анықтауышы шамасын өзгертпейді.Амалдарды жалғастыра отырып, n -ші қадамда
nn
nn
nn
x
xxx
xxxx
223232
113132121
жүйесіне келеміз. Осы жүйенің анықтауышы )1()1(2211/
n
nnaaaD -ге тең. Жүйе
белгісіздері коэффициенттерінің матрицасы – бас диагоналы бірге тең болатын үшбұрыштыматрица. Сондықтан оның анықтауышы 1-ге тең:
1)1()1(2211
nnnaaaD .
Сонымен, бастапқы матрицаның анықтауышы:
)1()1(2211
21
22221
11211
nnn
nnnn
n
n
aaa
aaa
aaa
aaa
D
,
мұндағы )1()1(2211 ,,, n
nnaaa - жүргізуші элементтер.
Бұдан мынадай қорытынды жасауға болады: егер квадратты матрицаныңанықтауышын есептеу қажет болса, онда осы матрицадан теңдеулер жүйесін шешу керек.
A матрицасы үшін 1A кері матрицасының элементтерін есептеуге болады.Анықтама бойынша, EAA 1 , мұндағы E - бірлік матрица. Ізделінді 1A керіматрицасы мен бірлік матрицаны векторлық-бағандар жиынтығы түрінде көрсетейік:
)()2()1()()2()1(1 ,,,,,,, nn eeeExxxA
Осы жазу арқылы niexA ii ,,2,1)()(
23
Әр жүйені шешімі кері матрицаның сәйкесінше бағанын береді.
Мысал.
37,899,792,3
27,022,504,8
61,1121,434,2
A матрицасы үшін кері матрицаны табу керек.
Есептеу кестеде көрсетілген.
Табылған элементтердің мәндерін жаза отырып (жолдарды кері ретті орналастыру),ізделінді кері матрицаны аламыз:
0336,00016,00619,0
0686,00475,00483,0
0433,00934,00357,01A
Тура тексеруді жасайық:
0003,10005,00002,0
0033,09994,00000,0
0270,00088,00041,11AA
24
Сызықтық теңдеулер жүйесін Гауус әдісімен шешу алгоритмі төмендегі суреттекөрсетілген. 11,1, njnijia массиві жүйенің кеңейтілген матрицаныңкоэффициенттерін қамтиды. Программа жүйенің анықтауышын есептеуді қамтиды(айнымалы det ).
25
26
Мысал.
139373
353
1542
522
4321
421
4321
421
xxxx
xxx
xxxx
xxx
Программаның нәтижесі:
27
Гаусс әдісімен теңдеулер жүйесін шешу (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,cl:real; Label 1,2,3,4,5,6,7,8; BEGIN writeln('Bbedite schislo uravnenii n'); readln(n); writeln('Bbedite po stroscno koeffisentob pri neizbesnih'); 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('Bbedite po elementof sbabodni scleni sistem'); for i:=1 to n do begin writeln('[',i,']'); read(b[i]); end; {********** primoi hot pescenie zadasc******} k:=1; 1: i:=k+1;
28
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: cl:=a[i,k]/a[k,k]; a[i,k]:=0; j:=k+1; 4: a[i,j]:=a[i,j]-cl*a[k,j]; if j<n then begin j:=j+1; goto 4; end; b[i]:= b[i]-cl* 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; {********** Obratni hot rescenia***********} 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(' rescenia sistem '); for i:=1 to n do writeln('x[',i,']=',x[i]:7:4); readln; readln; end.
29
Тапсырма 5. Гаусс әдісін пайдаланып, 0,001 дәлдігімен жүйені шеш. Программа
құрастыр:
3333232131
2323222121
1313212111
bxaxaxa
bxaxaxa
bxaxaxa
. Есептің берілгендерін 4-тапсырмадан алыңыз
3.5 Гаусс – Зейдель әдісіЕң қарапайым итерациялық әдістердің бірі – Гаусс-Зейдель әдісі болып табылады.
Осы әдісті пайдаланып жүйені шешуге мысал келтірейік.
3333232131
2323222121
1313212111
bxaxaxa
bxaxaxa
bxaxaxa
(3.5.1)
Айталық жүйенің диагоналдық 332211 ,, aaa элементтері нөлден өзгеше болсын (егерболмаса, теңдеулердің орындарын алмастырамыз). Жүйенің бірінші, екінші және үшіншітеңдеулерінен сәйкесінше 321 ,, xxx белгісіздерін өрнектейміз:
,13132121
111 xaxab
ax (3.5.2)
,132312112
222 xaxab
ax (3.5.3)
.123213113
333 xaxab
ax (3.5.4)
Белгісіздерге бастапқы (нөлдік) жуықтаулар берейік: 033
022
011 ,, xxxxxx . Осы
мәндерді (3.5.2) өрнегінің оң жақ бөлігіне қоя отырып, 1x үшін жаңа (бірінші) жуықтаудыаламыз:
,1 0313
02121
11
11 xaxab
ax
Осы мәнді 1x үшін және 03x жуықтауын 3x үшін пайдаланып, (3.5.3) өрнегінен 2x
үшін бірінші жуықтауды табамыз: ,1 0
3231
121222
12 xaxab
ax
Соңында, есептелген 122
111 , xxxx мәндерін пайдаланып, (3.5.4) өрнегінің
көмегімен 3x үшін бірінші жуықтауын табамыз: 1
2321
131333
13
1xaxab
ax .
Осымен (3.5.2) – (3.5.4) жүйелерді шешудің бірінші итерациясы аяқталады. Енді 1
31
21
1 ,, xxx мәндерін пайдаланып, осындай тәсілмен екінші итерацияны жүргіземіз,
нәтижесінде екінші жуықтау табылады: 233
222
211 ,, xxxxxx және тағы басқалары. k
номерлі жуықтауды мынадай түрде көрсетуге болады: ,1 1
3131
212111
1 kkk xaxab
ax
,1 13231212
222
kkk xaxaba
x
30
kkk xaxaba
x 232131333
3
1 .
Итерациялық үрдіс kkk xxx 321 ,, мәндері берілген дәлдікпен 13
12
11 ,, kkk xxx
мәндеріне жақындағанша жалғастырылады.
Мысал. Жүйені Гаусс-Зейдель әдісі көмегімен шеш:
032
762
44
321
321
321
xxx
xxx
xxx
.
Жүйенің шешімі 1321 xxx болатынын оңай тексеруге болады.Шешімі. 321 ,, xxx белгісіздерін сәйкесінше бірінші, екінші және үшінші
теңдеулерден өрнектейміз:
).2(3
1
),27(6
1
),44
1
213
312
321
xxx
xxx
xxx
Бастапқы жуықтаулар ретінде 0,0,0 )0(3
)0(2
)0(1 xxx деп алып, белгісіздердің жаңа
жуықтауларды табамыз.
.9
8)
6
521(
3
1
,6
5)0127(
6
1
,1)004(4
1
)1(3
)1(2
)1(1
x
x
x
Осы сияқты келесі жуықтауды есептейміз:
.72
71)
72
712
72
71(
3
1
,72
71)
9
8
72
7127(
6
1
,72
71)
9
8
6
54(
4
1
)2(3
)2(2
)2(1
x
x
x
Итерациялық үрдісті тізбектелген екі белгісіздер арасында ең аз айырымды алғанғадейін жалғастыруға болады.
Енді n белгісізі бар n сызықтық теңдеулер жүйесін қарастырайық. Оны мынадайтүрде жазамыз:
nibxaxaxaxaxa ininiiiiiiiiii ...,,2,1,...... 11,11,11
Мұнда барлық диагоналдық элементтер нөлден өзгеше деп аламыз. Сонда Гаусс-Зейдел әдісіне сәйкес k номерлі жуықтауды мынадай түрде көрсетуге болады:
nixaxaxaxaba
x knin
kiii
kiii
kii
ii
ki ...,,2,1),......(
1 )1()1(11,
)(11,
)(11
)(
Итерациялық үрдіс )(kix мәндерінің барлығы )1( k
ix мәніне жақын болғаншажалғастырылады. Осы мәндердің жақындауын олардың айырымының максимальдыабсолюттік шамасымен сипаттауға болады. Сондықтан берілген 0 дәлдігі бойыншаитерациялық үрдістің аяқталу белгісін мынадай түрде жазуға болады:
,max )1()(
1
ki
ki
nixx
31
Осы шарттың орындалуынан Гаусс-Зейдельдің итерациялық үрдісі жинақты депаталады.
n сызықтық теңдеулер жүйесін Гаусс-Зейдель әдісімен шешу алгоритмінің блок-схемасы көрсетілген. Бастапқы мәндер ретінде теңдеулер жүйесінің коэффициенттері, дәлдігі, М итерация саны, бастапқы )...,,2,1( nixi жуықтау мәндері енгізіледі. Бастапқыжуықтау мәндердін енгізбеуге болады, яғни нөлге тең деп алуға болады.
k - итерацияның реттілік номері;i - теңдеудің және айнымалының номері;j - )(k
jij xa түріндегі мүшенің номері.Итерация шарттың орындалуымен немесе Mk болған жағдайда тоқтатылады.
Uses CRT;
Const
32
maxn = 10;
Type Data = Real; Matrix = Array[1..maxn, 1..maxn] of Data; Vector = Array[1..maxn] of Data;
{ Процедура ввода расширенной матрицы системы }Procedure ReadSystem(n: Integer; var a: Matrix; var b: Vector);Var i, j, r: Integer;Begin r := WhereY; GotoXY(2, r); Write('A'); For i := 1 to n do begin GotoXY(i * 6 + 2, r); Write(i); GotoXY(1, r + i + 1); Write(i:2); end; GotoXY((n + 1) * 6 + 2, r); Write('b'); For i := 1 to n do begin For j := 1 to n do begin GotoXY(j * 6 + 2, r + i + 1); Read(a[i, j]); end; GotoXY((n + 1) * 6 + 2, r + i + 1); Read(b[i]); end;End;
{ Процедура вывода результатов }Procedure WriteX(n :Integer; x: Vector);Var i: Integer;Begin For i := 1 to n do Writeln('x', i, ' = ', x[i]);End;
{ Функция, реализующая метод Зейделя }Function Seidel(n: Integer; a: Matrix; b: Vector; var x: Vector; e: Data) :Boolean;Var i, j: Integer; s1, s2, s, v, m: Data;Begin
{ Исследуем сходимость } For i := 1 to n do begin
33
s := 0; For j := 1 to n do If j <> i then s := s + Abs(a[i, j]);
If s >= Abs(a[i, i]) then begin Seidel := false; Exit; end;
end;
Repeat
m := 0; For i := 1 to n do begin
{ Вычисляем суммы } s1 := 0; s2 := 0; For j := 1 to i - 1 do s1 := s1 + a[i, j] * x[j]; For j := i to n do s2 := s2 + a[i, j] * x[j];
{ Вычисляем новое приближение и погрешность } v := x[i]; x[i] := x[i] - (1 / a[i, i]) * (s1 + s2 - b[i]);
If Abs(v - x[i]) > m then m := Abs(v - x[i]);
end;
Until m < e;
Seidel := true;End;
Var n, i: Integer; a: Matrix; b, x: Vector; e: Data;Begin ClrScr; Writeln('Программа решения систем линейных уравнений по методу Зейделя'); Writeln;
Writeln('Введите порядок матрицы системы (макс. 10)'); Repeat Write('>');
34
Read(n); Until (n > 0) and (n <= maxn); Writeln;
Writeln('Введите точность вычислений'); Repeat Write('>'); Read(e); Until (e > 0) and (e < 1); Writeln;
Writeln('Введите расширенную матрицу системы'); ReadSystem(n, a, b); Writeln;
{ Предполагаем начальное приближение равным нулю } For i := 1 to n do x[i] := 0;
If Seidel(n, a, b, x, e) then begin Writeln('Результат вычислений по методу Зейделя'); WriteX(n, x); end else Writeln('Метод Зейделя не сходится для данной системы'); Writeln;End.
Программа решения систем линейных уравнений по методу Зейделя
Введите порядок матрицы системы (макс. 10)>4
Введите точность вычислений>.000001
Введите расширенную матрицу системы A 1 2 3 4 b
1 4.1 0.1 0.2 0.2 21.14 2 0.3 5.3 0.9 -0.1 -17.82 3 0.2 0.3 3.2 0.2 9.02 4 0.1 0.1 0.2 -9.1 17.08
Результат вычислений по методу Зейделяx1 = 5.2000000008E+00x2 = -4.2000000028E+00x3 = 3.0000000003E+00x4 = -1.8000000000E+00
35
Тапсырма 6. Гаусс-Зейдель әдісін пайдаланып, 0,001 дәлдігімен жүйені шеш.
Программа құрастыр:
3333232131
2323222121
1313212111
bxaxaxa
bxaxaxa
bxaxaxa
. Есептің берілгендерін 4-тапсырмадан
алыңыз.
36
ӘДЕБИЕТТЕР
Негізгі әдебиеттер1. Н. Н. Калиткин. Численные методы. - М.: Наука, 1978.2. И. С. Бахвалов. Численные методы. - Ч.1, - М..: Наука, 1973.3. Г. И. Марчук. Методы вычислительной математики. - М.: Наука, 1980.4. Л. И. Турчак. Основы численных методов. - М.: Наука, 1987. – 320 с.5. В.М. Заварыкин. Численные методы. – М.: Просвещение, 1990. – 176с.6. Г. И. Воробьева, А. И. Данилова. Практикум по численным методам.
- М., Наука, 1979.7. И.Л. Акулич. Математическое программирование в примерах и
задачах. – М.: Высш. шк., 1986. – 319 с.8. Н. Культин. Программирование на Object Pascal в Delphi 5. Спб, БХБ.
- Санкт-Петербург, 1999.9. Фаронов В.В. Турбо Паскаль 7.0 Учебный курс. - М., 1998. - 433 с.10. Фаронов В.В. DELPHI 4. Учебный курс. - М., 1999. - 464 с.11. Электронные учебники по языкам программирования.
Қосымша әдебиеттер12. Численные методы и задачи оптимизации. /под ред. В.Н. Игнатьева,
Г.Ш. Фридмана. - Томск: Томского ун-та, 1983. - 165 с.13. В.М. Монахов и другие. Методы оптимизации. Применение
математических методов в экономике. Пособие для учителя. - М.:Просвещение, 1978. - 175 с.
14. Г.И. Марчук. Методы вычислительной математики. - М.: Наука,1980.
,
37
38