Dasturni tekshirish (Yechim olish)

|
Dasturni tekshirish (Yechim olish)
|
bet | 6/6 | Sana | 20.05.2024 | Hajmi | 193,21 Kb. | | #244803 |
Bog'liq AlgoritmlarniLoyihalash XayrullayevJavoxir-Amaliy-3Dasturni tekshirish (Yechim olish)
2-amaliy mashg‘uloti mavzusi: Massiv elementlarini tartiblashtirish. Matrisa maksimal, minimal elementnlarini aniqlash algoritmi
Ishdan maqsad: massiv va matritsalarga doir masalalar uchun algoritm tuzish va ularni tahlil qilish.
1-topshiriq.
Butun sonlardan iborat n ta son berilgan. Shu sonlarni elementlar miqdori kamayish tartibida chiqarish algoritmi va dasturini tuzing.
t/r
|
Element soni va miqdori
|
Tartiblangan massiv
|
1
|
5
23 45 34 56 25
|
56 45 36 25 23
|
2
|
10
5 3 -2 -5 0 1 0 5 8 7
|
8 7 5 5 3 1 0 0 -2 -5
|
Algoritmni ishlab chiqish. Foydali algoritmlar dasturni tez ishlashiga va kod tushunarli bo’lishiga xizmat qiladi;
Misol.
Boshlash
n o’zgaruvchisini e’lon qilamizva qiymat beramiz va sonlar nomli massivni ham yaratamiz hamda uzunligini n ta qilamiz.
For da 00 dan n gacha sonlar massiviga qiymat beramiz
sort(sonlar, sonlar + n, greater<int>());
Yuqoridagi method orqali massivni saralaymiz.
Tamom
Dastur kodi
#include
#include
using namespace std;
int main() {
int n;
cout << "N soni: ";
cin >> n;
int sonlar[n];
cout << "Sonlarni kiriting:\n";
for (int i = 0; i < n; ++i) {
cin >> sonlar[i];
}
// Elementlarni kamayish tartibida chiqarish
sort(sonlar, sonlar + n, greater());
cout << "Elementlar miqdori kamayish tartibida:\n";
for (int i = 0; i < n; ++i) {
cout << sonlar[i] << " ";
}
cout << endl;
return 0;
}
3-MUSTAQIL ISH TOPSHIRIQLARI
Mavzu. Chiziqli va tarmoqlanuvchi algoritmlar.
Nazariy topshiriqlar: Quyidagi nazariy savollarga javob bering:
Savollar:
Algebraik ta transcendent tenglamalarni taqribiy yechish usullari bo’yicha hisoblashda yaqinlashish tezligi bo’yicha baholash
| Savollar:
Algebraik ta transcendent tenglamalarni taqribiy yechish usullari bo’yicha hisoblashda yaqinlashish tezligi bo’yicha baholash
| Algebraik ta transcendent tenglamalarni taqribiy yechish usullari bo’yicha hisoblashda yaqinlashish tezligi bo’yicha baholash
Chiziqli algebraic tenglamalar sistemasini taqribiy yechish usullari. Yaqinlashish shartlari
Chiziqli dasturlash masalalari kanonik ko’rinishi. Simpleks usul.
Javoblar:
Burchaklar metodi: Bu usulda, tenglama f(x) = 0 ning x=a orqali tangential chiziqlarni chizish orqali x qiymatlarini aniqlash uchun ishlatiladi. Har qadamda yangi x qiymati quyidagi formula bo'yicha hisoblanadi:
Bu formulada, yangi x qiymati, In avvalgi x qiymati, f (xn) funksiyaning qiymati va f'(xn) funksiyaning turlichasining o'zgaruvchan qiymati.
2. Biseksiya metodi: Bu usulda, funksiya f(x) orqali burchaklar orasidagi bo'lgan intervalni darajaga ajratish va biror qismini tanlangan ikkinchi bir intervalni hisoblash uchun ishlatiladi. Har bir qadamda yangi interval quyidagi formula asosida hisoblanadi:
c = (a + b)/2
Agar f(a) va f (c) ning ishoralar o'zaro farq qilsa, keyingi qadamda a ni c ga o'zgartiriladi, aks holda, b ni c ga o'zgartiriladi. Bu jarayon, intervalning uzunligi o'zgarib ketayotganligi sababli yaqinlashishni kengaytirishga yordam beradi.
3. Newton-Raphson metodi: Bu usulda, tangent chiziqlarni ishlatib, funksiyaning x tenglamasi yechimga yaqinlashishga qaratiladi. Har bir qadamda yangi x qiymati quyidagi formula bo'yicha hisoblanadi:
Bu usul Burchaklar metodi bilan o'xshash, lekin avvalgi x qiymati yoki qarashli yoki uning dengizidan qarashli bo'lgan joyi x_0 ekanligini tanlashni talab qiladi.
**Chiziqli metodlar (Linear Methods)**: Bu usulda, chiziqli tenglamalar sistemasining har bir chiziqli tenglamasini linear ko'rinishga olib, kengaytirilgan chiziqli tenglamalar sistemasini yechish uchun o'zgaruvchilarni aniqlaydigan formulalardan foydalaniladi. Misol uchun, Gauss eliminatsiya, LU bo'luvchi tahlili, qatlamli qarama-qarshi yurish (iterativ yoki iterative) metodlar kabi usullar bu kategoriya ichiga kiradi.
**Chiziqli interpolatsiya**: Bu usulda, berilgan funksiyalar to'plamining o'zlarini o'xshatishga olib keluvchi interpolatsiya usullaridan foydalaniladi. Bu usul chiziqli algebraik tenglamalar sistemasini yechish uchun yaxshi ishlaydi, ammo unga to'g'ri yechimlar aniqlash uchun kattaroq son kerak bo'lishi mumkin.
**Chiziqli ilinomiallar**: Bu usulda, chiziqli ilinomiallar sistemasini yechish uchun chiziqli ilinomiallar vaqtincha sifatida aniqlanadi. Keyinchalik, chiziqli ilinomiallar ko'paytirilgan tenglamalarni yechish uchun ishlatiladi.
Yaqinlashish shartlari chiziqli algebraik tenglamalar sistemasini taqribiy yechishda o'z muhimlikka ega. Ba'zi asosiy shartlar quyidagilar:
- **Qonun hajmi**: Chiziqli algebraik tenglamalar sistemasini yechishda ishlatilgan yordam xususiyatlarini yaxshilash uchun, qonun hajmi shartiga rioya qilinishi kerak. Qonun hajmi, qanday ishlashining hajmi va qulaylik darajasini ta'minlaydi.
- **Tezlik**: Yechimni topish uchun yaxshi va samarali usulni tanlash muhimdir. Bu usulning tezligi va oqilona ishlovchi bo'lishi kerak.
- **Kechikish**: Biror usulda yechim topishning tezligi va natijalarni yaxshi hisoblash uchun kerak bo'lgan vaqtning limitlarini tushuntirish lozim.
- **Tekshirish**: Chiziqli algebraik tenglamalar sistemasini taqribiy yechish natijalarini tekshirish uchun tekshirish usullari kerak.
Simpleks usul optimizatsiya masalalarini quyidagi kanonik ko'rinishda yechish uchun ishlatiladi:
Shartlar:
Bu yerda:
x - n ta o'zgaruvchi qiymatlarini o'zlashtiradigan vektor.
c- O'zgaruvchi qiymatlarini o'zlashtiradigan n ta o'lchamli mukammal to'plam.
A-m ta qator va n ta ustunlardan iborat m ta o'lchamli matritsa.
b-m ta o'lchamli mukammal to'plam.
Simpleks usul quyidagi bosqichlardan iborat:
1. **Bosqich 1: Boshlang'ich to'plamlarni topish**: Mos keluvchi boshlang'ich yechimlar aniqlanadi.
2. **Bosqich 2: Yechimlarni optimallashtirish**: Yangi yechimlar aniqlanadi va qiymatlar muhiti tekshiriladi.
3. **Bosqich 3: Optimallashtirish**: Agar muhiti optimallashtirish mumkin bo'lsa, boshlang'ich yechimlar optimallashtiriladi.
3)Amaliy mashg’ulot topshiriqlari
2x3-x-5=0
public class Main {
public static void main(String[] args) {
double a = -2; // Ikkita yechim orasidagi eng kichik qiymat
double b = 2; // Ikkita yechim orasidagi eng katta qiymat
double epsilon = 0.0001; // Xatolik miqdori
double yechim = biseksiyaMetodi(a, b, epsilon);
System.out.println("Tenglama yechimi: " + yechim);
}
public static double f(double x) {
return 2 * Math.pow(x, 3) - x - 5;
}
public static double biseksiyaMetodi(double a, double b, double epsilon) {
double c = 0;
while ((b - a) >= epsilon) {
c = (a + b) / 2;
if (f(c) == 0.0) {
break;
} else if (f(c) * f(a) < 0) {
b = c;
} else {
a = c;
}
}
return c;
}
}
|
| |