Uploaded by bekzodamirov94

1681756056

advertisement
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:
Download