O’ZBEKISTON RESPUBLIKASI AXBOROT TEXNOLOGIYALARI VA KOMMUNIKATSIYALARINI RIVOJLANTIRISH VAZIRLIGI MUHAMMAD ALXORAZMIY NOMIDAGI TOSHKENT AXBOROT TEXNOLOGIYALARI UNIVERSITETI CAL009 – guruh talabasi Muxammadaliyev Nodirjonning Algoritmlarni loyihalash fanidan “Chiziqli va tarmoqlanuvchi algoritmlar” mavzusida tayyorlagan 1-amaliy ishi Bajardi: N.Muxammadaliyev Tekshirdi: O. Begimov Toshkent 2023 Topshiriq No1 (12-variant) (nxm) o’lchamdagi ikki o’lchovli A massiv(matritsa) berilgan, matritsaning har bir satridagi manfiy elementlari sonidan tashkil topgan bir o’lchovli B massiv hosil qiling. Masalaning matematik modeli: Model asosida masalani yechish algoritmi: Ushbu algoritmni C++ dasturlash tili orqali ishladim va kodi quida keltirilgan: #include <iostream> #include<vector> using namespace std; int main() { vector<int> A[9]={{2,3,-1},{-3,6,-8},{-5,-6,9}},B; for (int i = 0; i < 3; i++) { int count = 0; for (int j = 0; j < 3; j++) { if (A[i][j] < 0) { count++; } } B.push_back(count); } cout << "A massivi:" << endl; for (int i = 0; i < 3; i++) { for (int j = 0; j < 2; j++) { cout << A[i][j] << " "; } cout << endl; } cout << "B massivi:" << endl; for (int i = 0; i < 3; i++) { cout << B[i] << " "; } cout << endl; return 0; } Natija: Topshiriq No2 Berilgan integral qiymatini to‘g‘ri to‘rtburchaklar, trapetsiyalar usullarida hisoblansin. Har bir usul bo‘yicha har n – qiymatlari oshirilib borilib olingan natijalar (Integral ≈ qiymati) quyidagi jadvalga to’ldirilib tahlil qilinsin Yechimlari: To‘g‘ri to‘rtburchaklar usuli n 10 Integral 1.80258 natijasi 20 30 50 100 1000 10000 100000 1.76066 1.74705 1.7363 1.72831 1.72117 1.72039 1.71948 Dastur kodi: #include<iostream> #include<math.h> using namespace std; float integral(float a, float b){ float n=10; float h=(b-a)/n; float intg=0,x; for(int i=0;i<n;i++){ x=(a+i*h); intg+=h*log(x+3)/x; } return intg; } int main(){ float a = 1; float b = 3; cout<<"Integral yechimi : "<<integral(a,b); } Natijasi: Trapetsiyalar usuli n 10 Integral 1.72368 20 30 50 100 1000 10000 100000 1.72121 1.72075 1.72052 1.72042 1.72038 1.72038 1.72041 natijasi Dastur kodi: #include <iostream> #include <cmath> using namespace std; float f(float x) { return log(x+3)/x; } float integral(float a,float b){ int n = 10; float h = (b-a)/n; float integral = 0; for (int i = 0; i <= n; i++) { float x = a + i*h; if (i == 0 || i == n) { integral += f(x); } else { integral += 2*f(x); } } return integral *= h/2; } int main() { float a = 1; float b = 3; cout << "Integral yechimi : " << integral(a,b) << endl; return 0; } Natija: Topshiriq No3 Berilgan algebraik va transsendent tenglamalarni yechishda oraliqni teng ikkiga bo‘lish va vatarlar usullaridan foydalanib tenglamaning taqribiy ildizini 0.1, 0.01, 0.001, 0.0001, 0.00001, 0.000001 aniqliklarda hisoblansin. Olingan natijalar quyidagi jadvalga to’ldirilib tahlil qilinsin Yechimi: ε= 0.1 0.01 0.001 0.0001 0.00001 0.000001 Yechimi 32.4531 32.4971 32.4996 32.5 32.5 32.5 Dastur kodi: #include<iostream> #include<cmath> using namespace std; float fun(float x){ return log(x*x+17)-1/(1+x*x)-7; } int main(){ double a=31,b=34,e=0.00000001,c; if(!(fun(a)*fun(b)<0)){ cout<<"Bu oraliqda yechimga ega emas !!!\n"; return 0; } c=(a+b)/2; while (abs(b-a)>=e){ if((fun(a)*fun(b))<0){ b=c; } else if ((fun(a)*fun(b))>0){ a=c; } else break; c=(a+b)/2; } cout<<"Tenglamaning yechimi : "<<c<<endl; } Natijasi: