Старший преподаватель кафедры “Основы информатики” Лектор: Саттаров Акбар Бахтиярович



Download 380,78 Kb.
bet3/3
Sana29.12.2021
Hajmi380,78 Kb.
#76678
1   2   3
Bog'liq
Das 6 taqdimot Sonli siflar bilan ishlash 2019

Masalan

#include

#include

int main() {

std::complex< double > z( 1.0, 2.0 ); // z = 1 + 2i

std::cout << z << std::endl; // Kompleks sonni vector ko’rinishida chiqarish: (1, 2)

std::cout << std::conj( z ) << std::endl; // Kompleks bog’lanish: (1, -2)

std::cout << z.real() << std::endl; // Kompleks sonning haqiqiy qismi: 1

std::cout << z.imag() << std::endl; // Kompleks sonning mavhum qismi : 2 return 0; }

C++ da kompleks sonlar bilan matematik operatsiyalar

  • C++ da komleks sonlar bilan ishlagan kabi, boshqa sonli ma’lumot tiplari bilan ham ishlashingiz mumkin:
  • #include
  • #include using namespace std;
  • int main() { complex< double > z1( 1.0, 2.0 );
  • complex< double > z2( 2.0, 1.0 );
  • cout << z1 + z2 << endl; // kompleks sonlarni qo’shish: (3, 3)
  • cout << z1 - z2 << endl; // kompleks sonlarni ayirish: (-1, 1)
  • cout << z1 * z2 << endl; // kompleks sonlarni ko’paytirish: (0, 5)
  • cout << z1 / z2 << endl; // kompleks sonlarni bo’lish : (0.8, 0.6)
  • cout << pow( z1, 2 ) << endl; // kompleks sonlarni darajaga oshirish: (-3, 4)
  • return 0; }

C++da kompleks sonlarni ko’rsatkichli va triginometrik ko’rinishi

  • C++ standart kutuxonasida kompleks sonlarning turli shakllari bilan ishlash uchun funksiyalar mavjud:
  • #include
  • #include using namespace std;
  • int main() {complex< double > z( 3.0, 4.0 );
  • double rho = abs( z ); // kompleks sonlar moduli: 5
  • double phi = arg( z ); // kompleks sonlar argumenti: 0.927295
  • // kompleks sonlarning trigonometric ko’rinishi: 5*(cos(0.927295) + i*sin(0.927295))
  • cout << rho << "*(cos(" << phi << ") + i*sin(" << phi << "))" << endl;
  • // kompleks sonlarning ko’rsatkichli ko’rinishi: 5*exp(i*0.927295)
  • cout << rho << "*exp(i*" << phi << ")" << endl; // Kompleks sonlarning moduli va argumentini natijaviy qiymatini olish: (3, 4)
  • cout << polar( rho, phi ) << endl; return 0; }

Valarray Sinfi

  • Sinf shabloni Type tipidagi elementlarning ketma-ketligini boshqaruvchi ob’yektni tavsiflaydi. Ular matematik amallarni yuqori tezlikda bajarish uchun mo’ljallangan massivda saqlanadi va hisoblashlarni optimallashtiradi

Valarray Sinfi

Sinf - bu tartiblangan qiymatlar to’plamining matematik ifodasi va noldan boshlab ketma-ket raqamlash elementlarga qo'llaniladi.

Sinf huddi konteyner kabi tasvirlangan bo’lsada, vector kabi birinchi darajali ketma-ketlikdagi konteynerlar tomonidan qo'llab-quvvatlanadigan ba’zi bir hususiyatlarni qo'llab-quvvatlamaydi. Bu sinf shablon vektoridan ikki muhim jihatdan farq qiladi:

  • Bu mos keladigan valarray bir xil turdagi va uzunlikdagi ob'ektlarning elementlari o'rtasida juda ko'p arifmetik operatsiyalarni belgilaydi, masalan, ксарр = cos ( ярр) + sin ( Зарр).
  •  Valarray ob’yektni yaratish uchun оператора[ qayta yuklash orqali qiziqarli yo’llarni aniqlaydi.

Valarray Sinfi

Type Klass ob’yekti:

  • Odatiy tarzda ishlaydigan ochiq konstruktor, destructor, konstruktor nusxasi va tayinlash operatorlaridan iborat bo’ladi.
  • Agar kerak bo'lsa, u suzuvchi nuqta turlari uchun aniqlangan va odatdagi usulda ishlaydigan arifmetik operatorlar va matematik funktsiyalarni aniqlaydi.
  • Xususan, nusxa ko'chirish konstruktsiyasi bilan standart konstruktsiya o'rtasida hatto kichik farq ham bo'lmaydi. Type klassi ob'ektlari bilan hech qanday operatsiya istisnolarni keltirib chiqara olmaydi.

Valarray Sinf konstruktori


valarray

Valarray ma'lum bir o'lchamda yoki belgilangan qiymatga ega bo'lgan elementlar bilan yoki boshqa valarrayning nusxasi yoki boshqa Valarrayning to’plam ostisi sifatida yaratadi.

value_type

Turi, valarrayda saqlangan element turini ifodalaydi.

Funksiyalar

Operatorlar

Operatorlar

Masalan

  • #include
  • #include using namespace std;
  • int __cdecl MyApplyFunc( int n ) { return n*2; }
  • int main( int argc, char* argv[] ) {
  • valarray vaR(10), vaApplied(10);
  • int i; for ( i = 0; i < 10; i += 3 ) vaR[i] = i;
  • for ( i = 1; i < 10; i += 3 ) vaR[i] = 0;
  • for ( i = 2; i < 10; i += 3 ) vaR[i] = -i;
  • cout << "The initial Right valarray is: (";
  • for ( i=0; i < 10; ++i ) cout << " " << vaR[i]; cout << " )" << endl; vaApplied = vaR.apply( MyApplyFunc );
  • cout << "The element-by-element result of " << "applying MyApplyFunc to vaR is the\nvalarray: ( ";
  • for ( i = 0; i < 10; ++i )
  • cout << " " << vaApplied[i]; cout << " )" << endl; }

Slice sinfi

  • std::slice  bu BLAS muhitiga o'xshash std::valarray to'plamini belgilaydigan sinf selektoridir. Std :: slice turining ob'ekti uchta qiymatni o'z ichiga oladi: boshlang'ich indeks, qadamlar va to'plam ostidagi qiymatlarning umumiy soni. std::slice tipidagi ob’yektlardan indeks sifatida operator[] valarray dan foydalanish mumkin. (Объекты типа std::slice можно использовать в качестве индексов с operator[] valarray автора.)

Funksiya a’zolari


(конструктор)

Bo’lak, qism yaratish

(public funksiya a’zosi)



start

Boshlang’ich qismga murojaat

(public funksiya a’zosi)



size

Qism o’lchamiga ruxsat berish

(public funksiya a’zosi)



stride

Qism qadamiga ruxsat berish

(public funksiya a’zosi)


Misol

  • #include
  • #include
  • class Matrix {
  • std::valarray data;
  • int dim;
  • public: Matrix(int r, int c) : data(r*c), dim(c) {} int& operator()(int r, int c) {return data[r*dim + c];}
  • int trace() const { return data[std::slice(0, dim, dim+1)].sum(); }
  • };
  • int main() {
  • Matrix m(3,3); int n = 0;
  • for(int r=0; r<3; ++r)
  • for(int c=0; c<3; ++c)
  • m(r, c) = ++n;
  • std::cout << "Trace of the matrix (1,2,3) (4,5,6) (7,8,9) is " << m.trace() << '\n'; }

Gslice sinfi

std :: gslice bu std::valarray indekslari ko'p bosqichli qadamlar va o'lchovlar to'plami bilan belgilanadigan sinf selektoridir. Std :: gslice tipidagi ob'ektlardan Operator [] valarray yordamida indekslar sifatida foydalanish mumkin, masalan, Valarray sifatida ko'rsatilgan ko'p o'lchovli qator ustunlarini tanlash. S ning boshlang'ich qiymatini hisobga olgan holda, i j muvaffaqiyatlari ro'yxati va Dj o'lchamlari ro'yxati, std:: gslice ushbu qiymatlardan qurilgan k indekslarini tanlaydi.

j=s+Σj(ijdj).

Masalan, dastlabki indeks 3, muvaffaqiyatlar {19,4,1} va {2,4,3} uzunlikdagi GSlice quyidagi ko'rsatkichlar to'plamini yaratadi:

Gslice sinfi

3 + 0*19 + 0*4 + 0*1 = 3, 3 + 0*19 + 0*4 + 1*1 = 4, 3 + 0*19 + 0*4 + 2*1 = 5, 3 + 0*19 + 1*4 + 0*1 = 7, 3 + 0*19 + 1*4 + 1*1 = 8, ... 3 + 1*19 + 3*4 + 2*1 = 36

Std :: gslice ob'ektlarini qurish, bir yoki bir nechta indekslarni bir necha marotaba tanlash mumkin: agar yuqoridagi misolda {1,1,1} yutuqlari ishlatilsa, ko'rsatkichlar {3, 4, 5, 4, 5, 6, ...}. Bunday gslices lardan faqat std :: valarray :: operator [] ning doimiy versiyasi uchun argument sifatida foydalanish mumkin, aks holda xatti-harakatlar aniqlanmaydi.

Funksiya a’zolari


(конструктор)

Gslice ni qurish

(public funksiya-a’zosi)



start

GSlice ning dastlabki holati

(public funksiya-a’zosi)



stride

GSlice ning qadam-baqadam massivga ruxsat berish

(public funksiya-a’zosi)



size

GSlice dan massiv o’lchamlariga ruxsat berish

(public funksiya-a’zosi)


Misol

  • #include
  • #include
  • void test_print(std::valarray& v, int rows, int cols, int planes)
  • { for(int r=0; r
  • { for(int c=0; c
  • { for(int z=0; z
  • std::cout << v[r*cols*planes + c*planes + z] << ' '; std::cout << '\n';
  • }
  • std::cout << '\n';
  • }
  • }
  • int main() { std::valarray v = { 111,112,113 , 121,122,123 , 131,132,133 , 141,142,143, 211,212,213 , 221,222,223 , 231,232,233 , 241,242,243};
  • std::cout << "Initial 2x4x3 array:\n"; test_print(v, 2, 4, 3);  
  • v[std::gslice(0, {2, 4}, {4*3, 3})] = 1;
  • v[std::gslice(1, {1, 4}, {4*3, 3})] -= v[std::gslice(2, {1, 4}, {4*3, 3})];  
  • std::cout << "After column operations: \n"; test_print(v, 2, 4, 3); }

E’tiboringiz uchun raxmat


Download 380,78 Kb.

Do'stlaringiz bilan baham:
1   2   3




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