• 5. İnterpolyasiya çoxhədlilərinin qurulması
  • Laqranjın interpolyasiya çoxhədlisi
  • 6. MATLAB mühitində interpolyasiya məsələlərinin həlli
  • Yi=interp1(x , y, xi [,method])
  • Azərbaycan Hava Yolları




    Download 2,93 Mb.
    bet18/35
    Sana06.12.2023
    Hajmi2,93 Mb.
    #112648
    TuriDərs
    1   ...   14   15   16   17   18   19   20   21   ...   35
    Bog'liq
    C fakepathKOMPUTER MUHENDISLIYINDE EDEDI USULLAR 01 06 (2) (1)

    Matrisin əmsalları

    Sərbəst
    hədlər

    1.

    1.84
    2.32
    1.83

    2.25
    2.60
    2.06

    2.53
    2.82
    2.24

    -6.09
    -6.98
    -5.52

    2.

    2.58
    1.32
    2.09

    2.93
    1.55
    2.25

    3.13
    1.58
    2.34

    -6.66
    -3.58
    -5.01

    3.

    2.18
    2.17
    3.15

    2.44
    2.31
    3.22

    2.49
    2.49
    3.17

    -4.34
    -3.01
    -5.27

    4.

    1.54
    3.69
    2.45

    1.70
    3.73
    2.43

    1.62
    3.59
    2.25

    -1.97
    -3.74
    -2.26

    5.

    1.53
    2.35
    3.83

    1.61
    2.31
    3.73

    143
    2.07
    3.45

    -5.13
    -3.69
    -5.98

    6.

    2.36
    2.51
    2.59

    2.37
    2.40
    2.41

    2.13
    2.10
    2.06

    1.48
    1.92
    2.16

    7.

    3.43
    4.17
    4.30

    3.38
    4.00
    4.10

    3.09
    3.65
    3.67

    5.52
    6.93
    7.29

    8.

    3.88
    3.00
    2.67

    3.78
    2.79
    2.37

    3.45
    2.39
    1.98

    10.41
    8.36
    7.62

    9.

    3.40
    2.64
    4.64

    3.26
    2.39
    4.32

    2.90
    1.96
    3.85

    13.05
    10.30
    17.89

    10.

    2.53
    3.95
    2.78

    2.36
    4.11
    2.43

    1.98
    3.66
    1.94

    12.66
    21.97
    13.93

    11.

    2.16
    3.55
    4.85

    1.96
    3.23
    4.47

    1.56
    2.78
    3.97

    13.16
    21.73
    29.75

    12.

    2.69
    2.73
    2.93

    2.47
    2.39
    2.52

    2.07
    1.92
    2.02

    19.37
    19.43
    20.80

    13.

    3.72
    4.47
    4.96

    3.47
    4.10
    4.53

    3.06
    3.63
    4.01

    30.74
    36.80
    40.79

    5. İnterpolyasiya çoxhədlilərinin qurulması
    İqtisadiyyatda və texnikada eksperiment nəticəsində alınmış cədvəllər əsasında y=f(x) asılılığında funksiyanın qiymət­lərini çox vaxt arqumentin cədvəldə olmayan qiymətləri üçün hesablamaq tələbatı yaranır. Bundan başqa bəzi hallarda y=f(x) asılılığı üçün analitik ifadə məlum olduğuna baxma­ya­raq, o çox mürəkkəb olub müxtəlif riyazi çevrilmələrin aparıl­masına çətinlik törədir. Belə hallarda interpolyasiya məsə­lə­ləri meydana çıxır.
    Tutaq ki, [a,b] parçasında (n+1) sayda nöqtələrdə y=f(x) funksiyasının qiymətləri verilmişdir:
    y0=f(x0), y1=f(x1),...,yn=f(xn)
    Burada x0,x1,...,xn nöqtələri interpolyasiyanın düyün nöqtə­ləri adlanır. Bu cədvəlləşdirilmiş funksiya üçün elə p(x) analitik ifadə tapmaq tələb olunur ki, onun qiymətləri interpol­ya­siyanın düyün nöqtələrində verilmiş funksiyanın qiymətləri ilə üst-üstə düşsün, yəni:
    y0=P(x0), y1=P(x1),...,yn=P(xn) (5.1)
    olsun.
    Düyün nöqtələrindən fərqli daxili nöqtələrdə funksi­ya­nın qiymətlərinin tapılması prosesi f(x) funksiyasının interpol­yasiya olunması adlanır. (5.1) şərtlərini ödəyən Pn(x) çoxhəd­lisi interpolyasiya çoxhədlisi, uyğun düsturlar isə inter­pol­ya­siya düsturları adlanır.
    Müxtəlif interpolyasiya düsturları var (Laqranj, Nyuton və s.).
    Düyün nöqtələri bərabər olmayan məsafədə yerləşən hal üçün Nyutonun interpolyasiya düsturunu nəzərdən keçirək.
    Tutaq ki, f(x) funksiyası aşağıdakı qiymətləri ilə verilib:
    y0=f(x0), y1=f(x1),...,yn=f(xn)
    Nyutonun P(x) çoxhədlisini
    y0=P(x0), y1=P(x1),...,yn=P(xn)
    şəklində axtaraq. Bunun üçün birinci tərtib ayrılan fərqi quraq:

    Buradan
    P(x)=P(x0)+P(x,x0)(x-x0) (5.2)
    alırıq. İkinci tərtib ayrılan fərq düsturunu yazaq:

    Buradan aşağıdakı ifadəni alırıq:
    P(x,x0)=P(x0,x1)+P(x,x0,x1)(x-x1) (5.3)
    (6.3) ifadəsini (6.2) –də nəzərə alsaq
    P(x)=P(x0)+P(x0,x1)(x-x0)+P(x,x0,x1)(x-x0)(x-x1)
    3-cü tərtib ayrılan fərqin düsturuna görə aşağıdakını yaza bilərik:

    Buradan alarıq:
    (5.4)
    (5.4)-ü (5.3)-də nəzərə alsaq və prosesi bu qayda ilə davam etdirsək aşağıdakını ala bilərik:
    Bu düsturun Laqranj düsturundan üstünlüyü onun yeni interpolyasiya düyün nöqtələrinin əlavə olunması zamanı hesablamaların yenidən aparılmasını tələb etmə­məsidir.
    Laqranjın interpolyasiya çoxhədlisi
    Fərz edək ki, funksiya cədvəl şəkilində verilmişdir (eksperimentden tapılır).

    X





    ...



    Y





    ...



    Cəbr kursundan məlumdur ki, n+1 sayda nöqtələr m dərəcəli çoxhədlini birqiymətli təyin edir. Həmin çoxhədlini parabolik interpolyasiya ilə tapmaq mümkündür. Parabolik inter­polyasiyanın daha ümumi düsturu interpolyasiyanın Laq­ranj düsturudur. Bu düstur aşağıdakı şəkildədir.
    (5.5)
    Cədvəl qiymətlərinin doğru olub olmadığını yoxlayaq

    Laqranj çoxhədlisini qısa şəkildə aşağıdakı kimi yaz­maq olar.
    (5.6)
    Burada
    (5.7)
    (5.3) funksiyasına Laqranjın interpolyasiyası çoxhədlisi deyilir. Burada n çoxhədlinin dərəcəsini göstərir.
    Nümunə. Aşağıdakı cədvəldə verilmiş funksional asılı­lı­­ğın Laqranj çoxhədlisini qurmalı:

    X

    1

    2

    3

    5

    Y

    1

    5

    14

    81

    Həlli:

    Laqranj çoxhədlisinin qurulmasının C++ dilində ümumi proqramını tərtib edək. Bunun üçün aşağıdakı kimi işarə­ləmə­lər qəbul edək.
    Size - x,y massivdə elementlərin maksimum sayı, nöqtələrin maksimal sayı;
    P - (x-xj)*(xi-xj) hasili;
    L - yi və p-nin hasilləri cəmi;
    X[size] - daxil edilmiş nöqtələrin x koordinantından ibarət massiv;
    Y[size] - daxil edilmiş nöqtələrin y koordinantından ibarət massiv;
    i, j - daxili və xarici dövrlərdəki sayğaclar;
    k - daxil edilmiş nöqtələrin miqdarı;
    #include
    #include
    #include
    #define size 20
    void main( )
    {
    float L,p,xd,x[size],y[size];
    int i,j,k;
    clscr();
    Printf(“nöqtələrin sayı\nk=”);
    Scanf(“%i|, &k);
    For (i=0; I{
    Printf (“\n koordinantlari daxil et %i nöqtəsində \n”,i++)
    printf (“x%i=”, i+1);
    scanf (“%f”,&x[i]);
    printf(“y%i=”,i+1);
    scanf(“%f”,&xd);
    L=0;
    For (i=0;i{
    P=1; for (j=0;j{
    if(i==j);
    else
    P*=(xd-x[j]/x[i]-x[j]);
    }
    P*=y[i];
    L+=p;
    }
    Printf(“Başlanğıc nöqtədə y koord\n y=%g”,L);
    getch( );
    }
    6. MATLAB mühitində interpolyasiya məsələlərinin həlli
    Arqumentin verilmiş qiymətlərində qurulmuş n tərtib­dən interpolyasiya çoxhədlisinin köməyi ilə x1=0,702, x2=0,512, x3=0,608 nöqtələrində funksiyanın təqribi qiymət­lə­rini hesablayaq. Arqumentin verilmiş qiymətlərinə uyğun funk­si­yanın aldığı qiymətlər cədvəl 6.1-də verilmişdir.
    Cədvəl 6.1.

    xX

    0.43

    0.48

    0.55

    0.62

    0.7

    0.75

    yY

    1.63597

    1.73234

    1.87686

    2.03345

    2.2284

    2.3597

    Qeyd edək ki, MATLAB sistemində n-ci tərtib inter­pol­yasiya funksiyasının qurulması üçün funksiyalar möv­cud deyil, lakin interpolyasiya çoxhədlisini reallaşdıran funk­siyalar kifa­yət qədərdir. Növbəti proqram M-dildə kanonik şəkildəki çox­hədlinin qiymətini və eksperimental nöqtələrə görə t nöqtə­sində Nyuton və Laqranj çoxhədlilərini hesablayan funksi­ya­dan ibarətdir.
    %Kanonik çoxhədli
    Function s=kanon(x,y,t)
    % x və y massivlərinin elementlərinin sayının müəyyən­ləş­dirilməsi.
    n=length(x);
    % tənliklər sisteminin əmsallarının hesablanması
    for i=1:n
    for j=1:n
    A(i,j)=x(i).^(j-1);
    end
    end
    % Tenlikler sisteminin helli
    a=A^(-1)*y’;
    s=0;
    for i=1:n
    s=s+a(i)*t^(i-1);
    end
    end

    %Nyuton çoxhədlisi


    function s=newton(x,y,t)
    n=length(x);
    for i=1:n
    c(i,1)=y(i);
    end
    for i=2:n
    for j=2:n
    if (ic(i,j)=0;
    else
    C(i,j)=(C(i,j-1)- C(j-1,j-1))/(x(i)-x(j-1));
    end
    end
    end
    for i=1:n
    A(i)=C(i,i);
    end
    % t nöqtəsində çoxhədlinin qiymətinin hesablanması
    s=0;
    for i=1:n
    p=1;
    for j=1:i-1
    p=p*(t-x(i));
    end
    s=s+A(i)*p;
    end
    end
    % Laqranj çoxhədlisi
    function s=lagrang(x,y,t)
    n=length(x);
    s=0;
    for i=1:n
    p=1;
    for j=1:n
    if (j~=i)
    p=p*(t-x(j))/(x(i)-x(j));
    end
    end
    s=s+y(i)*p;
    end
    end
    % Laqranj funksiyasina müraciət etməklə x1=0,702, x2=0,512, % x3=0,608 nöqtələrində çoxhədlinin qiymətlərini hesablayaq.
    >>r=[0.702 0.512 0.608]
    >>r=
    0.702 0.512 0.608
    for i=1:3
    rs(i)=laqrang(x,y,r(i));
    end
    rs
    rs=
    2.2336 1.7970 2.0057
    Eyni qayda ilə kanonnewton funksiyalarına müraciət etməklə verilmiş nöqtələr üçün çoxhədlinin qiymətini hesab­la­maq olar. Ümumiyyətlə, Nyuton, Laqranj və kanonik inter­pol­yasiya çoxhədliləri eyni funksiyanın müxtəlif üsullarla qurul­masından ibarətdir.
    MATLAB –da interpolyasiya məsələlərini həll etmək üçün aşağıdakı funksiyalardan istifadə olunur.
    Yi=interp1(x, y, xi [,method]),
    burada

    • x- eksperimental nöqtələrin absislərindən ibarət massiv;

    • y- eksperimental nöqtələrin ordinatlarından ibarət massiv;

    • xi- qiyməti splaynın köməyi ilə hesablanacaq nöqtə;

    • method- splaynın qurulması üsulunu təyin edən üsul.

    Method parametri aşağıdakı qiymətlərdən birini ala bilər:

    • linear’ – xətti interpolyasiya;

    • spline’ – kubik splayn;

    • nearest’ n- qonşu nöqtələr arasında interpolyasiya. Bu üsulda istənilən nöqtədə interpolyasiya funksiyasının qiyməti yaxın düyün nöqtəsindəki qiymətə bərabər götürülür.

    • interp1(x, y, xi, method) funksiyası xi nöqtəsində inter­pol­yasiya funksiyasının qiymətini hesablayır

    Yuxarıda qoyulan məsələni interp1() funksiyasının köməyi ilə həll edək.
    %Eksperimental nöqtələrdən ibarət massivlərin qurulması
    x=[0.43 0.48 0.55 0.62 0.7 0.75];
    y=[1.63597 1.73234 1.87686 2.03345 2.22846 2.35973];
    % eksperimental nöqtələrin sayının müəyyənləşdirilməsi
    n=length(x);
    % interpolyasiya qiymətləri hesablanacaq nöqtələrin daxil edilməsi
    t=[0.702 0.512 0.608];
    % qrafikin qurulması üçün xi massivinin qurulması
    xi=[x(1):0.02:x(length(x))];
    % interpolyasiya funksiyasının qiymətinin hər üç üsul ilə
    % hesablanması
    yin=interp1(x,y,xi,’nearest’);
    yil=interp1(x,y,xi,’linear’);
    yis=interp1(x,y,xi,’spline’);
    % x1=0,702, x2=0,512, x3=0,608 verilmiş nöqtələri üçün
    % interpolyasiya funksiyasının qiymətinin hər üç üsul ilə
    % hesablanması
    ytn=interp1(x,y,t,’nearest’);
    ytl=interp1(x,y,t,’linear’);
    yts=interp1(x,y,t,’spline’);
    % qrafikin qurulması
    plot (x,y,’bo’, xi,yin,’-r’,xi,yil,’:r’ ,xi,yis,’-r’,t,ytn,’x’,t,yts,’*’);
    grid on
    legend (‘ eksperimental qiymetler’, ‘nearest’, ‘linear’, ‘spline’,
    ‘nearest usulu ile hesablanma’, ‘splaynin komeyile hesab­lanma’)




    Download 2,93 Mb.
    1   ...   14   15   16   17   18   19   20   21   ...   35




    Download 2,93 Mb.