Qarshi filiali kompyuter injiniringi fakulteti axborot xavfsizligi yo’nalishi i-bosqich ax-11-22 guruh talabasi
Ta’rif. Tartiblangan ikkita haqiqiy sonlar juftligi bolib, asosan standart ko’rinisda a+bi
Download 417.45 Kb.
|
3-mustaqil ish. DASTURLASH
Ta’rif. Tartiblangan ikkita haqiqiy sonlar juftligi bolib, asosan standart ko’rinisda
a+bi (Dekart koorditalar tisimida) yoki (a,b) beriladi. Bu erda: a – uning butun qismi, bo’lib, haqiqiy sonlar to’plamiga tegishli; b – uning mavhum qismi bo’lib, haqiqiy sonlar to’plamiga tegishli; i – qiymati ga teng bo’lgan irratsional son; Komplex sonnig qutb koordinatalar tizimidagi ko’rinishi: z= p(cosα+isinα) Bu erda: p – complex sonning absolyut qiymati deyiladi, va ; α – vektorning Ox o’qi bilan hosil qilgan burchagi i – qiymati ga teng bo’lgan irratsional son; Komplex sonlar ustida to’rtta arifmetik amallar quyidagi algoritm (formulalar) yordamida amalga oshiriladi: z1=a+bi va z2=c+di 2 ta complex son uchun - 1) z1+z2=(a+c)+(b+d)i= ((a+c),(b+d)) - qo’shish 2) z1-z2=(a-c)+(b-)i= ((a-c),(b-d)) - ayirish 3) z1·z2=(ac-bd) +(ad+bc)i=((ac-bd),(ad+bc)) - ko’paytirish 4) – bo’lish C ++ standart kutubxonasining kompleks son sinfi ob'ekt modelidan foydalanishning yaxshi namunasidir. Ortiqcha arifmetik operatsiyalar tufayli ushbu klass ob'ektlari o'rnatilgan ma'lumotlar turlaridan biriga tegishlicha ishlatiladi. Bundan tashqari, o'rnatilgan arifmetik turdagi o'zgaruvchilar va murakkab raqamlar bir vaqtning o'zida bunday operatsiyalarda ishtirok etishlari mumkin. 1. Raqamli sinflar va ular bilan ishlash. C ++ standart kutubxonasining kompleks son sinfi ob'ekt modelidan foydalanishning yaxshi namunasidir. Ortiqcha arifmetik operatsiyalar tufayli ushbu sinf ob'ektlari o'rnatilgan ma'lumotlar turlaridan biriga tegishlicha ishlatiladi. Bundan tashqari, o'rnatilgan arifmetik turdagi o'zgaruvchilar va kompleks sonlar bir vaqtning o'zida bunday operatsiyalarda ishtirok etishlari mumkin. (E'tibor bering, bu erda biz murakkab sonlar matematikasining umumiy masalalariga murojaat qilmaymiz. Qarang [PERSON68] yoki matematikaga oid biron bir kitob.) Masalan:
comp1ex< double > a; comp1ex< double > b; // ... complex< double > с = a * b + a / b; Kompleks va arifmetik turlarni bitta ifoda bilan aralashtirishga ruxsat beriladi: complex< double > complex_obj = a + 3.14159; Xuddi shunday, kompleks sonlar arifmetik tur bilan initsializatsiya qilinadi va ularga quyidagicha qiymat berilishi mumkin: double dval = 3.14159; complex_obj = dval; yoki int ival = 3; complex_obj = ival; Masalan, quyidagi ifoda kompilyatsiya xatosiga olib keladi: // xato: arifmetik turga aniq konversiya qilinmaydi double dval = complex_obj; Kompleks sonning qaysi qismini - haqiqiy yoki mavhum - biz muntazam raqamga belgilashni xohlayotganimizni aniq ko'rsatishimiz kerak. Kompleks sonlar sinfi mos ravishda haqiqiy va mavhum qismlarni qaytaradigan ikkita funksiyaga ega. Biz ularga sinf a'zolariga kirish uchun sintaksis yordamida kirishimiz mumkin: double re = complex_obj.real(); double im = complex_obj.imag(); yoki shunga o'xshash funktsiyani chaqirish sintaksisi: double re = real(complex_obj); double im = imag(complex_obj); Kompleks son sinfi to'rtta kompozitsion tayinlash operatorlarini qo'llab-quvvatlaydi: + =, - =, * = va / =. Shunday qilib, complex_obj += second_complex_obj; Kompleks sonlarni Qo'llab-quvvatlaydigan kirish / chiqish . Chiqish operatori vergul bilan ajratilgan haqiqiy va mavhum qismlarni qavs ichiga bosib chiqaradi. Masalan, chiqish bayonotlarini bajarish natijasi complex< double > complex0( 3.14159, -2.171 ); comp1ex< double > complex1( complexO.real() ); cout << complexO << " " << complex1 << endl; quyidagicha: ( 3.14159, -2.171 ) ( 3.14159, 0.0 ) Kirish operatori quyidagi formatlarning istalganini tushunadi. // kompleks sonlarni kiritish uchun ruxsat etilgan tiplari // 3.14159 ==> comp1ex( 3.14159 ); // ( 3.14159 ) ==> comp1ex( 3.14159 ); // ( 3.14, -1.0 ) ==> comp1ex( 3.14, -1.0 ); // sifatida o'qish mumkin // cin >> a >> b >> с // bu yerda a, b, с – kompleks sonlar 3.14159 ( 3.14159 ) ( 3.14, -1.0 ) Ushbu operatsiyalarga qo'shimcha ravishda, kompleks sonlar sinfida quyidagi a'zo funksiyalariga ega: sqrt(), abs(), polar(), sin(), cos(), tan(), exp(), log(), log10() va pow(). Mashq 4.9 Biz uchun mavjud bo'lgan C ++ standart kutubxonasining joriy etilishi, agar to'g'ri operand kompleks son bo'lmasa, murakkab tarkibiy operatsiyalarini qo'llab-quvvatlamaydi. Masalan, shunga o'xshash yozuv haqiqiy emas: complex_obj += 1; (C ++ standartiga binoan, bunday ifoda to'g'ri bo'lishi kerak, ishlab chiqaruvchilar ko'pincha standartga rioya qilmaydilar.) Bunday operatsiyani bajarish uchun biz o'z operatorimizni aniqlay olamiz. Bu yerda complex #include inline complex operator+=( complex { return cval += complex } Ushbu misoldan foydalanib, complex #include #include // определения операций... int main() { complex< double > cval ( 4.0, 1.0 ); cout << cval << endl; cval += 1; cout << cval << endl; cval -= 1; cout << cval << endl; cval *= 2; cout << cval << endl; cout /= 2; cout << cval << endl; } Mashq 4.10 C ++ standartida kompleks son uchun o'sish va kamaytirish operatsiyalarining bajarilishi ko'rsatilmagan. Ammo, ularning semantikasi tushunarli: agar biz yoza olsak: cval + = 1; bu Cvalning haqiqiy qismining 1 ga ko'payishini anglatadi, bu holda o'sish jarayoni juda qonuniy ko'rinishi mumkin. Ushbu operatsiyalarni complex #include #include // определения операций... int main() { complex< double > cval( 4.0, 1.0 ); cout << cval << endl; ++cva1;
cout << cval << endl;
}
elementlarga asoslangan matematik operatsiyalarni va umumlashtirilgan indeksi, qism va bilvosita kirish operatorlarining har xil shakllarini qo'llab-quvvatlaydi. vektorlar bilan taqqoslaganda, vektorlar ma'lum matematik operatsiyalarda vektorlarga qaraganda samaraliroq. Download 417.45 Kb. Do'stlaringiz bilan baham: |
ma'muriyatiga murojaat qiling