|

INSTITUTO POLITECNICO NACIONAL


UNIDAD PROFESIONAL INTERDISIPLINARIA DE INGENIERIA
CAMPUS GUANAJUATO


METODOS NUMERICOS



PROYECTO lll.

















|
Problema 1.-

A).-Cargar el archivo, 'califs.dat'. Ejecuta el archivo con scilab y obtener la grafica donde se
observan las calificaciones obtenidas y el porcentaje de cada uno de ellos.


load('califs.dat','califs')
histplot([2.5 3.5 4.5 5.5 6.5 7.5 8.5 9.5 10.5],califs)

Ejecutando el código se obtiene la siguiente grafica:

Para hallar el porcentaje correspondiente a cada calificación lo que hice fue usar el comando
xgrid, para posteriormente aplicar zoom y observar cada una de ellas, después las registre.
|
Esta es la grafica con xgrid.-


Los porcentajes que corresponden a cada calificación son los siguientes:







B).- La función

Se conoce como distribución normal donde µ y > 0 son números reales. Verifica, analítica o
numéricamente

Que independientemente de los valores de µ y .

Verificando de manera numérica, es decir con ayuda de scilab, si se puede comprobar que la
integral de la función anterior efectivamente es igual a 1.
CALIFICACION PORCENTEJE
%
2 0.25
3 1.25
4 4.75
5 12.75
6 14
7 27.25
8 24
9 11.5
10 4.25
|
Para resolver con scilab utilice el método del trapecio, uno de los métodos mas sencillos para
la integración a continuación muestro el código:


function y=f(x)
y=(1/(sqrt(2*%pi)))*(%e^(-((x)/(sqrt(2)))^2))
endfunction

function I=trap(f, a, b, n)
h=(b-a)/n
suma=0
for k=(a+h):h:(b-h)
suma=suma+f(k)
end
I=((h/2)*(f(a)+2*suma+f(b)))
endfunction
trap(f,-100,100,1000)


Las constantes µ y ambas valen 1.



C).- Para una muestra x1, x2,...xn (aquí las xi's pueden ser las calificaciones de los alumnos), se
pueden obtener las siguientes estimación es:

,

Sustituye estas estimaciones en f(x) y grafícala en la misma figura del histograma.

La grafica que se obtiene es la siguiente:

El resultado al ejecutar el código es 1.
Los valores para las constantes son:
2.4224


|



El código es el siguiente:

load('califs.dat','califs')
histplot([2.5 3.5 4.5 5.5 6.5 7.5 8.5 9.5 10.5],califs)

function c=f(x)
c=(1/sqrt(2*%pi*2.422))*(%e^((-(x-6.997)^2)/(2*2.430^2)))
endfunction

x=0:.01:16
plot(x,f)

D).- Con la tabla de x = calificación y y = porcentaje de la parte A, haz un ajuste a la función
f(x) mediante regresión para obtener otra estimación de µ y . Sustituye estos valores en f(x) y
grafícala en la misma figura del histograma.
El código empleado en scilab es el siguiente (Método de regresión):
|
load('califs.dat','califs')
histplot([2.5 3.5 4.5 5.5 6.5 7.5 8.5 9.5 10.5],califs)

function suma=ssr(p)
x=[2 3 4 5 6 7 8 9 10]
y=[0.25 1.25 4.75 12.75 14 27.25 24 11.5 4.25]
suma=sum((y-(1/sqrt(2*%pi*p(1)))*(%e^((-(x-p(2))^2)/(2*p(1)^2)))^2)
endfunction
fminsearch(ssr,[1;1;1])
function a=f(x)
a=(1/sqrt(2*%pi*1.5386803))*(%e^((-(x-7.1919826)^2)/(2*1.5386803^2)))
endfunction
x=0:0.1:15
plot(x,f)

E).- ¿Son iguales o diferentes las funciones de las partes C y D? ¿A qué crees que se debe esto?
No son iguales es mas exacta la función de la parte D ya que se ajusta de una mejor manera al
patrón de las calificaciones, esto se debe a que en el inciso D usamos un método numérico que
nos garantiza una estimación bastante buena, en cambio en C se dio una aproximación que como
bien especifica, se aproximan, solo eso.
F).-Obtén el número exacto de estudiantes que obtuvieron 6 o más de calificación y el número
exacto de estudiantes que obtuvieron 5 o menos.





Estos datos los obtuve según los porcentajes que le
corresponden a cada calificación.










CALIFICACION NUM.
ESTUDIANTES
6 o mas
(81%)
324
5 o menos
(19%)
76

CALIFICACION
PORCENTEJE
%
2 0.25
3 1.25
4 4.75
5 12.75
6 14
7 27.25
8 24
9 11.5
10 4.25
Los valores de las constantes ahora
son:
7.1919826 1.5386803


