1-amaliy ishi. Mavzu: Massiv elementlarini tartiblashtirish. Matrisa maksimal, minimal elementini aniqlash algoritmi. Matrisalarni ko’paytirish dasturi. Amallar tartibini baholash 7-variant
Download 1.8 Mb.
|
algoritmlar1-amaliy
7-variant.
1) 3x-cosx-1=0 2) x3+0.2x2+0.5x-1.2=0 1) 3x-cosx-1=0 Berilgan tenglama 3x - cos(x) - 1 = 0 ni yechish uchun "bisecting" deb nomlanadigan algoritmani foydalanish orqali ildizning taqribiy qiymatini topish mumkin. Bu qiymatni topish uchun kod quyidagicha bo'ladi: #include #include using namespace std; double f(double x) { return 3 * x - cos(x) - 1; } int main() { double a = 0, b = 1, eps = 0.001; // boshlang'ich taxminiy oraliqlar va epsilon (toleransiya) double c = (a + b) / 2; // o'rtaqiymatni topish int iteration = 0, max_iter = 100; // maksimum vaqtni ko'rsatuvchi o'zgaruvchilar while (fabs(f(c)) > eps && iteration < max_iter) { if (f(a) * f(c) < 0) { // yechim taxminiy oraliqida yotadi b = c; } else { // yechim taxminiy oraliqida yotmaydi a = c; } c = (a + b) / 2; // o'rtaqiymatni hisoblash iteration++; } double root = (a + b) / 2; // ildizning taqribiy qiymatini hisoblash cout << "Ildizning taqribiy qiymati: " << root << endl; return 0; } Bu dasturda, `a` va `b` o'zgaruvchilari boshlang'ich taxminiy oraliqlarni ifodalaydi. `eps` qiymati ildizning taqribiy qiymatini aniqlash uchun ishlatiladi. `c` oraliqi yordamida, `a` va `b` ning o'rtaqiymatini topish uchun foydalaniladi. `while` tsikli orqali yechimni topish uchun "bisecting" algoritmi ishlatiladi. Har bir yangi taxminiy yechim `c` o'rtaqiymati yordamida hisoblanadi. Tsikl sharti, `fabs(f(c)) > eps` bo'lsa, yani, yechim `eps` orqali yana e'tiborga olingan yechimlarga qarab nolga yaqin emas bo'lsa va "max_iter" (maksimum iteratsiya soni) o'tmagan bo'lsa, qaytaradi. Dastur bajarildiqligi uchun, `root` o'zgaruvchisida ildizning taqribiy qiymati (`(a + b) / 2`) hisoblanadi va konsolga chiqariladi. 2) x3+0.2x2+0.5x-1.2=0 Berilgan tenglamani teng ikkiga bo'lish usuli bilan yechish uchun "Newton-Raphson" metodi foydalanilishi mumkin. Bu metoddan foydalanish uchun, berilgan funksiyaning birinchi va ikkinchi darajasining funksiyalarini topish va "Newton-Raphson" formulasi yordamida yangi taxminiy yechimlarni hisoblash kerak. Kod quyidagicha bo'ladi: #include #include using namespace std; double f(double x) { return pow(x, 3) + 0.2 * pow(x, 2) + 0.5 * x - 1.2; } double df(double x) { return 3 * pow(x, 2) + 0.4 * x + 0.5; } int main() { double x0 = 1; // boshlang'ich taxminiy yechim double eps = 0.0001; // epsilon (toleransiya) int iteration = 0, max_iter = 100; // maksimum vaqtni ko'rsatuvchi o'zgaruvchilar double x1 = x0 - f(x0) / df(x0); // birinchi yangi taxminiy yechim while (fabs(x1 - x0) > eps && iteration < max_iter) {
double root = x1; // ildizning taqribiy qiymati cout << "Ildizning taqribiy qiymati: " << root << endl; return 0; } `f(x)` funksiyasi berilgan tenglamani aniqlaydi, va `df(x)` funksiyasi uning ikkinchi darajasining funksiyasini topadi. `x0` o'zgaruvchisi boshlang'ich taxminiy yechimni aniqlaydi. `eps` qiymati yechimning taqribiy qiymatini aniqlash uchun ishlatiladi. Dasturda `while` tsikli yordamida "Newton-Raphson" formulasi ishlatiladi. Har bir yangi taxminiy yechim `x1`-ni hisoblash uchun `x0` ning qiymati foydalaniladi. Shuningdek, tsikl sharti `fabs(x1 - x0) > eps` bilan tekshiriladi, yani, yechim `eps` orqali yana e'tiborga olingan yechimlarga qarab nolga yaqin emas bo'lsa va "max_iter" (maksimum iteratsiya soni) o'tmagan bo'lsa, qaytaradi. Dastur bajarildiqligi uchun, `root` o'zgaruvchisida ildizning taqribiy qiymati (`x1`) hisoblanadi va konsolga chiqariladi. Download 1.8 Mb. Do'stlaringiz bilan baham: |
ma'muriyatiga murojaat qiling