Algoritmlarni loyihalash fanidan


Download 359.9 Kb.
Pdf ko'rish
Sana17.06.2023
Hajmi359.9 Kb.
#1541814
Bog'liq
Algoritmlarni loyihalash-1



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