|
Şəkil 8.1. ƏKKM-nun tətbiqi ilə alınan qrafik
|
bet | 21/35 | Sana | 06.12.2023 | Hajmi | 2,93 Mb. | | #112648 | Turi | Dərs |
Bog'liq C fakepathKOMPUTER MUHENDISLIYINDE EDEDI USULLAR 01 06 (2) (1)Şəkil 8.1. ƏKKM-nun tətbiqi ilə alınan qrafik.
Misal. Təcrübi olaraq 2 kəmiyyətin qiymətləri ölçülmüşdür (cədvəl 8.2).
Cədvəl 8.2
X
|
Y
|
10.1
|
24
|
10.2
|
36
|
10.3
|
26
|
10.8
|
45
|
10.9
|
34
|
11
|
37
|
11.1
|
55
|
11.4
|
51
|
12.2
|
75
|
13.3
|
84
|
13.8
|
74
|
14
|
91
|
14.4
|
85
|
14.5
|
87
|
15
|
94
|
15.6
|
92
|
15.8
|
96
|
17
|
97
|
18.1
|
98
|
19
|
99
|
Aşağıdakı funksiyalardan istifadə etməklə ƏKKM ilə x və y arasında asılılığı müəyyənləşdirək və hesablamaların nəticələrini müqayisə edək:
Həlli. Əvvəlcə 1) və 2) çoxhədliləri ilə verilmiş hallara baxaq:
>> %Eksperimental verilənlərin daxil edilməsi
>> X=[10.1 10.2 10.3 10.8 10.9 11 11.1 11.4 12.2 13.3 13.8 14 14.4 14.5 15 15.6 15.8 17 18.1 19];
>> Y=[24 36 26 45 34 37 55 51 75 84 74 91 85 87 94 92 96 97 98 99];
>>% çoxhədlisinin əmsallarının hesablanması
>> a=polyfit(X,Y,2)
a=
-1.4066 48.5515 -319.2648
>>% çoxhədlisinin əmsallarının >>% hesablanması
>> b=polyfit(X,Y,3)
b =
0.1359 -7.3034 131.8384 -701.7599
>>% [10 20] intervalında çoxhədlilərin qiymətlərinin hesablanması
>> x=10:0.5:20;
>> y1=polyval(a,x);
>> y2=polyval(b,x);
>>%çoxhədlilərin və eksperimental nöqtələrin qrafiki
>> plot(x,y1,'-k',x,y2,'-k',X,Y,'ok')
>> grid
>>% çoxhədlilər üçün korrelyasiya indekslərinin hesablanması
>> gam=sqrt(1-(sum((Y-polyval(a,X)).^2))/(sum((Y-mean(Y)).^2)))
gam =
0.9767
>> gam=sqrt(1-(sum((Y-polyval(b,X)).^2))/(sum((Y-mean(Y)).^2)))
gam =
0.9793
>>%çoxhədlilər üçün kvadratik meyletmələrin hesablanması
>> S=sqrt(sum ((Y-polyval(a,X)).^2))
S =
25.4685
>> S=sqrt(sum ((Y-polyval(b,X)).^2))
S =
24.0312
Şəkil 8.2. 1) və 2) ilə verilmiş qeyri-xətti asılılıqlardan və eksperimental nöqtələrdən ibarət qrafik
İndi isə 3) çoxhədlisi olan hala baxaq. MATLAB –da c asılılıq parametrlərinin ƏKKM ilə seçilməsi bir qədər mürəkkəbdir. Bu məsələ aşağıdakı funksiyanın minimumunun tapılması məsələsinə ekvivalentdir:
(8.1)
Bu məsələni iki üsulla həll etmək olar:
fminsearch( ) funksiyasının köməyi ilə (8.1) funksiyasının minimumunu tapmaq;
c1, c2, c3 parametrlərinə görə (8.1) funksiyasının xüsusi törəməsini tapıb 0-a bərabər götürmək və alınan xətti cəbri tənliklər sistemini həll etmək.
Ardıcıl olaraq hər iki üsula baxaq.
1. Çoxdəyişənli funksiyanın minimumunu tapmaq üçün fminsearch(fun,x0) funksiyasından istifadə etmək olar. Burada fun - minimumu axtarılan funksiya, x0-minimum nöqtəsinə başlanğıc yaxınlaşma vektorudur. fminsearch() funksiyasının nəticəsi minimum nöqtəsinin koordinatlarından və minimum özündən təşkil olunan massivdir. Birinci üsulla qoyulmuş məsələnin həlli m-funksiya şəklində aşağıda verilmişdir və nəticə şəkil 8.1-də təsvir olunmuşdur:
%(9.1) düsturu ilə qiymətlərin hesablanması üçün m-funksiya
function s=f_mnk(c)
% x və y qlobal dəyişənlərdir və bir neçə funksiyada istifadə olunacaq
global x;
global y;
s=0;
for i=1:length(x)
s=s+(y(i)-c(1)-c(2)*x(i)^2-c(3)*x(i)^3)^2;
end
end
%-------------------------------
global x;
global y;
% c vektorunun başlanğıc qiymətlərinin verilməsi
c=[2,1,0];
%eksperimental nöqtələrin daxil edilməsi
x=[10.1 10.2 10.3 10.8 10.9 11 11.1 11.4 12.2 13.3 13.8 14 14.4 14.5 15 15.6 15.8 17 18.1 19];
y=[24 36 26 45 34 37 55 51 75 84 74 91 85 87 94 92 96 97 98 99];
%minimumun və asılılıq əmsallarının təyini
[c,err]=fminsearch(’f_mnk’, c)
%funksiyanın qrafikinin qurulması üçün massivin təyin edilməsi
t=x(1):0.1:x(length(x));
t(i) nöqtələrində çoxhədlinin qiymətlərinin hesablanması
p2t=c(3)*t.^3+c(2)*t.^2+c(1);
%funksiyanın qrafikinin qurulması
plot(x,y,’ko’,t,p2t,’r-‘);
legend(‘eksperimentin neticeleri’, ’qurulmush funksiyanin qrafiki’);
2.Əvvəlcə xətti cəbri tənliklər sistemini quraq. Bunun üçün (9.1) funksiyasını c1, c2, c3 -ə görə differensiallayaq. Aşağıdakı şəkildə tənliklər sistemini alırıq:
(8.2)
Aşağıdakı m-funksiya ikinci üsulu həyata keçirir:
function c=my_mnk(x,y)
% eksperimental nöqtələrin sayının tapılması
n=length(x);
%cəmlərin hesablanması
sx=0; sx2=0; sx3=0;sx4=0; sx5=0; sx6=0; sy=0; syx2=0; syx3=0;
for i=1:length(x)
|
| |