9
Nombre del alumno: Carlos Perales González Nombre de la asignatura: Programación Científica Curso académico: 1º del Grado de Física, 2011-2012 Nombre y número de la práctica: 27.- CÁLCULO DEL NÚMERO DE MACH

Un estudio numérico sobre el número de Mach

Embed Size (px)

Citation preview

Page 1: Un estudio numérico sobre el número de Mach

Nombre del alumno: Carlos Perales GonzálezNombre de la asignatura: Programación CientíficaCurso académico: 1º del Grado de Física, 2011-2012Nombre y número de la práctica:

27.- CÁLCULO DEL NÚMERO DE MACH

Page 2: Un estudio numérico sobre el número de Mach

1.-Descripción y análisis del problema1.1-Número de Mach

El número de Mach, que se aplica para cálculos relacionados con flujos en fluidos compresibles, es la relación entre la velocidad de una de las partes de un cuerpo que se mueve en un fluido y la velocidad del sonido en ese fluido. El número de Mach, por tanto, se expresa así:

M=V cuerpo

V sonido

1.2.-Regímenes de flujoSi nos fijamos en la gama de valores que puede tomar M, podemos

distinguir cinco regímenes de flujo:

-Régimen incompresible: La proporción es pequeña, muy inferior a la unidad (aproximadamente 0.2 para gases perfectos). El fluido se considera incompresible.

-Régimen subsónico: El número de Mach es mayor que 0.2 pero menor que 0.7. Los efectos de la compresibilidad del fluido empiezan a notarse.

-Régimen transónico: El número de Mach se situa entre 0.7 y 1.2. Dentro de este régimen se incluyen los objetos que viajan a la velocidad del sonido (Mach 1).

-Régimen supersónico: Mach toma valores desde 1.2 hasta otros que pueden alcanzar el 5.

-Régimen hipersónico: El número de Mach es superior a 5

1.3.-Número de Mach crítico y coeficiente de presiónPara entender el número de Mach Crítico, debemos suponer que el

observador del movimiento es el propio cuerpo que se desplaza en un fluido. En ese caso, M sería la proporción entre la velocidad del fluido que se mueve en torno a él y la velocidad del sonido en ese fluido. El número de Mach Crítico es entonces aquel en el cual el flujo del fluido, en una de las partes del cuerpo, alcanza la velocidad del sonido en dicho fluido. Sin embargo, otras partes del fluido se desplazarán en torno al cuerpo a menor velocidad, siendo por tanto el número de Mach crítico necesariamente menor que la unidad.

El coeficiente de presión, Cp, se define como la presión que ejerce un

Page 3: Un estudio numérico sobre el número de Mach

flujo sobre un cuerpo para un número Mach. Si M es Mach crítico, Cp será la máxima presión que se ejerce sobre el cuerpo. En el aire, la ecuación de Cp

es:

C p=1

(0.7×M 2)×[[

(2+0.4×M 2)

2.4](7/2 )

−1]

Cuando se realizan test a aviones a bajas velocidades, los efectos de compresibilidad son despreciables y se puede calcular el valor experimentalmente del coeficiente de presión mínima, Cpi. Este coeficiente se relaciona con Cp a través de la relación de Kármán-Tsien:

C pi

C p

=√(1−M 2)+

M 2×C pi

(2×(1+√(1−M 2)))

Para determinar M, se sustituye la expresión de Cp en la relación de Kárman-Tsien, y se resuelve la ecuación que resulta para M.

2.-Problema, gráfica y desarrollo informático2.1.-Problema

Una vez que sabemos esto, la actividad que se nos presenta es calcular el valor del número de Mach crítico M, teniendo como dato que C pi = - 0.383 y que el valor es menor que 1.

El obstáculo con el que nos encontramos es que dicha ecuación no puede resolverse por métodos algebraicos, por lo que debemos recurrir a métodos númericos. Para este problema, nos piden que calculemos M usando:-El método de la bisección con una tolerancia de ε = 10 ².⁻-El método de la secante, partiendo de los mismos valores iniciales, con una tolerancia de 10-6.

Sabemos que, como el método de la secante es más eficaz, en la misma tolerancia tendríamos la misma solución con muchas menos

[√(1−M 2)+(

M 2×C pi

(2×(1+√(1−M 2))))]×[

1

(0.7×M 2)×((

(2+0.4×M 2)

2.4)(7/ 2)

−1)]−(C pi)=0

Page 4: Un estudio numérico sobre el número de Mach

iteraciones que en el caso del método de la bisección. La desventaja del método de la secante es que supone que la ecuación con la que trabajamos es, no solo continua (condición necesaria también para el método de la bisección), sino también derivable en el intervalo, mientras que ese requisito no es necesario en el caso de aplicar el método de la bisección. Graficaremos la función para ver si es continua y derivable en todo el intervalo.

Nos informan de que el valor de M se espera menor que la unidad, luego el intervalo que tenemos que tomar es desde 0 hasta 1. Aquí una gráfica de la ecuación con la que trabajamos (es la ecuación en función de M con Cpi=-0.383, expuesta en el punto 1.3)

Cuando la graficamos en un intervalo mayor (desde -1 hasta +1, por ejemplo), nos damos cuenta de que la función tiende hacia menos infinito en el punto cero, luego no es derivable en dicho punto.

Page 5: Un estudio numérico sobre el número de Mach

Hay que tener en cuenta eso para no elegir el valor x = 0 como punto de partida en el programa del método de la secante. Elgiremos, en ese caso, x = 1.

2.2.-Códigos en MatlabEste es el código de la función del método de la bisección que usaremos

function [solucion,x,fsolucion,fx,error,iter] = biseccion(fun,a,b,tolinter,tolfun,maxiter) % Aproxima por el metodo de la biseccion una raiz de la ecuacion % fun(x)=0 % suponiendo que esta existe y es unica en el intervalo [a,b] %------------------------------------------------------------- % Argumentos de entrada: %----------------------- % a = extremo inferior del intervalo % b = extremo superior del intervalo % tolinter = tolerancia para el intervalo % tolfun = tolerancia para el valor de la funcion % maxiter = numero maximo de iteraciones a realizar % fun = funcion (debe estar definida en el programa % de llamada usando 'inline' ) %-------------------------------------------------------------

Page 6: Un estudio numérico sobre el número de Mach

% Argumentos de salida: %----------------------- % solucion = raiz aproximada % x = vector con la sucesion de valores que da el metodo % fsolucion = valor de la funcion en la raiz aproximada % fx = vector con la sucesion de los valores de la funcion % error = error cometido % iter = numero de iteraciones realizadas %------------------------------------------------------------- fa=fun(a); fb=fun(b); % Se comprueba que la raiz est en los extermos �if fa==0 fprintf('La raiz es = %f \n',a) return end if fb==0 fprintf('La raiz es = %f \n',b) return end % Se comprueba que hay cambio de signo en [a,b] if sign(fa)==sign(fb) disp('Error la funcion debe cambiar de signo en (a,b)'); return; end % Inicializacion de variables % Se hace la primera iteracion de la biseccion iter = 1; error =(b-a)*0.5; solucion = a+error; fsolucion =fun(solucion); x = solucion; fx = fsolucion; % Iteraciones de la biseccion while (error >tolinter | fsolucion>tolfun) & (iter < maxiter) % Se comprueba si se ha dado con la solucion if fsolucion==0 fprintf('La raiz es = %f \n',fsolucion) return end % Se busca el nuevo subintervalo if sign(fa)==sign(fsolucion) % el cambio de signo esta entre b y solucion

a = solucion; fa = fsolucion; else % el cambio de signo esta entre a y solucion % Puedo comentar las dos instrucciones que siguen porque, al calcular el % punto medio en la forma que se hace no se necesita ni el valor de b ni el % de fun(b) % b =solucion; % fb =fsolucion;

Page 7: Un estudio numérico sobre el número de Mach

end % actualizacion de las variables error = error/2; solucion = a+error; fsolucion = fun(solucion); x = [x solucion]; fx = [fx fsolucion]; iter = iter+1; end % Se comprueba si se han alcanzado las tolerancias if error > tolinter | fsolucion>tolfun disp('No se alzanzan las tolerancias en las iteraciones dadas') end

Este es el código de la función del método de la secante que usaremos

function [x2,xvect,nit]=metodosecante(f,x,maxiter,tolerancia) % Aproxima por el metodo de la biseccion una raiz de la ecuacion % f(x)=0 % suponiendo que esta, y su derivada, existen en [a,b] %------------------------------------------------------------- % Argumentos de entrada: %----------------------- % x = valor inicial del que partimos% tolerancia = tolerancia para el intervalo % maxiter = numero maximo de iteraciones a realizar % f = funcion (debe estar definida en el programa % de llamada usando 'inline' ) %------------------------------------------------------------- % Argumentos de salida: %----------------------- % x2 = raiz aproximada % xvect = vector con la sucesion de valores que da el metodo % intervalo = error cometido % nit = numero de iteraciones realizadas %------------------------------------------------------------- % Definimos fuera del intervalo el número de iteraciones nit=0; % Para calcular una aproximación en este método, necesitamos dos % anteriores. Definimos uno como "x" y otro como "x1" tal que x1=f(x)+x; % Agruparemos todos los resultados en un vector llamado "xvect" xvect=x1; for a=1:maxiter intervalo=x1; % este será el valor que nos de la cota de error entre un valor de x y el anterior x2=x1-f(x1)*(x1-x)/(f(x1)-f(x)); xvect=[xvect x2]; nit=nit+1; intervalo=abs(intervalo-x2); if intervalo<tolerancia; return

Page 8: Un estudio numérico sobre el número de Mach

else % cambio de variables x=x1; x1=x2; end end

Teniendo estos dos archivos en la misma carpeta, creamos dos programas diferentes: uno que calcule la solución con el método de la bisección y otro con el de la secante

-Según el método de la bisección:

% Con este programa evaluaremos el numero de Mach (M) para un coeficiente % de presion minimo de un fluido de -0.383 disp('Calculo del numero de Mach por el metodo de la biseccion'); Cpi=-0.383; f=inline('((1-M^2)^(1/2)+M^2*(-0.383)/(2*(1+(1-M^2)^(1/2))))*1/(0.7*M^2)*(((2+0.4*M^2)/2.4)^(7/2)-1)-(-0.383)'); % Graficamos la función para asegurarnos de que corta con el eje OX en ese % intervalo ezplot('((1-M^2)^(1/2)+M^2*(-0.383)/(2*(1+(1-M^2)^(1/2))))*1/(0.7*M^2)*(((2+0.4*M^2)/2.4)^(7/2)-1)-(-0.383)',[0,1]); grid on; % Sabiendo que M está entre 0 y 1a=0; b=1; % Definiremoson una tolerancia de 10^-2 tolinter=10^-2; % Usaremos una tolerancia de f muy pequeño, lo suficiente para que el % programa no se detenga debido a esta tolerancia. Estableceremos también % un número grande de iteraciones, con la misma finalidad tolfun=10^-8; maxiter=1000; % Llamamos a la funcion 'biseccion' [M,x,fM,fx,error,iter]=biseccion(f,a,b,tolinter,tolfun,maxiter); % Con esta solucion, podríamos aplicar el metodo de la % secante para aproximarnos más a la solución fprintf('Para un coeficiente de presión mínimo de %2.4f\n',Cpi) fprintf('El número de Mach es %f,\n',M) fprintf('con un error de %2.1e ',error) fprintf('en %i iteraciones\n',iter)

-Según el método de la secante:

% Con este programa evaluaremos el numero de Mach (M) para un coeficiente % de presion minimo de un fluido de -0.383 disp('Calculo del numero de Mach por el metodo de la secante'); Cpi=-0.383; f=inline('((1-M^2)^(1/2)+M^2*(-0.383)/(2*(1+(1-M^2)^(1/2))))*1/(0.7*M^2)*(((2+0.4*M^2)/2.4)^(7/2)-1)-(-0.383)'); % Graficamos la funcion para asegurarnos de que corta con el eje OX en ese

Page 9: Un estudio numérico sobre el número de Mach

% intervalo ezplot('((1-M^2)^(1/2)+M^2*(-0.383)/(2*(1+(1-M^2)^(1/2))))*1/(0.7*M^2)*(((2+0.4*M^2)/2.4)^(7/2)-1)-(-0.383)',[0,1]); grid on; % Como hemos visto en la grafica, usaremos 1 como punto de partidax=1; % Definimos ahora la tolerancia como 10^-6, y dejaremos el mismo numero de % maximas iteraciones permitidas que en la funcion anterior tolerancia=10^-6; maxiter=1000; % Llamamos a la funcion 'metodosecante' [M,xvect,nit,intervalo]=metodosecante(f,M,maxiter,tolerancia); fprintf('Para un coeficiente de presión mínimo de %2.4f\n',Cpi) fprintf('El número de Mach es %2.8f, ',M) fprintf('con un error de %2.1e\n',intervalo) fprintf('en %i iteraciones\n',nit)

3.-Análisis de los resultados matemáticos obtenidos

El número de Mach obtenido nos da una idea de la resistencia al aire que opone el cuerpo, ya que a números de Mach de entre el 2% y el 5% del Mach crítico, la resistencia al aire aumenta significativamente (es lo que se conoce como drag).

El primer programa (método de la bisección) nos da una solución de 0.738281 con un error de 3.9x10 ³ en 8 iteraciones. El segundo programa,⁻ sin embargo, resulta para M un valor de 0.73959828, con un error de 1.8x10 en 14 iteraciones. Cogiendo cualquiera de los dos valores podemos⁻⁷ afirmar que el cuerpo es muy aerodinámico, ya que, por ejemplo, el número de Mach Crítico de un helicóptero ronda el 0.3, y el de algunos aerorreactores, 0.75.

Parece importante destacar la diferencia en el número de iteraciones realizadas. Aunque el segundo programa realizó la aproximación en más iteraciones, aproximó con más del cuadrado de afinidad en menos del doble de iteraciones. Tal y como comentamos en el punto 2, el método de la bisección es mucho más lento, ya que el orden de error máximo es 1 (la cota de error de una aproximación es la mitad de la cota de error de la aproximación anterior). Sin embargo, el método de la secante es de orden Ф = 1.618…, por ello aproxima mejor en un menor número de pasos.