Sharob rashidov nomidagi samarqand davlat universiteti matematika fakulteti matematika va informatika



Download 201,08 Kb.
bet1/4
Sana23.07.2022
Hajmi201,08 Kb.
#841009
  1   2   3   4
Bog'liq
Matimatika va informatika


OLIY VA O‘RTA MAXSUS TA’LIM VAZIRLIGI
SHAROB RASHIDOV NOMIDAGI SAMARQAND DAVLAT UNIVERSITETI
MATEMATIKA FAKULTETI
MATEMATIKA VA INFORMATIKA


YO’NALISHI 275-A GURUH TALABASI


ASRITDINOVA OZODANING
Dasturlash asoslari va tillari
C++ dasturlash tili yordamida matritsalar va determinatlar ustida amallar bajaruvchi dasturlar yaratish
MAVZUSIDA


KURS ISHI

Kurs ishi rahari: F.M.Nazarov

Samarqand-2021

REJA:


  1. KIRISH

  2. Asosiy qisim

I Bob C++ dasturlash tili yordamida matritsalar va determinatlar ustida amallar bajaruvchi dasturlar yaratish
1. Matritsalar ustida turli amallar
2. Matritsaning determinantiga misolar keltiriladi
3. C++ da matritsaning aniqlovchisi
III. Xulosa
IV Foydalanilgan adabiyotlar

Kirish


Ushbu kurs ishi Bu kodni optimallashtiradi, biz ko'p kod yozishimiz shart emas.
Aytaylik, siz 3 ta raqamni (531, 883 va 781) tub sonmi yoki yo'qligini tekshirishingiz kerak. Funksiyadan foydalanmasdan, tub son mantiqini 3 marta yozish kerak. Shunday qilib, kodning takrorlanishi mavjud.
Ammo funksiyalardan foydalansangiz, mantiqni faqat bir marta yozishingiz kerak va uni bir necha marta qayta ishlatishingiz mumkin.
C++ dasturida matritsaning aniqlovchisi
Ushbu qo'llanmada biz matritsaning determinantini qanday topishni o'rganamiz.
Keling, matritsaning determinantini topish bosqichlarini ko'rib chiqaylik.
Matritsani ishga tushiring.
Matritsaning determinantini topish funksiyasini yozing.
Agar matritsaning o'lchami 1 yoki 2 bo'lsa, matritsaning determinantini toping. Bu oddiy narsa
Matritsalar haqida kirish uchun quyidagi maqolaga murojaat qilishingiz mumkin: Matritsaga kirish
Ushbu maqolada biz matritsalar va ularning xossalari ustida turli operatsiyalarni ko'rib chiqamiz:
Matritsalarni qo'shish -
Ikkita A m*n va Bm*n matritsalarining qoʻshilishi Cm*n matritsasini beradi. C ning elementlari A va B dagi mos keladigan elementlarning yig'indisidir, ularni quyidagicha ko'rsatish mumkin:

Matrisa ustuda turli amallar:


Matritsalarni ayirish kommutativ emas, bu A-B ≠ B-A ni bildiradi
Matritsalarni ayirish assotsiativ emas, ya'ni A-(B-C) ≠ (A-B)-C
A, B va A-B matritsalarining tartibi har doim bir xil
Agar A va B ning tartibi boshqacha bo'lsa, A-B ni hisoblab bo'lmaydi
Ayirish operatsiyasining murakkabligi O(m*n) ga teng, bunda m*n matritsalar tartibi
Matritsalarni ko'paytirish -
Ikkita Am*n va Bn*p matritsalarini ko‘paytirish natijasida Cm*p matritsa hosil bo‘ladi. Bu C=A*B ni hisoblash uchun A dagi ustunlar soni B dagi qatorlar soniga teng bo'lishi kerakligini bildiradi. c11 elementini hisoblash uchun A ning 1-qatorining elementlarini B ning 1-ustuniga ko'paytiring va ularni (5*1+6*4) qo'shing, ular quyidagicha ko'rsatilishi mumkin:

Bu kodni optimallashtiradi, biz ko'p kod yozishimiz shart emas.


