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:
KIRISH
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.
Do'stlaringiz bilan baham: |