Zeydel üsulu - Azərbaycan Hava Yolları

|
Azərbaycan Hava Yolları
|
bet | 16/35 | Sana | 06.12.2023 | Hajmi | 2,93 Mb. | | #112648 | Turi | Dərs |
Bog'liq C fakepathKOMPUTER MUHENDISLIYINDE EDEDI USULLAR 01 06 (2) (1)3.2. Zeydel üsulu
Zeydel üsulu sadə iterasiya metodunun modifikasiyasıdır. Sadə iterasiya metodunda (k+1)-ci iterasiyada qiymətlərində məchulları hesablamaq üçün əvvəlki iterasiyalarda hesablanmış qiymətləri (6) – da nəzərə alırıq.
Zeydel üsulunda hesablanarkən (k+1)-ci iterasiyada tapılmış , , qiymətlərindən istifadə edilir. Onda (k+1)-ci yaxınlaşma aşağıdakı kimi qurulur:
(3.2.1)
Bu düsturlar Zeydel metodunun hesablama düsturlarını təşkil edirlər.
Aşağı və yuxarı üçbucaq matrisləri yazaq:
.
(3.2.1) hesabat düsturları matris şəklində aşağıdakı kimi yazılır:
.
Belə ki, , ilkin sistemin dəqiq həlli bərabərliyini ödəyir.
Zeydel metodunun yığılması
Zeydel metodunun yığılması üçün zəruri şərt:
. (3.2.2)
bərabərsizliyinin ödənməsidir.
Əgər (10) bərabərsizliyi ödənərsə, onda xətanı aşağıdakı kimi qiymətləndirmək olar:
, (3.2.3)
burada B matrisinin normasıdır.
Sona çatma kriterisi
Əgər həlli dəqiqliklə tapmaq tələb olunarsa, onda (k+1)-ci addımda:
bərabərsizliyi ödənərsə, onda iterasiya prosesi başa çatır. Ona görə də prosesin sonu üçün
,
Burada
bərabərsizliyindən istifadə etmək olar.
Qeyd edək ki, əgər , bərabərsizliyi ödənərsə, onda aşağıdakı daha sadə kriteridən istifadə etmək olar:
.
Zeydel metodu bir qayda olaraq sadə iterasiya üsulundan daha tez yığılır. Bəzən isə elə ola bilər ki, sadə iterasiya üsulu tez yığılsın, Zeydel metodu isə gec yığılsın və ya ümumiyyətlə, yığılmasın.
Nümunə. İterasiya üsulu ilə həll edilmiş tənliklər sistemini Zeydel metodu ilə həll edək.
Göründüyü kimi ilk addımlar hər iki üsulda eynidir.
Zeydel metodu ilə iterasiyaları hesablayaq.
k=1 olduqda
hesablandıqda -in qiymətindən istifadə edirik:
hesablandıqda :-in qiymətindən də istifadə edirik:
hesablandıqda , , qiymətlərindən istifadə edirik:
Analoji olaraq k=2 və k=3 hallarında hesablamalar aparırıq.
k=2 olduqda
k=3 olduqda
Məchulların dəqiq qiymətləri aşağıdakılardır:
.
Beləliklə, göründüyü kimi Zeydel metodu ilə proses daha tez yığılır və daha dəqiq nəticə verir.
Xətti cəbri tənliklər sisteminin Zeydel üsulu ilə həllinin C++ proqramlaşdırma dilində proqramını ümumi şəkildə aşağıdakı kimi yazmaq olar.
#include
#include
#include
using namespace std;
int main()
{
// daxil edilmish matrisin olchusunu hesablayiriq
int size;
cin>>size;
// matrisi heqiqi ededlerden ibaret vektorda saxlayiriq
vector>matrix;
// serbest sutunun hedleri de daxil edilmekle matrisin olchusu (size)x(size+1)
matrix.resize (size);
for (int i=0; i{
matrix[i].resize (size+1)
for (int j=0; j{
cin>>matrix[i][j];
}
}
// deqiqliyi hesablayiriq
long double eps;
cin>>eps;
// matrisdeki setirlerin sayina beraber olchulu deyishenler vektorunu daxil edirik
// evvelce onu sifirlarla doldururuq
VectorpreviousVariableValus(size, 0.0);
// teleb olunan deqiqlik alinana qeder iterasiya prosesi yerine yetirilir
while (true)
{
// novbeti addimda deyishenlerin qiymetler vektorunu daxil edirik
VectorcurrentVariableValues(size);
// cari iterasiyada nezeri dwsturlara deyishenlerin qiymetini hesablayayiriq
for(int=0;i{
currentVariableValues[i]=matrix[i][size];
//i-den ferqli deyishenlerin cemini hesablayiriq
for (int j=0; j{
if(j{
currentVariableValues[i]-=matrix[i][j]* currentVariableValues[j];
}
// j>i olduqda evvelki iterasiyanin qiymetinden istifade edirik
if(j>i)
{
}
// i-ci deyishen uchun emsala boluruk
currentVariableValues[i]/=matrix[i][i];
}
// evvelki iterasiyaya esasen cari xetani hesablayiriq
Long double error=0.0;
For(int i=0; i}
Error+=abs(currentVariableValues[i]-previousVariableValues[i]);
}
// eger deqiqlik alinarsa, proses sona chatir
if (error{
Break
}
previousVariableValues=currentVariableValues;
}
For (int i=0; i{
Printf(“%.8llf”, previousVariableValues[i];
}
Return 0;
}
|
| |