logo

C++ da vektorlarni skalyar ko`paytmasini topish modulini ishlab chiqarish

Yuklangan vaqt:

20.11.2024

Ko'chirishlar soni:

0

Hajmi:

276 KB
MAVZU:   C++ da  vektorlarni skalyar ko`paytmasini topish modulini
ishlab chiqarish.
Reja
I. Kirish
II. Asosiy  qism
1. Vektorlarni skalyar ko`paytmasini topish
2. C++ da  vektorlar bilan ishlash.
3 C++ da  vektorlarni skalyar ko`paytmasini topish moduli
III. Xulosa
IV Foydalanilgan adabiyotlar
1 Kirish 
Vektor nisbatan yangi matematik tushuncha hisoblanadi. «Vektor» terminining
o‘zi   1845   yilda   Vilyam   Rouen   Gamilton   tomonidan   kiritilgan   1   .   Vektor
tushunchasiga   son   qiymati   va   yo‘nalishi   bilan   xarakterlanuvchi   ob’ektlar   bilan   ish
ko‘rilganida   duch   kelinadi.   Bunday   ob’ektlarga   kuch,   tezlik,   tezlanish   kabi   fizik
kattaliklar   misol   bo‘ladi.   Vektor   matematikaning   turli   bo‘limlarida,   masalan,
elementar,   analitik   va   differensial   geometriya   bo‘limlarida   qo‘llaniladi.   Vektorli
algebra   fizika   va   mexanikanig   turli   bo‘limlariga,   kristallografiyaga,   geodeziyaga
tatbiq   qilinadi.   Vektorlarsiz   nafaqat   klassik   matematika,   balki   boshqa   ko‘plab
fanlarni   tasavvur   qilib   bo‘lmaydi.   Vektorlar   ustida   qo‘shish   va   songa   ko‘paytirish,
amallarini,   vektorlarning   skalyar,   vektor   va   aralash   ko‘paytmalarini,   vektorlarni
baziz   fazoda   almashtirishni,   vektorlarni   proyeksiyalashni   va   shu   kabi   masalalarni
o‘rganish vektorli algebraning predmeti hisoblanadi.
Vektorlar, matematikada va kompyuter grafikasi kabi ko‘plab sohalarda keng 
qo‘llaniladi. Vektorlarning skalyar ko‘paytmasi (yoki dot product) ikki vektor 
orasidagi geometrik munosabatlarni aniqlashda muhim ahamiyatga ega. Skalyar 
ko‘paytma, ikki vektorning mos keluvchi elementlarini ko‘paytirib, ularning 
yig‘indisini olish orqali hisoblanadi. Bu amaliyot, ko‘plab ilmiy hisob-kitoblar va 
algoritmlarda qo‘llaniladi.
 Vektorlarning skalyar ko‘paytmasi nima?
Ikki vektor a va b
   ning skalyar ko‘paytmasi, ularning mos elementlarini ko‘paytirib, 
yig‘indisini olish orqali aniqlanadi:
a*b= ∑ ( a
i  * b
i   )
bu yerda a
i   va  b
i   mos ravishda a  va b  vektorlarining i -chi elementlari, va n  esa 
vektorlarning uzunligi.
Skalyar ko‘paytmaning asosiy qo‘llanilish joylaridan biri, ikki vektor orasidagi 
burchakni aniqlash va vektorlarning ortogonal (perpendikulyar) bo‘lishini 
tekshirishdir. Agar ikki vektorning skalyar ko‘paytmasi nolga teng bo‘lsa, demak 
ular ortogonaldir.
2 C++ dasturlash tili, uning yuqori samaradorligi va kuchli standart kutubxonasi 
tufayli ilmiy va texnik hisob-kitoblar uchun keng qo‘llaniladi. STL (Standard 
Template Library) ning `vector` sinfi, dinamik massivlar bilan ishlashni 
osonlashtiradi va skalyar ko‘paytmani hisoblash uchun qulay vosita hisoblanadi.
 Vektorlarning skalyar ko‘paytmasini hisoblash moduli.
