|
#include #include using namespace std; double func(double x) { return x x x + x x x 1; } double derivative(double x) { return x x + x 1; } void newton(double x0, double epsilon) { double x1; int iteration = 0; do {
|
bet | 2/4 | Sana | 18.05.2024 | Hajmi | 6,35 Mb. | | #242306 |
Bog'liq SADULLAYEVA ASAL
Q ustunli elementlar
Boshqariladigan o'zgaruvchilarning baholari orasida salbiy qiymatlar mavjud bo'lganligi sababli, joriy jadval hali optimal echimga ega emas. Shuning uchun, asosda biz eng kichik salbiy baho bilan o'zgaruvchini kiritamiz.
Bazisdagi o'zgaruvchilar soni doimo doimiy bo'ladi, shuning uchun biz Q ni hisoblab chiquvchi bazisdan qaysi o'zgaruvchini olish kerakligini tanlash kerak.
Q ustunining elementlari P ustunidagi qiymatlarni asosga kiritilgan o'zgaruvchiga mos keladigan ustunning qiymatiga bo'lish yo'li bilan hisoblanadi:
Q 1 = P 1 / x 1,2 = 160 / 10 = 16;
Q 2 = P 2 / x 2,2 = 142 / 4 = 35,5;
Q 3 = P 3 / x 3,2 = 123 / 15 = 8,2;
Bazisdan Q ning eng kam ijobiy qiymatiga ega bo'lgan o'zgaruvchini chiqaramiz.
Bazisdan olingan o'zgaruvchiga mos keladigan chiziq va bazisga kiritilgan o'zgaruvchiga mos keladigan ustunning kesishmasida hal qiluvchi element joylashgan.
Ushbu element bizga keyingi iteratsiya jadvalining elementlarini hisoblash imkonini beradi.
Ustun asosining elementlari (B)
Oldingi iteratsiyaning hisob-kitoblari natijalari uchun biz x 6 asosidan o'zgaruvchini olib tashlaymiz va uning o'rniga x 2 ni qo'yamiz . Boshqa barcha hujayralar o'zgarishsiz qoladi.
Cb ustun elementlari
Ushbu ustunning har bir katakchasi mos keladigan qatordagi asosiy o'zgaruvchiga mos keladigan koeffitsientga teng.
Cb 1 = 0;
Cb 2 = 0;
Cb 3 = 2000;
O'zgaruvchan o'zgaruvchilarning qiymatlari va P ustuni
(Oldingi iteratsiya ma'lumotlari dastlabki ma'lumotlar sifatida olinadi)
Barcha kataklarni bazaga kiritilgan o'zgaruvchiga mos keladigan nol bilan to'ldiring:
(Rezolyutsiya elementi o'zgarishsiz qoladi)
x 1,2 = 0;
x 2,2 = 0;
Biz oldingi jadvaldagi hal qiluvchi element bilan qatorni joriy jadvalga o'tkazamiz, uning qiymatlarini hal qiluvchi elementga elementlar bo'yicha ajratamiz:
P 3 = P 3 / x 3,2 = 123 / 15 = 8,2;
x 3,1 = x 3,1 / x 3,2 = 4/15 = 0,27;
x 3,2 = x 3,2 / x 3,2 = 15/15 = 1;
x 3,3 = x 3,3 / x 3,2 = 10/15 = 0,67;
x 3,4 = x 3,4 / x 3,2 = 0 / 15 = 0;
x 3,5 = x 3,5 / x 3,2 = 0 / 15 = 0;
x 3,6 = x 3,6 / x 3,2 = 1/15 = 0,07;
Qolgan bo'sh katakchalar, hisoblar qatori va Q ustunidan tashqari, hal qiluvchi elementga nisbatan to'rtburchaklar usuli yordamida hisoblanadi:
P 1 = (P 1 * x 3,2 ) - (x 1,2 * P 3 ) / x 3,2 = ((160 * 15) - (10 * 123)) / 15 = 78;
P 2 = (P 2 * x 3,2 ) - (x 2,2 * P 3 ) / x 3,2 = ((142 * 15) - (4 * 123)) / 15 = 109,2;
x 1,1 = ((x 1,1 * x 3,2 ) - (x 1,2 * x 3,1 )) / x 3,2 = ((15 * 15) - (10 * 4)) / 15 = 12,33;
x 1,2 = ((x 1,2 * x 3,2 ) - (x 1,2 * x 3,2 )) / x 3,2 = ((10 * 15) - (10 * 15)) / 15 = 0;
x 1,4 = ((x 1,4 * x 3,2 ) - (x 1,2 * x 3,4 )) / x 3,2 = ((1 * 15) - (10 * 0)) / 15 = 1;
x 1,5 = ((x 1,5 * x 3,2 ) - (x 1,2 * x 3,5 )) / x 3,2 = ((0 * 15) - (10 * 0)) / 15 = 0;
x 1,6 = ((x 1,6 * x 3,2 ) - (x 1,2 * x 3,6 )) / x 3,2 = ((0 * 15) - (10 * 1)) / 15 = -0,67;
x 2,1 = ((x 2,1 * x 3,2 ) - (x 2,2 * x 3,1 )) / x 3,2 = ((10 * 15) - (4 * 4)) / 15 = 8,93;
x 2,2 = ((x 2,2 * x 3,2 ) - (x 2,2 * x 3,2 )) / x 3,2 = ((4 * 15) - (4 * 15)) / 15 = 0;
x 2,4 = ((x 2,4 * x 3,2 ) - (x 2,2 * x 3,4 )) / x 3,2 = ((0 * 15) - (4 * 0)) / 15 = 0;
x 2,5 = ((x 2,5 * x 3,2 ) - (x 2,2 * x 3,5 )) / x 3,2 = ((1 * 15) - (4 * 0)) / 15 = 1;
x 2,6 = ((x 2,6 * x 3,2 ) - (x 2,2 * x 3,6 )) / x 3,2 = ((0 * 15) - (4 * 1)) / 15 = -0,27;
|
|
Bosh sahifa
Aloqalar
Bosh sahifa
#include #include using namespace std; double func(double x) { return x x x + x x x 1; } double derivative(double x) { return x x + x 1; } void newton(double x0, double epsilon) { double x1; int iteration = 0; do {
|