Chiziqli dasturlash masalasining grafik usulda yechish ketma-ketligi
1-bosqich. Berilgan masalani chiziqli dasturlash masala sifatida shakllantirish.
2-bosqich. Berilgan ma’lumotlar asosida koordinatalar tekisligida x1 va x2 o’qlardan kesib o’tuvchi to’g’ri chiziqlarni aniqlab, sohalarni belgilab olamiz.
3-bosqich. Ajratilgan soha burchaklarida x1 va x2 nuqtalarni aniqlab, maqsad funksiyasiga qo’yamiz. Maqsad funksiya qiymatlaridan eng maqbulini(min yoki max) tanlab olamiz.
3-masala.
Z = 2x + 3y maqsad funksiyasining maksimum qiymatini toping.
Chegaraviy shartlar quyidagicha berilgan:
x + y 30, y 3, 0 y 12, x - y 0, va 0 x 20.
Yechish
Birinchi navbatda koordinatalar sistemasida x 0, y 0 ekanligini belgilab olamiz.
Koordinatalar sistemasida x + y 30, y 3, y 12, x y va x 20, chegaralarni belgilab, ABCDE shaklni aniqlaymiz.
Shakl uchlaridagi nuqtalar A(3, 3), B (20, 3), C(20, 10), D(18, 12) va E(12, 12) bo’ladi.
Shakl uchlaridagi Z ning qiymatlari Z(A) = 15, Z(B) = 49, Z(C)= 70, Z(D)=72, va Z(E) = 60
D nuqtada Z maksimum qiymatga erishadi. Z(D)=72. Bu nuqtada x va y ning qiymatlari x = 18, y = 12 ga teng.
Masala.
Kichik korxona meva sharbatlarini chiqaradigan bo'lsin. Korxonada 30kg olcha, 45kg olma, 12kg shakar bor. Korxona ikki xil turdagi meva sharbatlarini chiqaradi. 1 – tur meva sharbatining bir bankasiga 0,1kg olcha, 0,5kg olma, 0,1 kg shakar solinsin. 2 – tur meva sharbatining bir bankasiga 0,3kg olcha, 0,2kg olma, 0,1kg shakar solinsin. Agar 1 banka 1 – tur sharbat narxi 1000so'm, 2 – tur meva sharbati 1400so'm tursa, korxona har bir tur meva sharbatidan qanchadan ishlab chiqarganda korxonaning meva sharbatlarini sotishdan tushgan daromadi eng katta bo'ladi?
#include
#include
using namespace std;
int main(){
int i,j,n;
double c,c1;
cout<<"Zeydel usulida hisoblash\nTenglamalar sonini kiriting\n n=";
cin>>n;
float a[n+1][n+1],b[n+1],x[n+1],x1[n+1],l[n+1],z=0;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++){
cout<<"a["<>a[i][j];
}
for(i=1;i<=n;i++)
{ cout<<"b["<>b[i];
}
cout<<"maqsad funksiyadagi noma`lumlarning oldidagi koeffitsiyentlarni kiriting.";
for(i=1;i<=n;i++)
{ cout<<"l["<>l[i];
}
for(i=1;i<=n;i++){
c=a[i][i];
for(j=1;j<=n;j++)
a[i][j]=a[i][j]/c;
b[i]=b[i]/c;
x[i]=b[i];
}
L1: for(i=1;i<=n;i++) a[i][i]=0;
for(i=1;i<=n;i++)
{ c1=0;
for(j=1;j<=n;j++) c1+=a[i][j]*x[j];
x1[i]=b[i]-c1;
}
for(i=1;i<=n;i++)
if(fabs(x[i]-x1[i])>0.01) goto L2;
goto L3;
L2: for(i=1;i<=n;i++) x[i]=x1[i];
goto L1;
L3: cout<<"tenglamalar sistemasining yechimlari\n";
for(i=1;i<=n;i++){ cout<z+=l[i]*x[i];}
cout<<"maqsad funksiya="<return 0; }
Laboratoriya mashg’uloti 4.1
Do'stlaringiz bilan baham: |