Aytaylik, siz 3 ta raqamni (531, 883 va 781) tub sonmi yoki yo'qligini tekshirishingiz kerak. Funksiyadan foydalanmasdan, tub son mantiqini 3 marta yozish kerak. Shunday qilib, kodning takrorlanishi mavjud.
Ammo funksiyalardan foydalansangiz, mantiqni faqat bir marta yozishingiz kerak va uni bir necha marta qayta ishlatishingiz mumkin.
C++ dasturida matritsaning aniqlovchisi
Ushbu qo'llanmada biz matritsaning determinantini qanday topishni o'rganamiz.
Keling, matritsaning determinantini topish bosqichlarini ko'rib chiqaylik.
Matritsani ishga tushiring.
Matritsaning determinantini topish funksiyasini yozing.
Agar matritsaning o'lchami 1 yoki 2 bo'lsa, matritsaning determinantini toping. Bu oddiy narsa
Matritsalar haqida kirish uchun quyidagi maqolaga murojaat qilishingiz mumkin: Matritsaga kirish
Ushbu maqolada biz matritsalar va ularning xossalari ustida turli operatsiyalarni ko'rib chiqamiz:
Matritsalarni qo'shish -
Ikkita A m*n va Bm*n matritsalarining qoʻshilishi Cm*n matritsasini beradi. C ning elementlari A va B dagi mos keladigan elementlarning yig'indisidir, ularni quyidagicha ko'rsatish mumkin:


Matritsalarni qo'shish algoritmi quyidagicha yozilishi mumkin:

for i in 1 to m
for j in 1 to n
cij = aij + bij

Vaqt murakkabligi: O(n * m)


Yordamchi bo'shliq: O(n * m)
Asosiy fikrlar:
• Matritsalarni qo‘shish kommutativ bo‘lib, A+B = B+A degan ma’noni anglatadi
• Matritsalar qo‘shilishi assotsiativ bo‘lib, bu A+(B+C) = (A+B)+C degan ma’noni anglatadi.
• A, B va A+B matritsalarining tartibi har doim bir xil
• Agar A va B tartibi boshqacha bo‘lsa, A+B ni hisoblab bo‘lmaydi
• Qo‘shish amalining murakkabligi O(m*n) ga teng, bunda m*n matritsalar tartibi

#include
using namespace std;


int main()
{


int n = 2, m = 2;
int a[n][m] = { { 2, 5 }, { 1, 7 } };
int b[n][m] = { { 3, 7 }, { 2, 9 } };


int c[n][m];
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++) {
c[i][j] = a[i][j] + b[i][j];
}


for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++)
cout << c[i][j] << " ";
cout << endl;
}
return 0
};
Natiyja
5 12
3 16
Matritsalarni ayirish algoritmi quyidagicha yozilishi mumkin:
or i in 1 to m
for j in 1 to n
cij = aij-bij

#include
using namespace std;


int main()
{
int n = 2, m = 2;
int a[n][m] = { { 2, 5 }, { 1, 7 } };
int b[n][m] = { { 3, 7 }, { 2, 9 } };
int c[n][m];
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++) {
c[i][j] = a[i][j] - b[i][j];
}


for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++)
cout << c[i][j] << " ";
cout << endl;
}
return 0
};
Natiyja
-1 -2
-1 -2


m*n tartibli A va n*p tartibli B matritsalarni ko‘paytirish algoritmi quyidagicha yozilishi mumkin




for i in 1 to m
for j in 1 to p
cij = 0
for k in 1 to n
cij += aik*bkj


#include
using namespace std;


int main()
{


int n = 2, m = 2;
int a[n][m] = { { 2, 5 }, { 1, 7 } };
int b[n][m] = { { 3, 7 }, { 2, 9 } };


int c[n][m];
int i, j, k;
for (i = 0; i < n; i++)
{
for (j = 0; j < n; j++)
{
c[i][j] = 0;
for (k = 0; k < n; k++)
c[i][j] += a[i][k] * b[k][j];
}
}


for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
cout << c[i][j] << " ";
cout << endl;
}
return 0;
}
Natiyja
16 59
17 70
Asosiy fikrlar:
Matritsalarni ko'paytirish kommutativ emas, bu A*B ≠ B*A ni bildiradi
Matritsalarni ko'paytirish assotsiativ bo'lib, A*(B*C) = (A*B)*C degan ma'noni anglatadi.
A*B ni hisoblash uchun A dagi ustunlar soni B dagi qatorlar soniga teng bo'lishi kerak
A*B ning mavjudligi B*A ning mavjudligini anglatmaydi
Ko'paytirish amalining murakkabligi (A*B) O(m*n*p), bunda m*n va n*p mos ravishda A va B tartibidir.
A*B shaklida hisoblangan C matritsasining tartibi m*p, bunda m*n va n*p mos ravishda A va B ning tartibidir.

Download 201,08 Kb.

Do'stlaringiz bilan baham:
  1   2   3   4




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish