a11, a22(1), a33(2), a44(3) koeffitsentlar (6.10) sistemaning yetakchi elementlari deyiladi. Yuqoridagi shartlarga binoan ularning barchasi noldan farqli bo‘ladi.
Shunday qilib, Gauss usulining asosiy g‘oyasi berilgan (6.10) sistemadan koeffitsentlari uchburchak matritsani tashkil qiluvchi (6.11), (6.13), (6.15) va (2.17) tenglamalardan iborat teng kuchli tenglamalar sistemasini hosil qilishdir. Mazkur usulning hisoblash algoritmi ikki bosqichdan iborat. Birinchi bosqich to‘g‘ri yurish deb atalib (6.11),(6.13),(6.15) va(6.17) tenglamalardagi barcha b1j(j>1) va bij(k)(i=2,3,4;j>2,k=1,2,3) koeffitsentlarni hisoblashdan iborat. Ikkinchi bosqich esa teskari yurish deb atalib, unda barcha noma’lumlarning qiymatlari (ya’ni yechimlar) indeksning kamayib borish tartibida topiladi.
Yuqorida keltirilgan algoritm bo‘yicha ihtieriy n-tartibli sistemalarni yechish mumkin. Bunda algoritmning umumiy sxemasi xech qanday o‘zgarishsiz qolaveradi.
Biz yuqorida tenglamalar bo‘linuvchi aij koeffitsentlar noldan farqli bo‘lishi shartini qo‘yib, buning natijasida yetakchi elementlarni hamma vaqt noldan farqli qilib tanlash imkoniyati mavjudligini ta’kidlagan edik. Bunga tenglamalarning o‘rinlarini almashtirib erishish ham mumkinligi eslatib o‘tilgan edi. Noldan farqli koeffitsentlar bir nechta bo‘lganda buni bir necha yo‘l bilan amalga oshirish mumkin. Masalan (2.10) ko‘rinishdagi to‘rtinchi tartibli sistemada a11=0, ai10, i=2,3,4 bo‘lsin. Birinchi tenglamaning o‘rnini ikkinchi, uchinchi va to‘rtinchi tenglamalarning xohlagan biri bilan almashtirib a110 shartga erishamiz. Ko‘rinib turibdiki, bunday imkoniyatlar yagona emas.
Ulardan foydalanib, nafaqat yetakchi elementlarni noldan farqli qilib tanlash, balki yaxlitlash xatoliklarini ham sezilarli darajada kamaytirishga erishishimiz mumkin.
Quyidagi n tartibli, kvadrat matritsa berilgan bo‘lsin,
A =
Agar A-1=
matritsa mavjud bo‘lib,A*A = Ye shart bajarilsa (bu yerda Ye-birlik matritsa),u holda A matritsa A matritsaga teskari matritsa deyiladi.
bu yerda Ye
oliy matematika kursida biz teskari matritsani sistemaning satr va ustunlari ustida turli arifmetik amallar bajarish yordamida topishni o‘rganganmiz. Lekin bu juda ko‘p qo‘lda hisoblashlarni bajarishga olib keladi. Gauss usulini qism dastur sifatida qarab uni bir necha marta qo‘llash yordamida teskari matritsani osongina topish mumkin.
Agar A matritsani har bir ustunini vektor deb olib,quyidagi ko‘paytmalar tuzsak,
A* = ; A* = … ……. A* =
ko‘rinishga keladi.
Ma’lumki, chiziqli algebraik tenglamalar sitemasini vektorga ko‘paytirsak, vektor hosil bo‘ladi,uni sistema holida yozsak,1-tenglikdan
hosil bo‘ladi.
, , … lar noma’lum koeffitsientlar bo‘lib,ularni Gauss usuli yordamida yechib , topamiz. Demak, yuqoridagi n ta ifodaga Gauss usulini n marta qo‘llaymiz. Har safar topilgan yechimlarni 1 ta sistemaga yig‘sak, hosil bo‘lgan sistemaga mos matritsa berilgan matritsaga teskari matritsaning aynan o‘zidir.
Ko‘pchilik qurilish masalalari chiziqli bo‘lmagan tenglamalar sistemasiga keltiriladi. Bunday sistemalarni
(6.18)
shaklda yozishimiz mumkin. Bunda f1, f2,..., fn-ma’lum funksiyalar. (6.18) sistemani matritsa formasida yozamiz. Buning uchun
vektor-ustunlari kiritamiz. Bu belgilashlardan foydalanib (6.18) tenglamani
f(x)=0 (6.19) ko‘rinishda yozamiz.
(6.18), (6.19) sistemalarni yechish usularidan ayrimlarini qarab o‘tamiz.
Amalda tenglamalar sistemasini yechish uchun asosan bosh hadni tanlashga asoslangan Gauss usulidan foydalanishning algoritmining blok-sxemasi
Yuqoridagi algoritm asosida paskal dasturlah tilidagi dasturi
Program m1;
const n=...; { }
var k1,k2,k:byte;
A:Array[1..n,1..n] of real; x,b:Array[1..n] of real;
begin
for k1:=1 to n do
for k2:=1 to n do
readln(A[k1,k2])
for k1:=1 to n do
readln(B[k1])
for k:=1 to n-1 do
begin
for m:=k+1 to n do
begin
for l:=k+1 to n do
a[m,l]:=a[m,l]-a[m,k]*a[k,l]/a[k,k];
b[m]:=b[m]-a[m,k]*b[k]/a[k,k];
end;
end;
X[n]:=B[n]/a[n,n];
for k:=n-1 downto 1 do
begin
s:=0;
for i:=k+1 to n do s:=s+a[k,i]*x[i];
x[k]:=(b[k]-s)/a[k,k];
end;
for k:=1 to n do writeln(x[k]);
end.
Yuqori tartibli determinantlarni algebraik to’ldiruvchilar va minorlarga yoyib hisoblashda hosil bo’ladigan algoritm nisbatan murakkab hamda amallar soni juda ko`p bo`ladi Bu esa dasturlash jarayonini tashkil qilishda noqulaylik keltirib chiqaradi. Shuning uchun, amalda ko`proq Gauss usulining ishchi algoritmiga asoslangan usuldan foydalaniladi. Bunda berilgan determinant matritsasi uchburchak щoliga Gauss usulining birinchi bosqich ishchi formulalari yordamida keltirib olinadi:
Bu yerda ai,j (i1..n, j1..n) Determinant hadlari;
;
Hosil qilingan uchburchak ko`rinishdagi determinantning qiymati esa asosiy diagonaldagi hadlar ko’paytmasi orqali topiladi:
determinant hisoblash algoritmining blok sxemasi
yuqoridagi algoritm asosida paskal dasturlah tilidagi dasturi
program Determinant;
const n= ;
var
k1,k2,k,m,l:byte;
p:real;
a:array [1..n,1..n] of real;
begin
for k1:=1 to n do
for k2:=1 to n do
readln(a[k1,k2]);
for k:=1 to n-1 do
for m:=k+1 to n do
for l:=k+1 to n do
a[m,l]:=a[m,l]-a[m,k]*a[k,l]/a[k,k];
p:=1;
for k:=1 to n do
p:=p*a[k,k];
writeln('get A=', p);
end.
Do'stlaringiz bilan baham: |