Cómo encontrar la solución óptima a una ecuación lineal multivariada
El método general debería ser una búsqueda exhaustiva, pero xyz debería dar un rango, suponiendo x, y, z & gt0, el valor máximo X [400/44] = 9, el valor máximo Y [400/34] = 12, el valor máximo Z [400/64] = 6, [] representa redondeo.
#incluye & ltstdio.h & gt
#incluye & ltconio.h & gt
#incluye & ltmath.h & gt
int main(){
int x, y, z, v, dv, dvMin=32767, x0, y0, z0, v 0;
for(x = 1 ;x & lt=9;++x){
for(y = 1;y & lt=12;++y){
for(z = 1;z & lt=6;++z){
v = 44 * x+34 * y+64 * z;
dv = ABS(v-400);
if(dv & lt; dvMin){
dvMin = dvx0 = x; y0 = y; p>}
}
}
printf("x0=%d, y0=%d, z0=%d, v0=%d\n ", x0, y0, z0, v 0);
printf("\n¡Completo!\n");
getch();
Devuelve 0 ;
}
El resultado final es:
x0=3, y0=6, z0=1, v0=400
¡Se acabó!