LABORATORIYA ISHI № 3
Raqamli axborotlarni qayta ishlashda Fure usuli va dinamik dasturlash yo‘li
Talablar
Titul varog’i
1-vazifa bo‘yicha (Furye qatori asosida raqamli signallar yetakchi
garmonikalarini aniqlash):
-
Variant berilishi
-
Matematik modeli
-
Algoritmi
-
Dasturi va natijasi
2-vazifa bo‘yicha(Dinamik dasturlash):
-
Rekursiv funksiyadan foydalanib 45 ta fibonachi sonlarini topish
dasturini ishlatish
-
Dinamik dasturlash yo’llaridan foydalanib 45 ta fibonachi sonlarini
topish dasturini ishlatish
3-vazifa bo‘yicha(Eng kichik kvadratlar usuli, chiziqli bog’lanish):
-
Variant berilishi
-
Matematik modeli
-
Algoritmi
-
Dasturi va natijasi
-
Excel dasturida olingan natija
1-vazifa
Jadval ko’rinishida berilgan funksiyalarni Furye qatori asosida raqamli
signallar yetakchi garmonikalarini aniqlash usuli bilan analitik ko’rinishda
ifodalang. Algoritmini tuzib, dasturlash tilida dastur kodini yozing va natija oling.
1-vazifaga doir variantlar:
2-vazifa
Dinamlik dasturlash masala. Fibonachi sonlari misolida. Har bir talaba
quyidagi dastur kodlaridan foydalanib dinamik dasturlashni o’rganishi va ishlatib
natijani olishi kerak.
Dinamik dasturlashdan foydalanmasdan rekursiv funksiya orqali ishlangan dastur:
#include
#include
using namespace std;
int fib(int n){
if(n<=1) return n;
else return fib(n-1)+fib(n-2);
}
int main(){
cout<<"CAL007-L1guruhi Aliyev Vali"<
for(int n=1; n<45; n++){
clock_t time1 = clock();
int result = fib(n);
clock_t time2 = clock();
int d = (time2-time1)*1000/CLOCKS_PER_SEC;
cout<<"fib("<
}
cout<<"CAL007-L1 guruhi Aliyev Vali"<
return 0;
}
Dinamik dasturlashdan foydalanib (Tepadan pastga) ishlangan dastur:
#include
#include
using namespace std;
int cache[50] = {0};
int fib(int n){
if(n<=1) return n;
if (cache [n] == 0)
cache [n] = fib(n-1)+fib(n-2);
return cache[n];
}
int main(){
for(int n=1; n<45; n++){
clock_t time1 = clock();
int result = fib(n);
clock_t time2 = clock();
int d = (time2-time1)*1000/CLOCKS_PER_SEC;
cout<<"fib("<
}
cout<<"CAL007-L1 guruhi Aliyev Vali"<
return 0;
}
Dinamik dasturlashdan foydalanib (Pastdan tepaga) ishlangan dastur:
#include
#include
using namespace std;
int fib1(int n){
int F[n+1];
F[0]=0;
F[1]=1;
for(int i=2; i<=n; i++)
F[i]=F[i-1]+F[i-2];
return F[n];
}
int main(){
for(int n=1; n<45; n++){
clock_t time1 = clock();
int result = fib1(n);
clock_t time2 = clock();
int d = (time2-time1)*1000/CLOCKS_PER_SEC;
cout<<"fib("<
}
cout<<"CAL007-L1guruhi Aliyev Vali"<
return 0;
}
3-vazifa
Jadval ko'rinishida berilgan funksiyalar uchun eng kichik kvadratlar usulini
qo'llab berilgan qiymatlarga yaqinlashuvchi chiziqli bog'lanishni toping, analitikva
grafik usulda ifodalang (excelda va biror dasturlash tilida)
3-vazifaga doir variantlar:
Do'stlaringiz bilan baham: |