O‘ZBEKISTON RESPUBLIKASI RAQAMLI TEXNOLOGIYALAR VAZIRLIGI
MUHAMMAD AL-XORAZMIY NOMIDAGI
TOSHKENT AXBOROT TEXNOLOGIYALARI UNIVERSITETI SAMARQAND FILIALI
"Dasturiy injiniring" kafedrasi
№3 мustaqil ta’lim ish hisoboti
Fan “ Algoritmlarni loyihalash”
Guruh :MT 22-09
Talaba: Sayfiddinov Doniyor Rahbar : Qayumov A. A
Samarqand-2024 y.
Nazariy savol javoblari:
1
|
Funksiyalarni Furye qatoriga yoyish (Furye, garmonika, a(0), an va bn koeffitsentlar)
|
2
|
Juft va toq funksiyalar uchun Furye qatorlari
|
3
|
Statistik modellashtirishda eng kichik kvadratlar usulining matematik modeli, formulary, algoritmi va dasturi
|
4
|
Statistik axborotlarni qayta ishlashda va prognoz masalalarida dinamik dasturlash usullari
|
nazariy savol javoblari:
Furye qatorini yaratish uchun sin(x) funksiyasini Furye, garmonika, a(0), an va bn koeffitsentlar bilan ifodalaymiz. Afsuski, men shu matematik formulalarni tugri formatda yozib berolmayman, lekin formulalarni tushuntirish uchun sizga yordam beraman.
1. Furye qatori:
sin(x) = a(0)/2 + sum(an * cos(n*x) + bn * sin(n*x))
2. a(0) koeffitsenti:
a(0) = (1/pi) * integral(sin(x) dx, -pi, pi)
3. an va bn koeffitsentlari:
an = (1/pi) * integral(sin(x) * cos(n*x) dx, -pi, pi)
bn = (1/pi) * integral(sin(x) * sin(n*x) dx, -pi, pi)
Bu formulalar x kiritilgan sin(x) funksiyasini Furye qatoriga aylanmasini ifodalaydi. Integrlar, -pi dan pi gacha hisoblanadi. a(0), an, va bn koeffitsentlari bu integralni hisoblash orqali topiladi.
Nazariy savol javobi:
Juft funksiyalar uchun Furye qatori:
Juft funksiya, simmetriklik xususiyati bilan tanishadi. Uning Furye qatori an koeffitsentlari faqat cosinus funksiyalarini o'z ichiga oladi, bn koeffitsentlari esa 0 ga teng bo'ladi. Shunday qilib, an koeffitsentlari bn koeffitsentlari bilan ifodalangan Furye qatori quyidagicha bo'ladi:
f(x) = a(0)/2 + sum(an * cos(n*x))
Toq funksiyalar uchun Furye qatori:
Toq funksiya, to'g'ri simmetriklik xususiyati bilan tanishadi. Uning Furye qatori an koeffitsentlari bn koeffitsentlari bilan ifodalangan bo'ladi, va a(0) koeffitsenti 0 ga teng bo'ladi:
f(x) = sum(an * cos(n*x) + bn * sin(n*x))
3-nazariy savol javobi:
Eng kichik kvadratlar usuli (least squares method) statistik modellashtirishda barcha ma'lumotlarni yaxlitlash uchun keng qo'llaniladigan bir usuldur. Bu usul orqali matematik modelni aniqlash va ma'lumotlar bilan birlikda ishlash imkoniyatini beradi.
Matematik model:
Eng kichik kvadratlar usuli orqali matematik model quyidagi formulalar orqali ifodalaydi:
Y = X * β + ɛ
Bu yerda:
Y ma'lumotlar to'plami (bunda tegishli natijalar yoki bog'liq o'zgaruvchilar kiritiladi)
X ma'lumotlarni ifodalovchi matritsa (bunda o'zgaruvchilar, ularga tegishli qiymatlar, va boshqa faktorlar kiritiladi)
β parametrlar to'plami (bunda modelni tavsifi uchun kerakli parametrlar kiritiladi)
ɛ qoldiqlar (residuals) to'plami (bunda ma'lumotlar va model orasidagi farq kiritiladi)
Formulyar:
Eng kichik kvadratlar usulining formulalari quyidagicha:
β ni hisoblash:
β = (X^T * X)^(-1) * X^T * Y
Qoldiqlar to'plamini hisoblash:
ɛ = Y - X * β
Ma'lumotlar ustunining darajasini hisoblash:
SSR = ɛ^T * ɛ
Parametrlarning kovariatsiyalar matrisini hisoblash:
Cov(β) = (X^T * X)^(-1) * SSR / (n - p)
Bu formulalar orqali ma'lumotlar to'plamidan matematik modelni tavsiflash uchun eng yaxshi parametrlarni topish mumkin.
Algoritm:
Eng kichik kvadratlar usulining amaliyoti quyidagi tartibda amalga oshiriladi:
Ma'lumotlar va uchun matritsa X ni tuzish.
Ma'lumotlar to'plamini Y ni tuzish.
Parametrlarni hisoblash uchun β ni hisoblash.
Qoldiqlar to'plamini hisoblash.
Parametrlarning kovariatsiyalar matrisini hisoblash.
Natijalarni tahlil qilish va tafsilotlar bilan qarash.
Dastur:
Eng kichik kvadratlar usulini amalga oshirish uchun dasturlash tiliga qarab xizmat qilgan dastur yoki kutubxona foydalanish mumkin, masalan, Python-da NumPy va SciPy kutubxonalari yoki R tilidagi built-in funksiyalar.
Python misol uchun:
python
Copy
import numpy as np
Ma'lumotlar to'plami
Y = np.array([1, 2, 3, 4, 5])
Ma'lumotlarni ifodalovchi matritsa
X = np.array([[1, 1], [1, 2], [1, 3], [1, 4], [1, 5]])
Parametrlarni hisoblash
beta = np.linalg.inv(X.T @ X) @ X.T @ Y
Qoldiqlar to'plami
residuals = Y - X @ beta
Parametrlarning kovariatsiyalar matrisi
covariance = np.linalg.inv(X.T @ X) * (residuals @ residuals) / (X.shape[0] - X.shape[1])
print("Eng kichik kvadratlar usuli natijalari:")
print("Beta:", beta)
print("Qoldiqlar:", residuals)
print("Kovariatsiyalar matrisi:", covariance)
Ushbu dasturda NumPy kutubxonasidan foydalanilgan. Ma'lumotlar va ma'lumotlarni ifodalovchi matritsa uchun masalan qiymatlar kiritilgan, va eng kichkvadratlar usuli ishlatilar edi. Natijalar beta, residuals va covariance o'zgaruvchilarida saqlanadi va konsolga chiqariladi.
4-nazariy savol javoblari:
Statistik axborotlarni qayta ishlash va prognoz masalalarida dinamik dasturlash usullari, ma'lumotlar o'zgarayotgan vaqt ichida odatda ko'plab obyektlarni (masalan, vaqt o'quvchi, hisob-kitoblar, ma'lumotlar jadvali kabi) qamrab olish, tahlil qilish va prognozlash uchun ishlatiladi. Quyidagi dinamik dasturlash usullari statistik axborotlarni qayta ishlash va prognozlash uchun mashhur bo'lib, ulardan ba'zilari:
1. ARIMA (Autoregressive Integrated Moving Average): ARIMA, aniq vaqtli ma'lumotlar to'plamida mavjud bo'lgan avto-regressiya (autoregressive), integratsiya (integrated) va o'zgarmas (moving average) komponentlarini hisoblash uchun ishlatiladi. Bu usul statistik modellarni tahlil qilish, ma'lumotlar ustunlarini progresiv tartibda qayta ishlash va qayta ishlash natijalariga asosan keyingi obyektlarni prognozlash uchun foydalaniladi.
2. LSTM (Long Short-Term Memory): LSTM, o'zgaruvchan vaqtli ma'lumot to'plamlarini tahlil qilish uchun ishlatiladigan bir turi bo'lgan RNN (Recurrent Neural Network) arxitekturasi hisoblanadi. LSTM modellarida, ma'lumotlarning uzun vaqtli bog'liqligi va o'zgarishlarini o'rganish uchun xotira qismi (memory cell) mavjud bo'ladi, bu esa ma'lumotlar ustunlarini dinamik tarzda hisoblashga yordam beradi. LSTM modellarining qayta ishlash va prognozlashda yuqori darajada ta'sirli bo'lishi bilan mashhur.
3. VAR (Vector Autoregression): VAR modeli bir nechta o'zgaruvchanlar orasidagi avto-regressiya (autoregressive) bog'liqliklarni hisoblash uchun ishlatiladi. Bu usulda, ma'lumotlar ustunlarining bir nechta o'zgaruvchanlar orasidagi bog'liqliklarini aniqlash uchun VAR modellari yaratiladi. VAR modellari, obyektlardagi o'zgaruvchanlar orasidagi ta'sirli bog'liqliklarni hisoblash va keyingi vaqtlarda obyektlarning o'zgaruvchanlarini prognozlash uchun foydalaniladi.
4. Prophet: Prophet, Facebook tomonidan ishlab chiqilgan statistik modellashdagi bir kutubxonadir. Ushbu kutubxona, avto-regressiya (autoregressive) va sezonal komponentlarni hisoblash uchun ishlatiladi. Prophet modeli, sezonal va sirtqi (trend) o'zgarishlarini hisoblashga imkon beradi va ma'lumotlardan keyingi obyektlarni prognozlash uchun foydalaniladi.
5. Kalman filtri: Kalman filtri, ma'lumotlardan kelib chiqqan vaqtli o'zgaruvchanlarni dinamik tarzda qayta ishlash uchun ishlatiladi. Bu filtri, ma'lumotlardagi qoldiqlarni kamaytirish va ma'lumotlarni o'zgaruvchanlarni qayta ishlash natijalariga asosan keyingi obyektlarni prognozlashda yordam beradi. Kalman filtrining asosiy qismi, ma'lumotlarning qisqa vaqt oralig'ida qayta ishlanishi uchun qo'shimcha o'zgaruvchanlarni hisoblash va o'zgaruvchanlarni tahlil qilishga asoslangan statistikaxborotlardir.
Ushbu dinamik dasturlash usullari statistik axborotlarni qayta ishlash va prognozlashda keng qo'llaniladi. Ulardan birini tanlash uchun ma'lumotlarning xususiyatlari, maqsad va ma'lumotlar ustunlarining tarkibiga qarab mosligi ko'rinadi. Buning bilan birga, bu usullar dasturlash tillari va kutubxonalarda amalga oshirilishi mumkin, masalan, Python'da statsmodels, keras, tensorflow kutubxonalari yoki R tilida built-in funksiyalar mavjud.
Muhim qo'llaniladigan usullardan ba'zilari yuqoridagi misollarda keltirilgan. Biroq, maqsad va ma'lumotlarning xususiyatlari asosida qo'llaniladigan usullar o'zgarishi mumkin. Shuning uchun, maqsadingiz va ma'lumotlaringizga mos keladigan dinamik dasturlash usulini tanlashda ma'lumotlarga va maqsadlarga oid ko'rsatmalar va yordam talab etiladi.
II. 1-Amaliy mashg’ulot topshiriqlari
1-amaliy masala. Quyidagi funksiyalarni Furye qatorlariga yoyishda a0,a1 va b1 koeffitsentlar qiymatlarini toppish algortim va dasturini tuzing. N=100 bo’lganda Furye qatoriga yoyish dasturini tuzing.
14. y=x4-5x+3
Dastur kodi:
#include
#include
double f(double x) {
return pow(x, 4) - 5 * x + 3;
}
int main() {
double x = 2;
double result = f(x);
std::cout << "Result: " << result << std::endl;
return 0;
}
Dasturni tekshirish (Yechim olish):
|