Algoritmlarni loyihalash fanidan
Download 359.9 Kb. Pdf ko'rish
|
Algoritmlarni loyihalash-1
- Bu sahifa navigatsiya:
- Tekshirdi: Mamadaliyev X.A. Toshkent 2023
O‘ZBEKISTON RESPUBLIKASI AXBOROT TEXNOLOGIYALARI VA KOMMUNIKATSIYALARINI RIVOJLANTIRISH VAZIRLIGI MUHAMMAD AL-XORAZMIY NOMIDAGI TOSHKENT AXBOROT TEXNOLOGIYALARI UNIVERSITETI ALGORITMLARNI LOYIHALASH FANIDAN Laboratoriya ishi-1 Bajardi:Samandar Toshmaxamatov Guruh:022-20 Tekshirdi: Mamadaliyev X.A. Toshkent 2023 Bu hisoblash uchun, avvalo funksiyani yaxshiroq yoritish uchun biror usulni ishlataylik. Biz funksiyani quyidagi ko'rinishda yoritishni xohlaymiz: f(x) = ln(x^2 + 1) * (x^2 + 3x + 1)^(1/3) Integralni hisoblash uchun Simpson formulasi va Monte-Karlo usulidan foydalanasiz: 1. Simpson formulasi: Simpson formulasi uchun odatda n tomonli bo'lmagan funksiya uchun oddiy ochiq ko'rsatkichlarni yoritadigan n+1 ta nuqtalarni ishlatish keng qo'llanadi. Bu formulaga ko'ra, integralning qiymati S integralni quyidagi formula orqali hisoblanadi: S = (b-a)/6 * (f(a) + 4*f((a+b)/2) + f(b)) Bu formulaga ko'ra, biz integralni Q = S(N) + R kabi atamalarga ajratamiz, bulardan S(N) - n ta to'g'ri to'g'ri zona yotiq selecti bo'lgan integralni topishga yordam beradi, va R - qolgan joyning selekti bo'lgan va integralni qisqartiruvchi muammoga aylandiradi. N. Simpson integrallarining to'liq hisoblarni topishda ishlatiladi. 2. Monte-Karlo usuli: Monte-Karlo usuli n ta sodir nuqtaga to'g'ri to'g'ri zona yotiq selecti to'g'risidagi cheklovni hisoblashga asoslangan formula bo'ladi. Uni integralni hisoblashda ishlatish uchun teng saylarda n ta tasodifiy nuqta tayyorlaymiz va formula yordamida integralni yaxlitlaymiz. Bu formulaga ko'ra: ∫(a,b)f(x)dx = (b-a) * 1/n * Σᵢf(xi) Bu yerda, xi - i chi hodisa boyicha tasodifiy nurta a va b oralig'ida yaratiladi. Demak, funksiya quyidagi ko'rinishda yoziladi: #include #include #include #include #include using namespace std; double f(double); double Simpson(double, double, int); double MonteCarlo(double, double, int); int main() { double a = 1.0, b = 3.0; int N = 16, M = 150; double h = (b - a) / N; cout << setprecision(4) << fixed; cout << "Oraliqni bo'linish soni N = " << N << endl; cout << "Sinovlar soni M = " << M << endl; cout << "Dastlabki oralik [" << a << ", " << b << "]" << endl << endl; double exactInt = Simpson(a, b, N); double monteInt = MonteCarlo(a, b, M); cout << "Simpson formulasi yordamida integral(qarindoshli formulasi): " << exactInt << endl; cout << "Monte-Karlo usuli yordamida integral: " << monteInt << endl; cout << "Xato: " << abs(exactInt - monteInt) << endl; return 0; } double f(double x) { return log(x * x + 1) * pow(x * x + 3 * x + 1, 1/3.0); } double Simpson(double a, double b, int N) { double h = (b - a) / N; double sum = 0; for (int i = 0; i <= N; i++) { double x = a + i * h; if (i == 0 || i == N) { sum += f(x); } else if (i % 2 == 1) { sum += 4 * f(x); } else { sum += 2 * f(x); } } return sum * h / 3.0; } double MonteCarlo(double a, double b, int M) { double sum = 0; srand(time(NULL)); for (int i = 0; i < M; i++) { double x = ((double)rand() / RAND_MAX) * (b - a) + a; sum += f(x); } return (b - a) / M * sum; } Yuqoridagi funksiya xaqida ma'lumotlarni konsolda chiqaramiz. Yuqoridagi dasturimizni ishga tushuring va natijaga e'tibor bering. Natijada, "Simpson formulasi yordamida integral" va "Monte-Karlo usuli yordamida integral" qiymatlari ko'rsatiladi. 'Xato' qiymati, integralni toliq hisoblash uchun ishlatilgan iki formulani aniqlashning maydonga o'tqazilishi natijasidir. Download 359.9 Kb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling