Ver Mensaje Individual
  #3 (permalink)  
Antiguo 10/04/2007, 15:14
flope
 
Fecha de Ingreso: enero-2007
Mensajes: 22
Antigüedad: 17 años, 10 meses
Puntos: 0
Re: Variable scope con local

Muchas gracias.
Si, eso soluciona el problema anterior.
Pero esta aproximacion, creo que no me sirve para mi programa. Tengo que obtener las areas de una funcion para diferentes sets de datos. El problema es que la funcion no es sencilla (incluye sumatorio).

Para calcular la integral utilizo un modulo de CPAN q calcula el area de f(x) para un valor maximo y minimo. Este modulo necesita una referencia a una funcion f.

Para un solo set de datos (@datos) valdria lo siguiente ya que puedo utilizar @datos y $nos_datos como variables globales.

Código:
$nos_datos =  scalar @datos;

          use Math::Integral::Romberg 'integral';
	  my $area = integral(\&f, $imin, $imax); 

sub f {
     my ($x) = @_;
     my $output = 0;
     for my $dato (@datos) {
		 $output += (20 * $dato * $x * $x * exp(-16 * $dato * $x ));
     }
     return ($output/$nos_datos);
}
Pero cuando tengo que repetir este calculo del area para diferentes sets de datos (diferentes @datos) ya no puedo utulizar estas variables como globales. Estas se quedan como locales cuando hago el loop para recorrer los diferentes sets de datos.

sugerencias? Pasar de la funcion Romberg i crear mi propia subroutina? Canviar la estructura del programa?

Lo siento si no me he explicado bien.

Muchas gracias por vuestra ayuda y tiempo!!!