Foros del Web » Programación para mayores de 30 ;) » Programación General »

Optimización con scilab

Estas en el tema de Optimización con scilab en el foro de Programación General en Foros del Web. Hola a todos soy novato en este foro y espero ue alguien me pueda ayudar.Tengo que implementar una función para encontran un máximo empleando el ...
  #1 (permalink)  
Antiguo 14/03/2012, 13:26
 
Fecha de Ingreso: diciembre-2010
Mensajes: 6
Antigüedad: 13 años, 4 meses
Puntos: 0
Optimización con scilab

Hola a todos soy novato en este foro y espero ue alguien me pueda ayudar.Tengo que implementar una función para encontran un máximo empleando el método de la sección aurea, sin embargo al ejecutarlo no consigo que entre en ciclo while y me imprime xopt inicial de ese ciclo que no es el que me interesa.Ojala alguien me ayude a encontrar el error .Muchas gracias os adjunto el programa que para los parametros dados.muchas gracias

Código Python:
Ver original
  1. deff('fx=ec(x)','fx=2*sin(x)-(x^2/10)');
  2. xlow=0
  3. xhigh=4
  4. maxit=1000
  5. es=0.000001
  6. opcion=1
  7.  
  8. function [xopt,fopt,iter,ea]=goldmax(xlow,xhigh,maxit,fx)
  9.     xl=xlow
  10.     xh=xhigh
  11.     iter=1
  12.    
  13.     d=(xh-xl)*((sqrt(5)-1)/2*(xh-xl))
  14.     x1=xl+d
  15.     x2=xh+d
  16.     f1=ec(x1)
  17.     f2=ec(x2)
  18.    
  19.     if f2<f1 then
  20.         xopt=x1
  21.         fopt=f1
  22.     else
  23.         xopt=x2
  24.         fopt=f2
  25.     end
  26.     es=0.00001
  27.     ea=es*10
  28.     while ea>es & iter<maxit
  29.         iter=iter+1
  30.         d=d*R
  31.         if f1>f2 then
  32.             xl=x2
  33.             x2=x1
  34.             x1=xl+d
  35.             f2=f1
  36.             f1=ec(x1)
  37.          else
  38.              xh=x1
  39.              x1=x2
  40.              x2=xh-d
  41.              f1=f2
  42.              f2=ec(x2)
  43.           end
  44.          
  45.           if f1>f2 then
  46.               xopt=x1
  47.               fopt=f1
  48.           else
  49.               xopt=x2
  50.               fopt=f2
  51.            end
  52.            if xopt~=0
  53.                ea=100*(1-R)*abs((xh-xl)/xopt)
  54.            end
  55.       end
  56.      
  57. endfunction
  58.  
  59. [xopt,fopt,iter,ea]=gold(xlow,xhigh,maxit,ec)
  60. disp(xopt)
  #2 (permalink)  
Antiguo 15/03/2012, 13:46
 
Fecha de Ingreso: junio-2010
Ubicación: Madrid
Mensajes: 620
Antigüedad: 13 años, 10 meses
Puntos: 73
Respuesta: Optimización con scilab

No conozco la sintaxis de Scilab, aunque tengo idea de que está basada en la sintaxis de C.

Prueba poniendo

Código C:
Ver original
  1. while ((ea>es) && (iter<maxit))

es decir, de manera similar a como se haría en C.

Saludos,

Etiquetas: contra, optimización, programa, scilab
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:54.