Ikki vektorning skalyar ko‘paytmasini hisoblash moduli quyidagi talablarni 
qondirishi kerak:
1. Ikki vektorni qabul qilish: Funksiya ikkita vektor qabul qilishi kerak.
2. Vektorlarning uzunligini tekshirish: Funksiya, vektorlarning uzunligi bir xil 
ekanligini tekshirishi va agar bir xil bo‘lmasa, xatolik (exception) tashlashi kerak.
3. Skalyar ko‘paytmani hisoblash: Funksiya, ikki vektorning mos elementlarini 
ko‘paytirib, yig‘indisini qaytarishi kerak.
3 Vektorlarni skalyar ko`paytmasini topish
1. Fazo tushunchasi  
Fanda fazo tushunchasi har xil ma’nolarga ega. Fazoni filosofik talqin qiladigan 
bo’lsak, u materiyaning yashash shaklini anglatadi. Haqiqiy dunyoning fazoviy 
ko’rinishi undagi mikdoriy munosabatlar bilan birgalikda matematikaning 
o’rganiladigan predmeti bo’lib, bunda u geometriyaning bosh mazmunini tashkil 
qiladi. Maktab geometriyasida fazo tushunchasi sodda ko’rinishda uchraydi, fazo 
deganda ma’lum aksiomalar sistemasini qanoatlantiruvchi uch o’lchamli ( x, y, z ) 
haqiqiy sonlar uchligidan iborat nuqtalar to’plami tushuniladi. Fazoning har bir 
nuqtasi uchta koordinatalar orqali aniqlanadi va aksincha, har bir uchta sonlarning 
tartiblangan sistemasi fazoda qandaydir nuqtani aniqlaydi. Shunday qilib, uch 
o’lchamli fazoni uchta haqiqiy son sistemasi bo’lgan  (x, y, z)  nuqtalarning to’plami 
deb qarash mumkin. Bunda ikki A  (x
1 , y
1 , z
1 )  B  (x
2 , y
2 , z
2 )  nuqtalar orasidagi masofa 
formula bilan aniqlanadi. 
Fazo tushunchasi matematikada ancha murakkab tuzilishga ega bo’lgan ob’yektlar 
uchun umumlashtiriladi. Matematikada fazo deganda, ixtiyoriy ob’yektlar (sonlar 
to’plami, funksiyalar to’plami va h.k.) majmuasi tushuniladi va ular orasida uch 
o’lchamli fazoda o’rganilgan munosabatlarga o’xshash munosabatlar o’rnatiladi. 
Bunda ikki nuqta orasidagi masofa tushunchasi muhim o’rin egallaydi. 
2. n-o’lchamli vektor fazo  
Geometriya, mexanika va fizikada shunday ob’yektlar uchraydiki, ular bir yoki bir 
necha haqiqiy sonning tartiblangan sistemasi bilan aniqlanadi. Masalan, (uch 
o’lchamli) fazoda har qanday vektor o’zining uchta komponentasi bilan aniqlanadi. 
Fazo tushunchasini umumlashtirish vektor tushunchasini umumlashtirish bilan 
bog’liq. Vektorning eng sodda umumlashtirilishi  n-o’lchamli vektor  tushunchasidir. 
1-ta’rif . Tartib bilan yozilgan  n  ta haqiqiy son sistemasi (majmuasi), ya’ni 
a=(a
1 , a
2 ,. . .. . .. . ., a
n )    n-o’lchamli vektor deyiladi.  Bunda,  a
1 , a
2 ,. . .. . .. . ., a
n  sonlar 
vektorning koordinatalari deyiladi. 
Kelajakda, vektorlarni  a,b,c  va h.k. lotin alifbosining harflari bilan, ularning 
koordinatalarini esa shu harflarning indekslari yordamida yozamiz. 
4 2-ta’rif . Ikkita  a=(a
1 , a
2 ,. . ., a
n )  va  b=(b
1 , b
2 ,. . ., b
n )  vektorlarning mos koordinatalari
teng, yani  a
1 =b
1  , a
2 =b
2  ,. . . a
n =b
n   bo’lsa, bu vektorlar teng deb ataladi. 
Bu ta’riflardan ko’rinadiki, vektor bu  n -ta haqiqiy son to’plami bo’libgina qolmay, 
balki elementlari tartiblangan sistema hamdir. Berilgan vektorning koordinatalarini 
boshqa tartibda yozilsa, umumiy holda boshqa vektor hosil bo’ladi. Masalan, 
a= (1,2,3) va  b= (2,3,1) vektorlar boshqa-boshqa vektorlardir. 
Misollar.  1. Tekislikdagi vektorlar ikki o’lchamli vektorga misol bo’ladi:  a=(a
1 ,a
2 ), 
uch o’lchamli fazodagi vektorlar uch o’lchamli vektorga misol bo’ladi:  a = (a
1 ,a
2 ,a
3 )  
2. Bir o’zgaruvchili (n-1) darajali  f(x)=a
0 +a
1 x+. . .+a
n-1  x n-1
 
ko’phadni  n  o’lchamli  a = (a
0 ,a
1 ,... a
n-1 )  vektor sifatida qarash mumkin. 
Endi,  n  o’lchamli vektorlar ustida chiziqli amalllar kiritamiz. 
3-ta’rif . Ikki  a=(a
1 , a
2 ,. . ., a
n )  va  b=(b
1 , b
2 ,. . .,b
n )  vektorning yig’indisi deb  a+b  
vektorga aytiladi va u quyidagicha aniqlanadi: 
a+b=(a
1 +b
1  a
2 +b
2 . . ., a
n +b
n )  
4-ta’rif .  a=(a
1 , a
2 ,. . ., a
n )  vektorning haqiqiy songa ko’paytmasi deb,  a  vektorga 
aytiladi va u quyidagicha aniqlanadi:  a=(   a
1 , a
2 , ... a
n )  
5-ta’rif.  Hamma koordinatalari nolga teng bo’lgan vektor nol vektor deyiladi va 
0=(0, 0, . . ., 0) orqali yoziladi. 
Vektorlarni qo’shish va songa ko’paytirish amali vektorlar ustida chiziqli amallar 
deyiladi va ular quyidagi xossalarga ega bo’ladi: 
1 0
.  a+b=b+a  (qo’shishning kommutativlik xossasi). 
2 0
.  (a+b)+c=a+(b+c)  (qo’shishning assosiativlik xossasi). 
3 0
. Ixtiyoriy  a  vektor uchun  a+0=a  tenglik o’rinli bo’ladi. 
4 0
. Har bir  a  vektor uchun unga qarama-qarshi vektor deb ataluvchi  –a  vektor mavjud
bo’lib,  a+(-a)=0  bo’ladi. 
5 0
.  (a+b)= a+ b  (ko’paytirishning qo’shishga nisbatan distributivlik xossasi) 
6 0
1.  a=a  (har qanday vektor 1 songa ko’paytirilsa, shu vektorning o’zi hosil bo’ladi). 
6-ta’rif.  Ixtiyoriy  a  vektor bilan birga yo’nalishi  a  vektorga qarama-qarshi, moduli ga
teng bo’lgan vektor,  a  vektorga qarama-qarshi vektor deb ataladi va – a  bilan 
belgilanadi: - a =( -a
1 , -a
2 ,. . ., -a
n ) . 
Ravshanki,  a+(-a)=0  bo’ladi. 
5 7-ta’rif . Ikkita ixtiyoriy  a  va  b  vektorlarning ayirmasi deb, shunday uchinchi  c  
vektorga aytiladiki,  c  vektor bilan  b  vektorning yig’indisi  a  vektorga teng, ya’ni: 
c=a+(-b)= a-b.  
8-ta’rif . Berilgan  n  natural son uchun hamma  n  o’lchamli vektorlar to’plami  n 
o’lchamli vektor fazo deyiladi  va R n
 bilan beligilanadi. 
3. Vektorlarni koordinata vektorlari buyicha yoyish  
Bu yerda ixtiyoriy vektorni koordinata vektorlari yoki ortlar buyicha yoyish 
masalasini R n 
vektor fazoda qaraymiz. 
1-ta’rif . R n
 fazodagi koordinatalaridan biri birga qolgan koordinatalari nolga teng 
bo’lgan vektorlar  koordinata vektorlari  yoki  ortlar  deb ataladi va ular quyidagicha 
yoziladi: 
e
1 =(1,0,. . ..0) 
e
2 =(0,1,. . ..0) 
. . .. . .. . .. . .. . .. 
e
n =(0,0,. . ..1) 
Demak, R n
 vektor fazoda  n  ta koordinata vektorlari mavjud. 
Vektorlar ustida amallar ta’rifidan,  a=(a
1 , a
2 ,. . ., a
n )  vektorni  a=a
1 e
1 ,+a
2 e
2 , + .  .
+a
n ye
n   ko’rinishda tasvirlash mumkinligi kelib chiqadi. 
Haqiqatan, bu tenglikni 
(a
1 , a
2 ,. . ., a
n )=a
1  (1,0,. . ..0)+ a
2  (0,1. . ..0)+. . .+ a
n  (0,0,. . ..1)  
ko’rinishda yozib olib o’ng tomondagi amallarni bajarsak, o’ng tomonda  (a
1 , a
2 ,. . ., 
a
n ) vektor hosil bo’ladi. 
Xususiy holda, R 2 
fazoda  (a
1 , a
2 )  vektor uchun 
a = a
1 e
1 ,+a
2 e
2  (e
1 =(1,0), e
2 =(0,1).  
R 3
 fazoda esa  a=(a
1 , a
2 ,. . ., a
3 )  vektor uchun 
a=a
1 e
1 ,+a
2 e
2 ,. . .+a
3 e
3  (e
1 =(1,0,0), e
2 =(0,1,0), e
3 (0,0,1))
 
ko’rinishdagi yoyilmalar o’rinli bo’ladi. 
*Eslatma. Kordinata birlik vektorlari  R
2   va  R
3   fazolarda mos ravishda  i, j  va  i, j, k  
harflar orqali belgilash qabul qilingan. Ular orqali  a  vektori quyidagicha yoziladi: bu 
yerda  a
x , a
y , a
2  lar  a  vektorning koordinata o’qlaridagi proyksiyalari. Endi  R
3  fazoda 
va vektorlarning kolleniarlik shartini keltiramiz. Agar  a  va  b  vektorlar bir to’g’ri 
6 chiziqda yoki o’zaro parallel chiziqlarda yotsa ular  kolleniar vektorlar  deyiladi. Bu 
holda shart bajariladi, bu yerda qandaydir son. Vektorni songa ko’paytirilsa uning 
koordinata o’qlaridagi proektsiyalari ham shu songa ko’paytiriladi, ya’ni , , va 
aksincha. Bu tengliklarni ushbu ko’rinishda ham yozish mumkin. 
Demak, ikki  a  va  b  vektorlar kolleniar bo’lishi uchun ularning proektsiyalari 
proportsional bo’lishi zarur va etarli. 
Ta’kidlab o’tamizki n-o’lchovli vektorlarning kolleniarlik shartlari ham yuqoridagi 
kabi keltiriladi (ko’rsating). 
4. Vektorning normasi 
R 3
 fazoda vektorning  moduli (uzunligi)  tushunchasini R n
 fazodagi vektorlar uchun 
umumlashtiramiz. 
1-ta’rif.  R n
 vektor fazodagi  a= (a
1 , a
2 . . . a
n )  vektorning  uzunligi yoki normasi  deb, 
bilan belgilanuvchi ushbu songa aytiladi: 
= 
Vektorning normasi quyidagi xossalarga ega: 
1 0
. Ixtiyoriy  a  vektor uchun >0 va  a =0 bo’lganda, =0 bo’ladi va aksincha. 
Xususiy holda, R 3
 fazoda  a=(a
1,  a
2,  a
3 ) vektor uchun son uning uzunligini ifodalaydi. 
Bunda 1) va agar  a=0  bo’lsa; 2) uchun = ; 
3) xossalar o’rinli. 3) xossa uchburchak tengsizligi deb ataladi (uchburchak ikki 
tomonining yig’indisi uchinchi tomondan kichik emas). Bunda, tenglik belgisi 
uchburchak uchlaridagi nuqtalar bir to’g’ri chiziq ustida yotgandagina o’rinli bo’ladi 
(isbotlang). 
Shuni ta’kidlab o’tamizki, R 1
 fazoda norma haqiqiy sonning modulini angladi. 
2-ta’rif.  Vektorning normasi formula yordamida kiritilgan R n 
vektor fazo  n-o’lchamli
evklid fazosi  deb ataladi. 
5. Vektorlarning skalyar ko’paytmasi  
Ma’lumki, vektorlarning skalyar ko’paytmasi nafaqat matematikada, balki mexanika 
va fizikada keng tatbiqlarga ega. 
1-ta’rif . A=(a
1 , a
2 ,. . ., a
n )  va  b=(b
1 , b
2 ,. . .,b
n )  vektorlarning  skalyar ko’paytmasi  ( a,b )
deb ushbu formula 
( a,b )=  a
1 b
1  + a
2 b
2  +. . .+ a
n b
n  =  (1) 
7 bilan aniqlanuvchi songa aytiladi. 
Skalyar ko’paytma quyidagi xossalarga ega. 
1 0
. ( a,b )= ( b , a ) (Kommutativlik). 
2 0
. (  a,b)= (a, b)  (Songa ko’paytirishga nisbatan assosiativlik). 
3 0
. (a,b+c)= (a,b)+ (a, c) (Dis tributivlik). 
4 0
. Agar  a  0 bo’lsa  (a, a)>0.  
(1) formuladan  (a, a)= a
1 a
1  + a
2 a
2  +. . .+ a
n a
n =a
1 2
+a
2 2
 +...+a
n 2
 
kelib chiqadi va bundan  (a,a)=  yoki = ekanligini topamiz. Ba’zan  (a,a)  ko’paytma  a 2
 
bilan ham belgilanadi. Bu holda  a 2
= . 
1 0
-4 0
 xossalarning isbotini R 3
 fazoda qarab chiqamiz: 
a=(a
1 , a
2 , a
3 ) b=(b
1 , b
2 , b
3 )  vektorlar berilgan bo’lsin.  a  va  b  vektorlarning skalyar 
ko’paytmasi   (a , b)= a
1 b
1 +a
2 b
2  +a
3 b
3  sondan iborat bo’ladi. 
Xossalarni isbotlash uchun skalyar ko’paytma ta’rifidan va sonlar ustida amallarning 
xossalaridan foydalanish kifoya.  Haqiqatan, 
1. (a,b)= a
1 b
1 +a
2 b
2  +a
3 b
3 =b
1 a
1 +b
2 a
2  +b
3 a
3 =(b, a).  
2. ( a, b)= a
1 b
1 + a
2 b
2 + a
3 b
3 = (a
1 b
1 +a
2 b
2 +a
3 b
3 )= (a, b).  
3. (a, b+c)= a
1  (b
1 +c
1 )+a
2  (b
2 +c
2 )+a
3 (b
3 +c
3 )= a
1 b
1 +a
1 c
1 +a
2 b
2 +a
2 c
2 +a
3 b
3 +a
3 c
3 = 
a
1 b
1 +a
2 b
2 + a
3 b
3 +a
1 c
1 +a
2 c
2 +a
3 c
3 =(a,b)+(a,c).  
4. (a , a)= a
1 a
1 +a
2 a
2  +a
3 a
3 =a
1 2
+ a
2 2
 +a
3 2 
> 0.  
Koshi tengsizligini skalyar ko’paytma va norma ta’rifiga ko’ra quyidagicha 
yozish mumkin: 
(a,b) 2
 . 
Buning har ikkala tomonidan kvadrat ildiz chiqarib, Koshi formulasining 
boshqa ko’rinishiga ega bo’lamiz: 
. 
Shunday qilib biz skalyar ko’paytmaning yana bir asosiy xossasini isbotladik, 
ya’ni ikki vektor skalyar ko’paytmasining moduli ular normalarining 
ko’paytmasidan oshmaydi. 
2-ta’rif .  Agar ( a,b)= 0 bo’lsa  a  va  b  vektorlar ortogonal deyiladi. 
Bu ta’rif uch o’lchamli fazoda vektorlarning perpendikulyarlik sharti bilan mos
8 tushadi. Yani vektorlar perpendikulyar bo’lsa ularning skalyar ko’paytmasi 
nolga teng. Aksincha, noldan farqli vektorlarning skalyar ko’paytmasi nolga 
teng bo’lsa, vektorlar perpendikulyar bo’ladi. 
*Endi  R
3  fazoda vektorlarning perpendikulyarlik shartini keltiramiz. vektorlar 
berilgan bo’lsin. Ularni o’zaro skalyar ko’paytirib  (i, i)=(j, j)=(k, k)=1, (i, 
j)=(j, i)= (i, k)= (k, i)=(j,k) =(k, j)=0  larni hisobga olsak, 
tenglikka ega bo’lamiz. Bundan ikki  a  va  b  vektorlarning perpendikulyarlik 
sharti ekanligi kelib chiqadi.  R
n  fazoda ham vektorlarning perpendikulyarlik 
sharti shunga o’xshash bo’ladi .
Matematika va tabiatshunoslik fanlarida skalyar ko’paytmaning boshqacha 
ta’rifidan ko’proq foydalaniladi. 
Ta’rif. Ikki vektorning skalyar ko’paytmasi deb ular uzunliklari 
ko’paytmasining ular orasidagi burchak kosinusiga ko’paytmasiga teng 
bo’lgan songa aytiladi: 
Bu ta’rifga ko’ra  a  va  b  vektorlar orasidagi burchakning kosinusi 
bo’lib, uning proyeksiyalar yordamidagi yozuvi ko’rinishda bo’ladi. 
9 C++ da  vektorlar bilan ishlash  
C++ dasturlash tilida vektorlar bilan ishlash uchun STL (Standard Template 
Library) `vector` sinfidan foydalaniladi. Bu sinf dinamik massivlarni yaratishga, 
ularga elementlar qo'shishga, o'chirishga va boshqa ko'plab amallarni bajarishga 
imkon beradi. Quyida vektorlar bilan ishlashning asosiy usullari va misollari 
keltirilgan.
Vektor E'lon Qilish va Boshlash
Vektorga Element Qo'shish va O'chirish
10 Vektor Elementlariga Kirish
Vektorning O'lchami va Sig'imini Tekshirish
C++ dasturlash tilida `vector` sinfidan foydalanishning bir qancha afzalliklari 
bor. Quyida ular haqida batafsilroq ma'lumot berilgan:
 1. Dinamik O‘lcham
   - Avtomatik O‘lchamni O‘zgarish: Vektorlar o‘z o‘lchamlarini avtomatik 
ravishda o‘zgartira oladi. Bu, dasturchining qo‘lda o‘lchamni boshqarish zaruriyatini
bartaraf etadi.
11  2. Oson Qo‘shish va O‘chirish
   - push_back va pop_back Funksiyalari: `vector` sinfi oxiriga element qo‘shish
va oxirgi elementni o‘chirishni osonlashtiradi.
 3. Xavfsiz Kirish
   - at() Funksiyasi: `at()` funksiyasi indeks chegaralarini tekshiradi va agar 
indeks noto‘g‘ri bo‘lsa, istisno (exception) tashlaydi. Bu, xatoliklarni aniqlashni 
osonlashtiradi.
 4. 
Moslashuvchan Sig‘im Boshqaruvi
   - capacity va reserve Funksiyalari: `vector` sinfi sig‘imini boshqarish 
imkonini beradi. Bu, katta hajmli ma'lumotlar bilan ishlaganda samaradorlikni 
oshirishga yordam beradi.
 5. Iteratorlar Bilan Ishlash
   - iteratorlar: `vector` sinfi iteratorlar yordamida oson va qulay ravishda ko‘p 
elementli amallarni bajarishga imkon beradi.
   
 6. Ko‘p Foydali Funksiyalar
   - `vector` sinfi juda ko‘p qulay funksiyalarni taklif etadi, masalan `size()`, 
`clear()`, `empty()`, `insert()`, `erase()`, va boshqalar.
12  7. Standart Kutubxona Bilan Integratsiya
   - STL Algoritmlari Bilan Moslik: `vector` sinfi STL algoritmlari bilan yaxshi 
integratsiyalashgan. Masalan, `sort`, `find`, `accumulate` kabi funksiyalar bilan birga
ishlatish mumkin.
 8. Ko‘p Maqsadli Foydalanish
   - `vector` sinfi ko‘p turdagi ma'lumotlar bilan ishlashga mos keladi, 
shuningdek, uning yordamida osonlik bilan kompleks ma'lumot tuzilmalari yaratish 
mumkin.
13 C++ da  vektorlarni skalyar ko`paytmasini topish moduli
C++ dasturlash tilida vektorlarning skalyar ko‘paytmasini (dot product) 
hisoblash uchun modul yaratish uchun avvalo ikki vektorning elementlarini 
o‘zaro ko‘paytirib, ularning yig‘indisini olish kerak. 
Biz quyida, ushbu vazifani bajaradigan dastur kodini ko‘rib chiqamiz.
Dastur Kodi:
#include <iostream>
#include <vector>
#include <stdexcept>
using namespace std;
double dotProduct(const vector<double>& vec1, const 
vector<double>& vec2) {
     if (vec1.size() != vec2.size()) {
         throw invalid_argument("Vektorlarning 
o'lchami bir xil bo'lishi kerak.");
     }
     double product = 0.0;
     for (size_t i = 0; i < vec1.size(); ++i) {
         product += vec1[i] * vec2[i];
     }
14      return product;
}
int main() {
     try {
         vector<double> vec1 = {1.0, 2.0, 3.0};
         vector<double> vec2 = {4.0, 5.0, 6.0};
         double result = dotProduct(vec1, vec2);
         cout << "Skalyar ko'paytma: " << result << 
endl;
     } catch (const exception& e) {
         cerr << "Xato: " << e.what() << endl;
     }
     return 0;
}
Dasturdan Foydalanish
Yuqoridagi kod yordamida siz ikki vektorning skalyar ko‘paytmasini osongina 
hisoblab olishingiz mumkin. Faqatgina vektorlarning o‘lchamlari bir xil bo‘lishi 
kerak. Agar o‘lchamlar bir xil bo‘lmasa, dastur istisno tashlaydi va xato xabarini 
ko‘rsatadi.
Dastur natijasi:
15 Dastur ishlashi:
1. Headerlarni kiritish:
   - `#include <iostream>`: Konsolga chiqish va ma'lumot olish uchun.
   - `#include <vector>`: Vektor ma'lumot turidan foydalanish uchun.
   - `#include <stdexcept>`: Istisnolarni qo'lga kiritish uchun.
2. dotProduct funksiyasi:
   - Bu funksiya ikkita vektorni qabul qiladi (`vec1` va `vec2`) va ularning 
skalyar ko‘paytmasini hisoblaydi.
   - Agar vektorlarning o‘lchami bir xil bo‘lmasa, `invalid_argument` 
istisnosini tashlaydi.
16    - `for` tsikli yordamida har bir elementni o‘zaro ko‘paytirib, yig‘indisini 
`product` o‘zgaruvchisiga qo‘shadi.
3. main funksiyasi:
   - Ikkita misol vektor e'lon qiladi va qiymatlarini beradi.
   - `dotProduct` funksiyasini chaqirib, natijani hisoblaydi.
   - Natijani konsolga chiqaradi.
   - Agar istisno yuzaga kelsa, uni qo‘lga oladi va xato xabarini chiqaradi.
17 Xulosa
C++ dasturlash tilida vektorlarning skalyar ko‘paytmasini hisoblash uchun 
modul ishlab chiqish ko‘p jihatdan foydalidir. Quyida ushbu modulning afzalliklari 
va natijalari haqida qisqacha xulosa keltirilgan.
 1. Qulaylik va Soddalik
   - Foydalanish Qulayligi: Tayyor modul yordamida ikki vektorning skalyar 
ko‘paytmasini hisoblash juda oson. Bu dasturchilar uchun foydalanish qulayligini 
oshiradi.
   - Kodni Tushunarli Qilish: Funksiyalardan foydalanish kodni tushunarli va 
o‘qilishi oson bo‘lishiga yordam beradi.
2. Qayta Ishlatish Imkoniyati
   - Modulni Qayta Ishlatish: Modul bir marta yozilganidan keyin ko‘plab 
loyihalarda qayta ishlatilishi mumkin. Bu vaqt va kuchni tejashga yordam beradi.
   - Moduliy Tuzilish: Funksiyalar alohida modul ko‘rinishida tashkil 
qilinganligi sababli, kodning modulliligini oshiradi va saqlashni osonlashtiradi.
3. Xatolarni Qisqartirish
   - Chegaralarni Tekshirish: `at()` funksiyasi yoki istisno (exception) 
mexanizmlaridan foydalanish indeks chegaralarini tekshirish orqali xatoliklarning 
oldini olishga yordam beradi.
   - Kodning Ishonchliligi: Chegaralarni tekshirish va istisnolarni qo‘lga olish 
orqali kodning ishonchliligini oshirish mumkin.
4. Oson Integratsiya
   - Standart Kutubxona: Vektor sinfi C++ ning standart kutubxonasida mavjud 
bo‘lgani uchun boshqa standart funksiyalar va algoritmlar bilan osongina 
integratsiya qilinadi.
- Platformadan Mustaqillik: `vector` sinfi va funksiyalar C++ standart 
kutubxonasining bir qismi bo‘lganligi sababli turli platformalarda foydalanilishi 
mumkin.
18 Foydalanilgan adabiyotlar
1.   Жураев   Т.Ж.,   Худойберганов   Р.Х.,   Ворисов   А.К.,   Мансуров   Х.,   Олий
математика   асослари.   Дарслик.   -   Т.:   Ўзбекистон,   1999.   290   бет.   2.Rajabov   F.,
Masharipova   S.,   Madrahimov   R.   Oliy   matematika.   T.:   "TURON-IQBOL".   2007.
399b.
3.   Fayzullayeva   S.F.   Ehtimollar   nazariyasidan   masalalar   to'plami:   o'quv
qo'llanma.-T.: O'zbekiston faylasuflari milliy jamiyati. 2006. 112-b.
4.   Высшая   математика   для   экономистов .   Под редакций Н.Ш.Кремера  М.:
ЮНИТИ, 2001, 601 ст.
5.   Urdushev   X.,   Usmonov   R.   Iqtisodiy   matematik   usullar   va   modellardan
amaliy mashg'ulotlar. Samarqand 2006
6.   Urdushev   X.,   Boychaqayev   M.   Matematik   dasturlash   fanidan   ma'ruza,
amaliy, laboratoriya mashg'ulotlari va mustaqil ta'lim uchun uslubiy qo'llanma.
7.         С.   К.   Ганиев.   Электрон   хисоблаш   машиналари   ва   системалари.   –   Т
«Укитувчи» 1990.
8.                 Аmaliy   matematika,   dasturlash   va   kompyuterning   dasturiy   ta’minoti:
Оliy   o’quv   yurtlari   uchun   qo’llanma/   Т.Х.   Хоlmatov,   N.I.   taylaqov   -Т.:   Меhnat,
2000.-304 b.
9.                 Hisoblash   matematikasi   va   dasturlashdan   laboratoriya   ishlari:   [Оliy
o’quv yurtlari uchun qo’llanma]. -Т.: O’qituvchi, 1993.-176 b.
10.   Thomas   H.   Cormen,   Charles   E.   Leiserson,   Ronald   L.   Rivest,   va   Clifford
Stein   tomonidan   yozilgan   "Introduction   to   Algorithms"   kitobi   -   Algoritmlar
nazariyasi va amaliyoti bo'yicha asosiy manba.
19

MAVZU: C++ da vektorlarni skalyar ko`paytmasini topish modulini ishlab chiqarish. Reja I. Kirish II. Asosiy qism 1. Vektorlarni skalyar ko`paytmasini topish 2. C++ da vektorlar bilan ishlash. 3 C++ da vektorlarni skalyar ko`paytmasini topish moduli III. Xulosa IV Foydalanilgan adabiyotlar 1

Kirish Vektor nisbatan yangi matematik tushuncha hisoblanadi. «Vektor» terminining o‘zi 1845 yilda Vilyam Rouen Gamilton tomonidan kiritilgan 1 . Vektor tushunchasiga son qiymati va yo‘nalishi bilan xarakterlanuvchi ob’ektlar bilan ish ko‘rilganida duch kelinadi. Bunday ob’ektlarga kuch, tezlik, tezlanish kabi fizik kattaliklar misol bo‘ladi. Vektor matematikaning turli bo‘limlarida, masalan, elementar, analitik va differensial geometriya bo‘limlarida qo‘llaniladi. Vektorli algebra fizika va mexanikanig turli bo‘limlariga, kristallografiyaga, geodeziyaga tatbiq qilinadi. Vektorlarsiz nafaqat klassik matematika, balki boshqa ko‘plab fanlarni tasavvur qilib bo‘lmaydi. Vektorlar ustida qo‘shish va songa ko‘paytirish, amallarini, vektorlarning skalyar, vektor va aralash ko‘paytmalarini, vektorlarni baziz fazoda almashtirishni, vektorlarni proyeksiyalashni va shu kabi masalalarni o‘rganish vektorli algebraning predmeti hisoblanadi. Vektorlar, matematikada va kompyuter grafikasi kabi ko‘plab sohalarda keng qo‘llaniladi. Vektorlarning skalyar ko‘paytmasi (yoki dot product) ikki vektor orasidagi geometrik munosabatlarni aniqlashda muhim ahamiyatga ega. Skalyar ko‘paytma, ikki vektorning mos keluvchi elementlarini ko‘paytirib, ularning yig‘indisini olish orqali hisoblanadi. Bu amaliyot, ko‘plab ilmiy hisob-kitoblar va algoritmlarda qo‘llaniladi. Vektorlarning skalyar ko‘paytmasi nima? Ikki vektor a va b ning skalyar ko‘paytmasi, ularning mos elementlarini ko‘paytirib, yig‘indisini olish orqali aniqlanadi: a*b= ∑ ( a i * b i ) bu yerda a i va b i mos ravishda a va b vektorlarining i -chi elementlari, va n esa vektorlarning uzunligi. Skalyar ko‘paytmaning asosiy qo‘llanilish joylaridan biri, ikki vektor orasidagi burchakni aniqlash va vektorlarning ortogonal (perpendikulyar) bo‘lishini tekshirishdir. Agar ikki vektorning skalyar ko‘paytmasi nolga teng bo‘lsa, demak ular ortogonaldir. 2

C++ dasturlash tili, uning yuqori samaradorligi va kuchli standart kutubxonasi tufayli ilmiy va texnik hisob-kitoblar uchun keng qo‘llaniladi. STL (Standard Template Library) ning `vector` sinfi, dinamik massivlar bilan ishlashni osonlashtiradi va skalyar ko‘paytmani hisoblash uchun qulay vosita hisoblanadi. Vektorlarning skalyar ko‘paytmasini hisoblash moduli. Ikki vektorning skalyar ko‘paytmasini hisoblash moduli quyidagi talablarni qondirishi kerak: 1. Ikki vektorni qabul qilish: Funksiya ikkita vektor qabul qilishi kerak. 2. Vektorlarning uzunligini tekshirish: Funksiya, vektorlarning uzunligi bir xil ekanligini tekshirishi va agar bir xil bo‘lmasa, xatolik (exception) tashlashi kerak. 3. Skalyar ko‘paytmani hisoblash: Funksiya, ikki vektorning mos elementlarini ko‘paytirib, yig‘indisini qaytarishi kerak. 3

Vektorlarni skalyar ko`paytmasini topish 1. Fazo tushunchasi Fanda fazo tushunchasi har xil ma’nolarga ega. Fazoni filosofik talqin qiladigan bo’lsak, u materiyaning yashash shaklini anglatadi. Haqiqiy dunyoning fazoviy ko’rinishi undagi mikdoriy munosabatlar bilan birgalikda matematikaning o’rganiladigan predmeti bo’lib, bunda u geometriyaning bosh mazmunini tashkil qiladi. Maktab geometriyasida fazo tushunchasi sodda ko’rinishda uchraydi, fazo deganda ma’lum aksiomalar sistemasini qanoatlantiruvchi uch o’lchamli ( x, y, z ) haqiqiy sonlar uchligidan iborat nuqtalar to’plami tushuniladi. Fazoning har bir nuqtasi uchta koordinatalar orqali aniqlanadi va aksincha, har bir uchta sonlarning tartiblangan sistemasi fazoda qandaydir nuqtani aniqlaydi. Shunday qilib, uch o’lchamli fazoni uchta haqiqiy son sistemasi bo’lgan (x, y, z) nuqtalarning to’plami deb qarash mumkin. Bunda ikki A (x 1 , y 1 , z 1 ) B (x 2 , y 2 , z 2 ) nuqtalar orasidagi masofa formula bilan aniqlanadi. Fazo tushunchasi matematikada ancha murakkab tuzilishga ega bo’lgan ob’yektlar uchun umumlashtiriladi. Matematikada fazo deganda, ixtiyoriy ob’yektlar (sonlar to’plami, funksiyalar to’plami va h.k.) majmuasi tushuniladi va ular orasida uch o’lchamli fazoda o’rganilgan munosabatlarga o’xshash munosabatlar o’rnatiladi. Bunda ikki nuqta orasidagi masofa tushunchasi muhim o’rin egallaydi. 2. n-o’lchamli vektor fazo Geometriya, mexanika va fizikada shunday ob’yektlar uchraydiki, ular bir yoki bir necha haqiqiy sonning tartiblangan sistemasi bilan aniqlanadi. Masalan, (uch o’lchamli) fazoda har qanday vektor o’zining uchta komponentasi bilan aniqlanadi. Fazo tushunchasini umumlashtirish vektor tushunchasini umumlashtirish bilan bog’liq. Vektorning eng sodda umumlashtirilishi n-o’lchamli vektor tushunchasidir. 1-ta’rif . Tartib bilan yozilgan n ta haqiqiy son sistemasi (majmuasi), ya’ni a=(a 1 , a 2 ,. . .. . .. . ., a n ) n-o’lchamli vektor deyiladi. Bunda, a 1 , a 2 ,. . .. . .. . ., a n sonlar vektorning koordinatalari deyiladi. Kelajakda, vektorlarni a,b,c va h.k. lotin alifbosining harflari bilan, ularning koordinatalarini esa shu harflarning indekslari yordamida yozamiz. 4

2-ta’rif . Ikkita a=(a 1 , a 2 ,. . ., a n ) va b=(b 1 , b 2 ,. . ., b n ) vektorlarning mos koordinatalari teng, yani a 1 =b 1 , a 2 =b 2 ,. . . a n =b n bo’lsa, bu vektorlar teng deb ataladi. Bu ta’riflardan ko’rinadiki, vektor bu n -ta haqiqiy son to’plami bo’libgina qolmay, balki elementlari tartiblangan sistema hamdir. Berilgan vektorning koordinatalarini boshqa tartibda yozilsa, umumiy holda boshqa vektor hosil bo’ladi. Masalan, a= (1,2,3) va b= (2,3,1) vektorlar boshqa-boshqa vektorlardir. Misollar. 1. Tekislikdagi vektorlar ikki o’lchamli vektorga misol bo’ladi: a=(a 1 ,a 2 ), uch o’lchamli fazodagi vektorlar uch o’lchamli vektorga misol bo’ladi: a = (a 1 ,a 2 ,a 3 ) 2. Bir o’zgaruvchili (n-1) darajali f(x)=a 0 +a 1 x+. . .+a n-1 x n-1 ko’phadni n o’lchamli a = (a 0 ,a 1 ,... a n-1 ) vektor sifatida qarash mumkin. Endi, n o’lchamli vektorlar ustida chiziqli amalllar kiritamiz. 3-ta’rif . Ikki a=(a 1 , a 2 ,. . ., a n ) va b=(b 1 , b 2 ,. . .,b n ) vektorning yig’indisi deb a+b vektorga aytiladi va u quyidagicha aniqlanadi: a+b=(a 1 +b 1 a 2 +b 2 . . ., a n +b n ) 4-ta’rif . a=(a 1 , a 2 ,. . ., a n ) vektorning haqiqiy songa ko’paytmasi deb, a vektorga aytiladi va u quyidagicha aniqlanadi: a=( a 1 , a 2 , ... a n ) 5-ta’rif. Hamma koordinatalari nolga teng bo’lgan vektor nol vektor deyiladi va 0=(0, 0, . . ., 0) orqali yoziladi. Vektorlarni qo’shish va songa ko’paytirish amali vektorlar ustida chiziqli amallar deyiladi va ular quyidagi xossalarga ega bo’ladi: 1 0 . a+b=b+a (qo’shishning kommutativlik xossasi). 2 0 . (a+b)+c=a+(b+c) (qo’shishning assosiativlik xossasi). 3 0 . Ixtiyoriy a vektor uchun a+0=a tenglik o’rinli bo’ladi. 4 0 . Har bir a vektor uchun unga qarama-qarshi vektor deb ataluvchi –a vektor mavjud bo’lib, a+(-a)=0 bo’ladi. 5 0 . (a+b)= a+ b (ko’paytirishning qo’shishga nisbatan distributivlik xossasi) 6 0 1. a=a (har qanday vektor 1 songa ko’paytirilsa, shu vektorning o’zi hosil bo’ladi). 6-ta’rif. Ixtiyoriy a vektor bilan birga yo’nalishi a vektorga qarama-qarshi, moduli ga teng bo’lgan vektor, a vektorga qarama-qarshi vektor deb ataladi va – a bilan belgilanadi: - a =( -a 1 , -a 2 ,. . ., -a n ) . Ravshanki, a+(-a)=0 bo’ladi. 5