Azərbaycan Hava Yolları




Download 2,93 Mb.
bet11/35
Sana06.12.2023
Hajmi2,93 Mb.
#112648
TuriDərs
1   ...   7   8   9   10   11   12   13   14   ...   35
Bog'liq
C fakepathKOMPUTER MUHENDISLIYINDE EDEDI USULLAR 01 06 (2) (1)

1.2.4. Sadə iterasiya metodu
Bu üsulun əsas üstün cəhəti onun müxtəlif hesablama məsələlərinin həllində istifadə edilməsində və ümumiliyin­dədir. Ona görə də iterasiya metodu ən dəyərli metodlardan sayılır. Bu metodun ümumi sxemi aşağıdakı kimidir.
Tutaq ki, f(x)=0 tənliyi verilib. Bu tənliyi sadə iterasiya metodu ilə həll etmək üçün onu əvvəlcə x=g(x) şəklinə çeriririk və fərz edirik ki, g(x) funksiyası x=g(x) tənliyinin kökünün müəyyən ətrafında kəsilməzdir. Köklərin tapılması üçün baş­lan­ğıc verilənlər kimi x0 başlanğıc qiyməti və dəqiqliyi məlum olmalıdır. Növbəti x1 yaxınlaşması x1=g(x0) düsturu ilə hesablanır. Sonra x0 yaxınlaşması x1 qiymətini alır və proses x0 və x1 qiymətlərinin fərqinin modulu -dan böyük olana qədər davam etdirilir. Qeyd edək ki, həllin alınması üçün |g'(x0)|<1 şərti ödənməlidir.
Bir nümunəyə baxaq.
Nümunə. x=(x-0,1)4+0,1 tənliyinin kökünü iterasiya üsulu ilə tapmaq lazımdır.
Qeyd edək ki, bu metod kökün tapılmasını həmişə təmin etmir. Çünki və x0<1,1 olarsa, x=0,1 kökünün ətrafında |g'(x)| = |4(x-0,1)3 |<1 şərti ödənir və tənliyin kökü tapılır.
Əgər başlanğıc nöqtə olaraq 1,1 götürsək, onda bu nöqtə­­nin ətrafında |g'(x)| >1 və hər bir addımdan sonra kökdən uzaqlaşma baş verir. Ona görə də |g'(x)| >1 olan halda x=g(x) tənliyinin kökünü tapmaq üçün tənliyi x=h(x) şəklinə çevirmək lazımdır. Burada h(x) funksiyası g(x) funksiyasının tərsidir.
Bu məsələnin proqram kodu aşağıdakı kimi olar.
#include
#include
#include
#include "math.h"
using namespace std;
int main ()
{
double X0, X1, Eps, dX, P;
printf ("x0="); // X0= yazisinin ekrana chixarilmasi.
scanf ("%f", &X0); // X0 dəyişəninə klaviaturadan daxil edilmiş qiymətin yazilmasi.
printf ("eps="); // dəqiqliyin ekrana çixarilmasi.
scanf ("%f", &Eps); // Eps-ə klaviaturadan daxil edilmiş qiymətin yazilmasi.
P=fabs(4*pow(X0-0.1,3));
if (P<1)
//Verilmiş ilkin funksiyanin istifade olunmasi
do
{
X1=pow(X0-0.1, 4)+0.1;
dX=fabs(X0-X1);
X0=X1;
}
while(dX>Eps);
else if (P>1)
//ters funksiyanin istifade olunmasi
do
{
X1=pow(X0-0.1,0.25)+0.1 ;
dX=fabs(X0-X1);
X0=X1;
}
while(dX>Eps);
printf("X0 = %lf\n",X0);
return 0;
}



Download 2,93 Mb.
1   ...   7   8   9   10   11   12   13   14   ...   35




Download 2,93 Mb.