|
G).-Plantea una integral para obtener el porcentaje de alumnos que obtuvieron 6 o más y otra
integral para obtener el número de estudiantes que obtuvieron 5 o menos.

El código es el siguiente
Use el método de integración del trapecio y las constantes obtenidas en el inciso C)
function y=f(x)
y=(1/sqrt(2*%pi*2.4224))*(%e^((-(x-6.9975)^2)/(2*2.4224^2)))
endfunction

function I=trapecio(f, a, b, n)
h=(a+b)/n
suma=0
for k=(a+h):h:(b-h)
suma=suma+f(k)
end
I=((h/2)*(f(a)+2*suma+f(b)))
Endfunction
trapecio(f,6,10,50)-----------------Para mas de 6
trapecio(f,2,5,4)--------------------Para menos de 6

Para más de 6
-->function y=f(x)
--> y=(1/sqrt(2*%pi*2.4224))*(%e^((-(x-6.9975)^2)/(2*2.4224^2)))
-->endfunction

-->function I=trapecio(f, a, b, n)
--> h=(a+b)/n
--> suma=0
--> for k=(a+h):h:(b-h)
--> suma=suma+f(k)
--> end
--> I=((h/2)*(f(a)+2*suma+f(b)))
-->endfunction

-->trapecio(f,6,10,50)
ans =

0.8371310 (Esto por 100)

Para menos de 6.
-->function y=f(x)
--> y=(1/sqrt(2*%pi*2.4224))*(%e^((-(x-6.9975)^2)/(2*2.4224^2)))
-->endfunction

-->function I=trapecio(f, a, b, n)
--> h=(a+b)/n
--> suma=0
--> for k=(a+h):h:(b-h)
--> suma=suma+f(k)
--> end
--> I=((h/2)*(f(a)+2*suma+f(b)))
|
-->endfunction
->trapecio(f,2,5,4)
ans =

0.1863458 (Multiplicar por 100)

H).- Estima las integrales de la parte G usando las funciones obtenidas en las partes como
integrando C y D.

El código en scilab es el siguiente:

function y=f(x)
y=(1/sqrt(2*%pi*1.5386803))*(%e^((-(x-7.1919826)^2)/(2*1.5386803^2)))
endfunction

function I=trap(f, a, b, n)
h=(a+b)/n
suma=0
for k=(a+h):h:(b-h)
suma=suma+f(k)
end
I=((h/2)*(f(a)+2*suma+f(b)))
Endfunction
trap(f,2,5,2)
trap(f,6,10,15)


Usando las constantes con los valores:
7.1919826 1.5386803

-->function y=f(x)
--> y=(1/sqrt(2*%pi*1.5386803))*(%e^((-(x-7.1919826)^2)/(2*1.5386803^2)))
-->endfunction
Advertencia : redefiniendo función: f . Use funcprot(0) para evitar este mensaje

-->function I=trap(f, a, b, n)
--> h=(a+b)/n
--> suma=0
--> for k=(a+h):h:(b-h)
--> suma=suma+f(k)
--> end
--> I=((h/2)*(f(a)+2*suma+f(b)))
-->endfunction

-->trap(f,2,5,2)
ans =

0.2059224 menos de 6.

|
-->trap(f,6,10,15)
ans =

0.7859312 más de 6.

I).-Estima las integrales de la parte G mediante splines cúbicos (no necesariamente naturales)
usando los datos de la tabla de la parte A.


Codigo en scilab:

function y=f(x)
t=[2 3 4 5 6 7 8 9 10]
v=[0.25 1.25 4.75 12.75 14 27.25 24 11.5 4.25]
d=splin(t,v,"natural")
y=interp(x,t,v,d)
endfunction
intg(2,5,f)
intg(6,10,f)


Ejecutando en scilab:


-->function y=f(x)
--> t=[2 3 4 5 6 7 8 9 10]
--> v=[0.25 1.25 4.75 12.75 14 27.25 24 11.5 4.25]
-->d=splin(t,v,"natural")
-->y=interp(x,t,v,d)
-->endfunction
Advertencia : redefiniendo función: f . Use funcprot(0) para evitar este mensaje


-->intg(2,5,f)
ans =

12.318587 Menos de 6.

-->function y=f(x)
--> t=[2 3 4 5 6 7 8 9 10]
--> v=[0.25 1.25 4.75 12.75 14 27.25 24 11.5 4.25]
-->d=splin(t,v,"natural")
-->y=interp(x,t,v,d)
-->endfunction

-->intg(6,10,f)
ans =

73.009113 Mas de 6.


|

Problema 2.
1.-A un sistema masa-resorte inicialmente en reposo se le aplica una fuerza P(t) definida por:



Donde la fuerza está dada en Newton y el tiempo en segundos.
La ecuación diferencial que describe el movimiento de este sistema es:



Donde y(t) es la posición de la masa m respecto al tiempo t y k la constante clásica del resorte.
A).- Utilizando alguno de los métodos numéricos vistos (de Euler, de Runge-Kutta de orden 2 o 4),
aproximarla función de posición y la velocidad de la masa en el intervalo [0,5] segundo. Usar
m=3.5 kg y k= 75 N/m.
Primeramente resolver la ecuación diferencial dada por la ecuación que describe el movimiento
del resorte la ecuación diferencial que conseguí fue la siguiente:
Despejar P(t).
P(t)=my’’+ky
Ahora resolver la ecuación:

Ahora introducimos este sitema de eciaciones a el codigo en scilab:
function y=p(x)
if x<2 then
y=10*x
end
if x>=2 then
y=20
end
Los if corresponden a los valores
iniciales, es decir dependiendo de los
valores que tenga x la ecuación
deberá adoptar ciertos valores.
|

endfunction

function [z]=f(x, y)
z=[y(2);(p(x)/3.5)-(75*y(1))]
endfunction

function [x, y]=euler(f, x0, y0, xf, h)
n=ceil((xf-x0)/h)
x(1)=x0
y(:,1)=y0
for i=1:n
x(i+1)=x(i)+h
y(:,i+1)=y(:,i)+h*f(x(i),y(:,i))
end
endfunction
[x,y]=euler(f,0,[0;0],5,0.01)
plot(x,y(1,:))
plot(x,y(:,:))


Como se puede observar en este problema use el metodo de Euler, usado para resolver sistema de
ecuaciones.
Esto debido a que es un codigo que dominamos,ademas de que se adapta a la perfeccion anuestro
sistema de ecuaciones.
B).-Determina el maximo desplazamiento de la masa.
En este inciso nos pide identificar el maximo desplazamiento obtenido en el intervalo de tiempo
de 0 seg a 5 seg. Para esto me guie de la grafica obtenida en scilab. Observe donde la funcion
presentaba el maximo golbal (Por lo menos en el intervalo [0,5])

Introduje el sistema de ecuaciones diferenciales
que anteriormente obtuve.
Con esta función se graficara la tabla de tiempo
(x) contra posición (y).
Con esta función se graficara la tabla de tiempo
(x) contra posición (y) y también la de velocidad
(y) contra tiempo (x).
|
En el punto rojo se observa el maximo absoluto, el cual esta dado en el segundo 5 seg. y la
cantidad de movimiento realizado es de 0.3496918 m











En esta gráfica el intervalo de tiempo es mayor [0,10] esto con la finalidad de que se observe aun
mejor el comportamiento de la función. El punto rojo indica el máximo desplazamiento obtenido
en el lapso que nos piden [0,5].
Para comprobar nuestra respuesta corroboramos nuestra observación en la grafica:
|



C).- Determina el mínimo valor de t para cual la función de velocidad tome el máximo valor.
Para este inciso también me fije en la grafica, pero para ejecutar la grafica de velocidad tuve que
utilizar plot(x,y(:,:)), la grafica que nos arrojara scilab es la siguiente.

La función en color verde es la correspondiente a la velocidad (y) con respecto al tiempo (x).










B).-De esta forma obtenemos el máximo desplazamiento de
la masa respectó a un tiempo.
tiempo Desplazamiento velocidad
5.0 segundos 0.3496918 metros 0.1427441
m/seg.

Tiempo/desplazamiento/velocidad
|
Aplicando xgrid queda de la siguiente manera en la cual se pueden apreciar mejor las
aproximaciones.
Se puede observar rápidamente donde se obtiene un máximo, en este caso el primer máximo
obtenido por la velocidad en el lapso de tiempo [0,5]. Para comporbar nuestra respuesta nos
fijamos en los valores arrojados en scilab:

Las explicaciones de los métodos que emplee se encuentran en cada inciso.
C).-De esta forma podemos dar un valor de tiempo en el cual se
alcanza el primer máximo en la velocidad, el cual es:
Tiempo velocidad Desplazamiento
0.68 segundos 0.27671313
m/seg
0.0907890
metros

Tiempo/desplazamiento/velocidad
|

Una de las cuestiones a analizar será el por qué elegí y(0)=0, esto lo decidí basándome en el
enunciado el cual menciona que l ecuación del resorte lo muestra en su estado de reposo. Pero
también entra el cuestionamiento de ¿por qué entonces el resorte empieza a mostrar un
desplazamiento?, esto se puede explicar a que hay una fuerza que se aplica sobre el resorte, P(t),
siendo esta la que hace que el resorte presente un cambio en su estado de reposo, se comienza a
mover.
La exactitud de los datos obtenidos pienso que son suficientemente exactos para describir el
comportamiento del resorte, pues en la grafica describe un movimiento armónico simple,
característico en los resortes. Por lo tanto yo diría que las estimaciones tanto en el desplazamiento
como en la velocidad son acertadas.