|
Labaratoriya 2 Topshirdi: Grupa: Toshkent – 2024 Topshiriq variantlari Variant-12
|
Sana | 17.05.2024 | Hajmi | 4,88 Mb. | | #240696 |
Bog'liq Variant 12
Toshkent axborot texnologiyalari universiteti Algoritmlash va Loyihalash
Labaratoriya 2
Topshirdi:
Grupa:
Toshkent – 2024
Topshiriq variantlari
Variant-12
Variant parametrlarini quyidagicha aniqlang: n1={N/3}+1; n2={N/5}+1; n3={N/7}+1, bu yerda N talabalarning potokdagi nomeri. {N/3} bu N sonini 3 ga bo‘lgandagi qoldig‘i. Misol: N=7 {7/3}=1.
Tenglamani hosil qiling:
Tenglamaning yechim joylashgan oralig‘ini toping. Vatarlar usuli yordamida ildizlarni e=10-5 aniqlik bilan hisoblash algoritmini tuzing. Bunday aniqllika erishish uchun zarur qadamlar sonini aniqlang. a=1 va b=3
Berilgan oraliqda funksiyaning qiymatlarini hisoblash uchun Vatarlar usulini (ya'ni biseksiya usulini) qo'llaymiz.
1.Har bir qadamda funksiyaning qiymatlarini hisoblash va tenglama ildizini topish uchun formulalardan foydalanamiz.
2.Agar topilgan qiymatlar oraliqda bo'lsa, uni ildizning yoki x ning yangi qiymati sifatida qabul qilamiz. Aks holda, oraliqni qisqartiramiz.
3.Agar topilgan qiymatlar ildizlarning aniqlik qatordan kichik bo'lsa, natija sifatida ildizni qaytarib, hisoblashni yakunlaymiz.
4.Agar topilgan qiymatlar yuqori aniqlik qatordan katta bo'lsa, natija sifatida oraliqni qaytarib, hisoblashni yakunlaymiz.
#include
#include
using namespace std;
// Funksiya
double g(double x) {
return pow(x, 3) + pow(x, 2) - 3 * x - 6;
}
// Vatarlar usuli
double vatarlar(double a, double b, double epsilon, int &steps) {
double x0 = a;
double x1 = b;
double x2;
steps = 0;
do {
x2 = x1 - g(x1) * (x1 - x0) / (g(x1) - g(x0));
x0 = x1;
x1 = x2;
steps++;
} while (fabs(g(x2)) >= epsilon);
return x2;
}
int main() {
double a = 1; // oralig' boshlanishi
double b = 3; // oralig' oxiri
double epsilon = 1e-5; // aniqlik qiymati
int vatarlar_steps;
double vatarlar_result = vatarlar(a, b, epsilon, vatarlar_steps);
cout << "Vatarlar usuli natijasi: " << vatarlar_result << endl;
cout << "Vatarlar usuli qadamlar soni: " << vatarlar_steps << endl;
return 0;
}
Ushbu masalani Nyuton usuli orqali yechish algoritmini tuzing. Ikkala usulda ham yechimlarni oling. Ko‘rib chiqilgan usullar samaradorligini taqqoslang.
#include
#include
using namespace std;
// Funksiya
double f(double x) {
return pow(x, 3) + pow(x, 2) - 3 * x - 6;
}
// Funksiyaning hosilasi
double f_prime(double x) {
return 3 * pow(x, 2) + 2 * x - 3;
}
// Nyuton usuli
double newton(double x0, double epsilon, int &steps) {
double x = x0;
double x_prev;
steps = 0;
do {
x_prev = x;
x = x - f(x) / f_prime(x);
steps++;
} while (fabs(x - x_prev) >= epsilon);
return x;
}
int main() {
double a = 1; // oralig' boshlanishi
double b = 2; // oralig' oxiri
double epsilon = 1e-5; // aniqlik qiymati
int newton_steps;
double newton_result = newton((a + b) / 2, epsilon, newton_steps); // boshlang'ich nuqta (a + b) / 2
cout << "Nyuton usuli natijasi: " << newton_result << endl;
cout << "Nyuton usuli qadamlar soni: " << newton_steps << endl;
return 0;
}
O`z- o`zidan ayoni natijalar bir-biriga juda ham yaqin chiqqan
Chiziqli dasturlash masalasini hosil qiling:
.
ChDM ni simpleks usulida hisoblang. Topilgan yechimlardan iqtisodiy tahlil o‘tkazing. Tegishli matematik modelni ishlab chiqarishni takomillashtirish bo‘yicha tavsiyalarni shakllantiring.
Simpleks usulda ishlash
F=49484.62 x1=7.15; x2=9.2 x3=12.14
|
| |