Post on 30-Dec-2015
PROGRAMACIÓN ESTRUCTURADA Y MÉTODOS NUMÉRICOS
(RAÍCES Y AJUSTE DE CURVAS)
MILTON ALEJANDRO RENDON ALVAREZ (CC: 1036648405)
MANUEL ALEJANDRO ECHEVERRI MÁRQUEZ (CC: 1017209898)
Profesor:
FELIPE ANDRÉS OBANDO VEGA
UNIVERSIDAD DE ANTIOQUIA
MEDELLÍN
21 de octubre de 2013
Introducción.
El siguiente trabajo presenta la solución de cuatro problemas aplicados de la ingeniería que recurren a los métodos numéricos como un medio de solución eficiente y óptima. En este caso la solución de los problemas se basa en las raíces de funciones y el ajuste
de curvas.
Los problemas abordados son ejercicios aplicados en la ingeniería que debido a la complejidad de su solución se implementan métodos numéricos que puedan dar una
solución aproximada pero que sea válida para los cálculos de ingeniería.
Para la implementación de dichos métodos se utiliza la programación estructurada como principal herramienta de cálculo iterativo. Para esto se debe de implementar los
conocimientos básicos adquiridos y se debe de realizar una representación e implementación practica de cada algoritmo.
La evaluación de los métodos y su implementación se realiza mediante indicadores estadísticos y computacionales, los cuales indican si el método es adecuado y preciso
para el problema a solucionar y su viabilidad a la hora de implementarse en algoritmos complejos, respectivamente.
Objetivos
Objetivo general: utilizar la programación estructurada y las aproximaciones por métodos numéricos como herramientas para la solución de problemas que se presentan con frecuencia en la ingeniería aplicada. En este caso en la solución de ecuaciones y la
explicación mas general de un fenómeno determinado, utilizando unos cuantos valores observados en este.
Objetivos específicos:
1. Comparar cada uno de los diferentes métodos utilizados en solución de un problema determinado, cual es su comportamiento, ventajas y desventajas y cuales de ellos representan en mayor medida un fenómeno u objeto de estudio.
2. Observar en los resultados obtenidos, cual de los métodos nos proporciona mayor precisión en las estimaciones, cual requiere mayores recursos para su solución y cuales son los parámetros que nos dan la confianza para la
implementación del método.
1. Se mide la temperatura en varios puntos de una placa calentada. Implemente un
algoritmo en Matlab que permita estimar mediante regresión o interpolación la temperatura de la placa en cualquier valor de x y y dentro del rango dado en el cuadro 1,
grafique los datos.
1.1 Solución.
Para la resolución se propone un modelo de regresión lineal múltiple que permita obtener una expresión matemática que ilustre el comportamiento general de los datos. El método que se implementara será el de regresión lineal múltiple de mínimos
cuadrados. Este último permite realizar una aproximación relativamente significativa con un costo computacional accesible.
El método implementado tiene como finalidad obtener una expresión que represente
matemáticamente el comportamiento de un fenómeno real, y la estructura de dicha expresión es la siguiente:
La solución del problema se resume en la consecución de los parámetros constantes a0 y a1. Para esto se adaptó el algoritmo sugerido por Chapra1 para la solución de este corte de problemas.
DOFOR i _ 1, order _ 1 DOFOR j _ 1, i
sum _ 0 DOFOR _ _ 1, n
sum _ sum _ xi_1,_ _ xj_1,_
END DO ai,j _ sum
aj,i _ sum END DO sum _ 0
DOFOR _ _ 1, n sum _ sum _ y_ _ xi_1,_
END DO ai,order_2 _ sum
END DO
1 CHAPRA, Steven C.; CANALE, Raymond. Numerical methods for engineers. McGraw-Hill, Inc., 2005.
1.1.1 Resultados
El algoritmo resultante realiza una organización de los datos óptima para su resolución
y mediante cálculos básicos matriciales se logran obtener los coeficientes constantes de la regresión lineal. La ecuación resultante luego de ejecutar el algoritmo es la siguiente:
Además el algoritmo calcula los índices estadísticos r y r^2 que brindan una valiosa información para determinar la confiabilidad que se puede tener del modelo matemática generado. Estos valores para este caso específico son:
Por último el algoritmo genera una gráfica en 3D que permite visualizar de una manera
más clara los resultados obtenidos al aplicar la regresión lineal del modelo. El grafico 1 ilustra el comportamiento de la ecuación 1 e igualmente ilustra la gráfica de nube de puntos de los datos suministrados por el enunciado.
Grafico1. Comportamiento de la ecuación1 y distribución real de los datos.
05
02468
20
30
40
50
60
70
80
90
100
X Y
T(°
C)
1.1.2 Anális is
Los resultados obtenidos corresponden a un modelo matemático que representa de
buena manera la tendencia que maneja la Temperatura en la placa. Esta tesis se
comprueba mediante los índices estadísticos r y r2 que ambos son muy similares y
tienden a uno. Esto indica que aproximadamente el 90% de la placa se ve representado
mediante la expresión matemática obtenida por la regresión múltiple.
La comprobación del algoritmo se realizó mediante la herramienta computacional
Matlab, mediante la cual se corrió el algoritmo y se realizó una comprobación mediante
las herramientas estadísticas entregadas por el programa. Los resultados obtenidos para
la comprobación del modelo fueron los siguientes:
Se puede observar como los valores de los coeficientes coinciden con los del modelo, al
igual que el indicador estadístico r. Esto brinda más argumentos para la confiabilidad de
la regresión lineal obtenida.
Grafico 2. Información de los residuales.
La herramienta Matlab igualmente nos brinda la información de los residuales del
sistema. Este indicador estadístico evalúa cuanta información no está contenida dentro
del modelo y en que magnitud. En la gráfica se puede observar que pese a que los
residuales son un número considerable, su magnitud no es tan alta para descartar el
modelo.
Por último, para terminar de comprobar la calidad del algoritmo desarrollado, se evalúa
el tiempo computacional invertido para implementar el algoritmo.
En la tabla se evidencia que el tiempo total de cómputo para el algoritmo P1 es de
0.425s. Pese a que el tiempo computacional es bastante alto, se puede evidenciar que las
tres funciones que más tiempo computacional requirieron (mesh, newplot y scatter3),
son funciones de tipo grafico que por lo general no son funciones que se repitan mucho
a la hora de realizar una implementación del algoritmo en un problema real.
1.2.3 Conclus ión.
El algoritmo implementado para encontrar una regresión lineal de la temperatura de una
placa en función de sus coordenadas X y Y, cumple la tarea de manera óptima y
satisfactoria, cumpliendo con los rangos estadísticos de los diferentes indicadores y
realizando el procedimiento en un tiempo computacional razonable considerando la
descripción grafica que entrega el algoritmo.
Anexo 1.
Pseudocódigo.
SubProceso S<-sum (C)
Para i<-1 Hasta 25 Hacer S<-S+C(i) FinPara
FinSubProceso
Proceso Punto_Uno DimenSion C(25,3),X(5),T(25),Ye(5),X2(25),Y2(25),R(25),R1(25),R2(25),H(9),S(3),j(25)
h(25) SumX,SumY,SumX2,SumY2,SumXY,SumT,SumXT,SumYT,J,Q
X=[0,2,4,6,8] Y[0,2,4,6,8]
T(100,90,80,70,60;85,64.49,53.50,48.15,50;70,48.90,38.43,35.03,40;55,38.78,3
0.39,27.07,30;40,35,30,25,20) Para a<-1 Hasta 25 Con Paso 5 Hacer
Para i<-a Hasta a+4 Hacer C(i,1)<-(((a-1)*2/5)) FinPara
FinPara Para b<-1 Hasta 25 Con Paso 5 Hacer C(b:b+4,2)=X
FinPara Para q<-1 Hasta 25 Con Paso 25 Hacer
Para n<-q Hasta q+4 Hacer C(q:q+4,3)<-(T(15)) FinPara
FinPara SumX<-sum(C(:,1))
SumY<-sum(C(:,1)) Para i<-1 Hasta 25 Hacer X2(i)<-((C(i,1))^2)
Y2(i)<-((C(i,2))^2) FinPara
SumX2<-sum(X2) SumY2<-sum(Y2) Para i<-1 Hasta 25 Hacer
R(i)<-(C(i,1)*C(i,2)) FinPara
SumXY<-sum(R) SumT<-sum(C(:,3)) Para i<-1 Hasta 25 Hacer
R1(i)<-(C(i,1)*C(i,3)) FinPara
SumXT<-sum(R1)
Para i<-1 Hasta 25 Hacer
R2(i)<-(C(i,2)*C(i,3)) FinPara
SumYT<-sum(R2) n<-25 H(n,SumX,SumY;SumX,SumX2,SumXY;SumY,SumXY,SumY2)
D(SumT,SumXT,SumYT) S=D/A
a0<-S(1) a1<-S(2) a2<-S(3)
tm<-SumT/25 Para i<-1 Hasta 25 Hacer
h(i)<-((C(i,3)-a0-a1*C(i,1)-a2*C(i,2))^2) j(i)<-((C(i,3)-tm)^2) FinPara
H<-sum(h) J<-sum(j)
r2<-(J-H)/J r<-rc(r2) Escribir 'La regreSion multiple lineal obtenida es '
Escribir 'T=a0+a1X+a2Y' Escribir 'a0'
Escribir a0 Escribir 'a1' Escribir a1
Escribir 'a2' Escribir a2
Escribir 'El indice estadistico r es ' Escribir r Escribir 'El indice estadistico r2 es '
Escribir r2 Graficar
FinProceso
2. La viscosidad dinámica del agua
se relaciona con la temperatura
como se presenta en el cuadro 2.
T 0 5 10 20 30 40
µ 1.787 1.519 1.307 1.002 0.7975 0.6529
Cuadro 1. Relación entre la temperatura T [⁰C] y la viscosidad dinámica
.
2.1 Solución
El siguiente diagrama de dispersión muestra como es el comportamiento general de los datos registrados en el cuadro 1, lo que se pretende conseguir es una curva que permita
estimar con un alto grado de confiabilidad los valores intermedios a los datos con los que se cuenta, para ello se utilizaran diferentes métodos con el fin de observar como son las estimaciones en cada uno de ellos.
Grafico3. Dispersión de los datos.
2.1.1 Ajuste de los datos por el método de regresión polinomial.
El método consiste en hallar un polinomio de la forma en este caso se pide que se estime un polinomio de grado 2 cuya forma
general sería donde e representa el error. El procedimiento para
solucionar el problema se reduce a encontrar los valores , los cuales se
consiguen solucionando un sistema de ecuaciones simultáneas de la forma
donde:
A: matriz de coeficientes. Z: matriz que se obtiene después de separa la suma de los residuos o errores cuadrados
de la matriz de coeficientes. Y: Matriz que contiene los valores de la viscosidad presentes en el cuadro 2.
Para solucionar el sistema de ecuaciones se utilizo la herramienta de computo matlab y el algoritmo planteado se presenta en el anexo número 3 en pseudocódigo.
2.1.2 Resultados
Al solucionar la ecuación mediante la ayuda del programa se encontró que A= [0.0005 -0.0495 1.7672], de manera que el polinomio que mejor predice el
comportamiento real de los datos esta dado por:
La confiabilidad del modelo esta dada por los indicadores r y Obtenidos de igual manera por el programa y cuyos valores son:
Por otro lado el grafico 2 muestra como es el comportamiento de la curva, respecto a la distribución real de los datos.
Grafico 4. Curva ajustada polinomialmente.
2.1.3 Análisis.
El polinomio de grado 2 que se obtuvo mediante el método de mínimos cuadrados, representa de manera confiable la viscosidad en función de la temperatura, para un intervalo de temperaturas de [0,40] ⁰C, la precisión o confiabilidad de la estimación nos
la proporciona el valor de pues su valor es muy cercano a la unidad y nos dice que el
modelo explica el 99.91% de los valores de la viscosidad.
Anexo 2.
Pseudocódigo.
Proceso Punto_2_b
// T: vector que almacena los valores de la temperatura. // u: vector que almacena los valores de la viscosidad.
// xi= T(i); // yi= u(i); // n= longitud de T.
// sum(xi)=sumatoria de los elementos de T. // sum(yi)=sumatoria de los elementos de u.
// A= vector que almacena los coeficientes de un polinomio de la forma y=A1x^2+A2x+A3. // Z= (n,sum(xi),sum(xi 2); sum(xi),sum(xi^2),sum(xi 3);
sum(xi 2),sum(xi^3),sum(xi 4). // inv_Z: matriz inverza de Z.
// Trans_Y: matriz transpuesta de Y. Dimension T=(0,5,10,20,30,40);
Dimension u=(1.787,1.519,1.307,1.002,0.7975,0.6529); Dimension Z=(6,105,3025,105,3025,100125,3025,100125,3540625); Dimension y=(7.0654,90.746,2230);
A<--(inv_Z*Tras_Y); x<--7.5;
//Ai: Elemento A(i) de A. y<--A1*x^2+A2*x+A3; Escribir ' El valor aproximado de la viscosidad ajustado polinomialmente a una
7.5ºC’ es:’;
Escribir 'y'; FinProceso
2.2.1 Ajuste de los datos por el método de regresión lineal.
La ecuación de Andrade ha sido propuesta como modelo del efecto de la temperatura
sobre la viscosidad,
donde Ta es la temperatura absoluta en [⁰K], D y B son
parámetros.
La solución de este problema consiste en encontrar una línea recta que represente de mejor manera el comportamiento de los datos observados.
La ecuación de Andrade es una función exponencial, entonces será necesario modificarla de tal manera que se obtenga la expresión de una línea recta. Sacando
logaritmo natural a ambos lados de la ecuación, se obtiene:
Que representa una línea recta a una escala logarítmica. En consecuencia la resolución del problema se reduce a encontrar los valores D y B, para esto se utiliza el método de mínimos cuadrados y se implementa en matlab. El algoritmo implementado se presenta
en el anexo 4 en pseudocódigo.
2.2.2 Resultados.
Al resolver el problema mediante una regresión lineal de mínimos cuadrados el cual
utiliza operaciones aritméticas simples las cuales se implementaron en matlab se obtuvo que los coeficientes D y B son:
B= 2148.5 D= 0.00066846
Por lo tanto el modelo de Andrade ajustado con los datos valores obtenidos para B y D
esta dado por la expresión.
Los valores de r y
0.9960
El grafico 3 muestra el comportamiento de los datos estimados por regresión lineal de mínimos cuadrado y posteriormente ajustados a la ecuación de Andrade.
Grafico 5. Datos ajustados a la ecuación de Andrade.
2.2.3 Análisis
Se puede decir con un alto grado de confiabilidad que la regresión lineal representa
adecuadamente el comportamiento de la viscosidad con relación a la temperatura en un
intervalo de [273,313] ⁰K, esta afirmación se puede comprobar con los valores de el
error estándar de estimación ( ), la desviación estándar ( , y el coeficiente de
determinación ); ya que como se observa ( , y nos muestra que el
modelo explica un 99.20% de los valores de la viscosidad.
Anexo 3.
Proceso punto_2_c
// n: longitud de
// T: vector que almacena los valores de la temperatura.
// u: vector que almacena los valores de la viscosidad.
// xi=T(i);
// yi=u(i)
// Modelo De^(B/Ta).
// D,B: parametros.
// Ta: temperatura absoluta en [ºk]
// ln(u)<--ln(D)+(Bx); donde x=1/Ta
// B=(n*sum(xi.*yi)-(sum(xi)*sum(yi)))/(n*sum(xi.^2)-(sum(xi))^2);
Dimension T=(0,5,10,20,30,40);
dimension u=(1.787,1.519,1.307,1.002,0.7975,0.6529);
n<--6;
xi<--(xi+273);
xi<--1/xi;
yi<--ln(yi);
B<--2148.5;
xi_prom<-- 0.0035;
yi_prom<-- 0.1026;
D<--exp(yi_prom-B*xi_prom);
Ti<--7.5;
Ti<--(Ti+273);
u<--D*exp(B/Ti);
escribir 'c) El valor aproximado de la viscosidad ajustado linealmente por una
R.M.C a
una T=7.5ºC es:';
escribir 'u';
FinProceso
2.3.1 Ajuste de los datos por el método de interpolación de Lagrange.
Construir un polinomio de interpolación de Newton o LaGrange de n orden para
interpolar con T = 7,5⁰C. Probar con polinomios de diferentes grados y analizar los
resultados.
A diferencia del ajuste de curvas por regresión de mínimos cuadrados, que consiste en
encontrar la curva que mejor se ajuste a los datos sin pasar necesariamente por ellos, la
interpolación consiste en encontrar un polinomio único que se ajuste a los todos los
datos con los que se cuenta pasando por cada uno de ellos. El método que se utilizo
para resolución de este problema consiste en un polinomio de interpolación de
LaGrange el cual tiene la siguiente forma.
=∑
∏
La solución del problema se reduce a realizar las operaciones aritméticas
correspondientes al método utilizando los valores proporcionados por el enunciado, para
ello se utiliza el programa de computo matlab. El algoritmo utilizado para la resolución
del problema se presenta en l anexo 5.
2.3.2 Resultados.
En la resolución del problema por este método se estimaron polinomios de diferentes
grados y se evaluaron en un valor de 7.5 ⁰C que es un valor intermedio a dos de las
temperaturas que se entregaron en el enunciado; los valores estimados con polinomios
de grados n=1 hasta n=5 fueron:
Grado
polinomi
o
Valor estimado de la
viscosidad [
Tiempo de computo
[s]
Error
aproximado
1 0.001687
2 0.002426
3 1.40677 0.002435
4 0.00274
5 0.003184 0
Cuadro 2. Resultados obtenidos.
2.3.3 Análisis.
En los valores arrojados por el cálculo de polinomios de diferente grado para una misma
temperatura puede observarse que a mayor número de datos interpolados es decir a
mayor grado se obtiene una mejor estimación de los datos, sin embargo el costo para
una mejor aproximación se ve reflejado en un mayor costo computacional.
2.4 Conclusión.
Todos los métodos empleados para ajustar los datos funcionan con un alto grado de
confiabilidad, pero según los resultados obtenidos se puede decir que solo aquellos que
adoptan una curvatura explican de mejor manera los datos, en este caso un ajuste
polinomial por mínimos cuadrados, y una interpolación por el método de LaGrange, ya
que como se observa la distribución real de los datos tiene una tendencia exponencial.
Anexo 4
Proceso punto_2_d
Ti<--7.5;
grado_pol<--b;
Leer b;
Para n<-1 Hasta b Con Paso 1 Hacer
Si n==1 Entonces
i<--2;
Sino
i<--1;
FinSi
a<--i;
val<--0;
Para i<-a Hasta a+n Con Paso 1 Hacer
li<--1;
Para j<-a Hasta a+n Con Paso 1 Hacer
Si j<>i Entonces
li<--li*((Ti-Tj)/(Ti-Tj));
FinSi
FinPara
val<--(val+(li*u));
FinPara
fn<--val;
Escribir 'u de T n es ';
Escribir 'f(n)';
FinPara
FinProceso
3. La velocidad vertical de un cohete se calcula como (
) , donde
v=velocidad vertical, u= velocidad con la que se expele el combustible, en relación con el cohete, m0=masa inicial del cohete en el momento t = 0, q=tasa de consumo de
combustible y g=aceleración de la gravedad. Si u = 2000m/s, m0 = 150000kg, q = 2700kg/s y g = 9,81m/s2, elabore un algoritmo que permita calcular el momento en que
le cohete alcanza una velocidad determinada utilizando los métodos para el cálculo de raíces. Con este algoritmo compare los diferentes resultados al calcular el momento en cual v = 750m/s, tenga también en cuanta el número de iteraciones requeridos para
llegar a la solución. Suponga como criterio de parada un número máximo de iteraciones y un error relativo aproximado máximo igual para todos los métodos implementados.
3.1 Solución.
La solución de este problema consiste en realizar un algoritmo que encuentre el tiempo
en el cual el cohete lleva una velocidad determinada, la cual debe de ser ingresada por el
usuario, y para poder realizar esto se deben de implementar los 6 diferentes métodos
trabajados los cuales son:
1. Método gráfico.
2. Método de la bisección.
3. Método de la falsa posición.
4. Método de iteración simple de punto fijo.
5. Método de Newton Raphson.
6. Método de la secante.
Para la resolución del ejercicio se realizó un algoritmo principal que se encarga de la
interacción con el usuario para la selección de los diferentes parámetros de solución y
una serie de funciones que se encargan de solucionar el problema cada una mediante
uno de los seis métodos.
Los 6 métodos se probaron mediante la estimación del tiempo en el cual el cohete
alcanzaba una velocidad de 750 m/s. Para mejorar las condiciones de evaluación se
propuso unos tiempos extremos iguales para todos los métodos abiertos y el mismo
tiempo semilla para los métodos cerrados. Esto pone en igualdad de condiciones a todos
los métodos para poder realizar una evaluación objetiva del rendimiento de cada
algoritmo.
3.1.1 Resultados
En el cuadro 3 se ilustran los resultados de Número de iteraciones, Tiempo
computacional y el error relativo porcentual para cada uno de los métodos evaluados.
Método # de Iteraciones Tiempo
Computacional
Error relativo
porcentual
Método grafico - 0.1504 -
Método de la bisección 17 7.5947e-05 7.2205e-04
Método de la falsa posición 20 2.6958e-04 6.8310e-04
Método de iteración simple de punto
fijo*
- - -
Método de Newton Raphson 4 0.7072 5.0174e-04
Método de la secante 6 0.0011 3.1559e-06
Cuadro3. Resultados
3.1.2 Anális is .
El análisis de los resultados se tiene que realizar evaluando cada uno de los 3
parámetros que se impusieron a la hora de evaluar los diferentes métodos de resolución.
El método de iteración simple de punto fijo fue el único método que no converge para
la solución de este problema, debido a que la primera derivada de la función evaluada
siempre es negativa en el rango de trabajo.
La cantidad de iteraciones que se realicen es un parámetro que se debe de conservar
bajo, debido al consumo de memoria, pero su importancia no es la de mayor magnitud.
Para este parámetro el método más adecuado es el método de Newton Raphson, seguido
de su variante, el método de la secante. Estos dos métodos son igualmente destacados
en el error porcentual, pero el costo computacional de estos métodos es alto debido a la
complejidad de los cálculos matemáticos que se deben de realizar.
Por su parte los métodos abiertos poseen un tiempo computacional más bajo
comparados con los métodos cerrados, pese a que su número de iteraciones es bastante
elevado. Su error porcentual es más alto comparados con los demás métodos, pero se
encuentra en un rango aceptable para su implementación.
3.1.3 Conclus ión.
Luego de analizar los métodos, basándonos en los parámetros impuestos en la
metodología, se encuentra que la mayoría de los métodos, excepto el método grafico y
el método de iteración simple, son herramientas útiles y óptimas para la resolución del
enunciado. La selección de alguno de los métodos se debe de realizar basándose en los
parámetros de memoria disponible y tiempo computacional requerido.
Anexo 5.
Seudocódigo.
SubProceso MIterSim(t1,vi,u,m0,q,g)
vlt<-0 bdi<-1 et<-1
t2<-t1 val<-0
cont<-0 Mientras val<=0 Hacer cont<-cont+1
Si cont>1 Entonceso Escribir 'Ingrese un valor semilla adecuado'
Leer t1 val<-(q*u)/(m0-q*t1)-g Si cont>5 Entonceso
Escribir 'La solución no converge con estos valores semilla'
val<-1 FinSi FinSi
FinMientras Mientras bdi==1 Hacer
Si vi==0 Entonceso t2<-0 bdi<-0
Sino vlt<-vlt+1
t2<-((u*ln(m0/(m0-q*t1))-vi)/g) Si vlt!=1 Entonceso et<-abs(((t2-t1)/t2)*100)
FinSi Si et<0.001 O vlt>150 Entonceso
bdi<-0 FinSi t0<-t1
t1<-t2 FinSi
FinMientras Escribir 'El tiempo en el cual la velocidad es ',vi,' es ',t2 Escribir 'El error aproximado para el tiempo es de',et
FinSubProceso
SubProceso MNewRap (t1,vi,u,m0,q,g) vlt<-0 bdi<-1
et<-1 Escribir 'Ingrese el valor de la velocidad'
Leer vi
Escribir 'Ingrese valor semilla Para el tiempo' Leer t1
Mientras (m0/(m0-q*t1))<=0 O t1==0 Hacer Escribir 'Ingrese un valor semilla adecuado' Leer t1
FinMientras Mientras bdi==1 Hacer
Si vi==0 Entonceso t2<-0 bdi<-0
Sino vlt<-vlt+1
g1<-(u*ln(m0/(m0-q*t1))-g*t1-vi) g2<-(q*u)/(m0-q*t1)-g t2<-t1-g1/g2
Si vlt!=1 Entonceso et<-abs(((t2-t1)/t2)*100)
FinSi Si et<0.001 O vlt>150 Entonceso bdi<-0
FinSi t0<-t1
t1<-t2 FinSi FinMientras
Escribir 'El tiempo en el cual la velocidad es ',vi,' es ',t2 Escribir 'El error aproximado para el tiempo es de',et
FinSubProceso
SubProceso MSecante (t1,vi,u,m0,q,g)
vlt<-0 bdi<-1
et<-1 Escribir 'Ingrese el valor de la velocidad' Leer vi
Escribir 'Ingrese valor semilla para el tiempo' Leer t1
Mientras (m0/(m0-q*t1))<=0 O t1==0 Hacer Escribir 'Ingrese un valor semilla adecuado' Leer t1
FinMientras Mientras bdi==1 Hacer
Si vi==0 Entonceso t2<-0 bdi<-0
Sino vlt<-vlt+1
g0<-(u*ln(m0/(m0-q*t0))-g*t0-vi) g1<-(u*ln(m0/(m0-q*t1))-g*t1-vi)
t2<-t1-(((g1)*(t0-t1))/(g0-g1))
Si vlt!=1 Entonceso et<-abs(((t2-t1)/t2)*100)
FinSi Si et<0.001 O vlt>150 Entonceso bdi<-0
FinSi t0<-t1
t1<-t2 FinSi FinMientras
Escribir 'El tiempo en el cual la velocidad es ',vi,' es ',t2 Escribir 'El error aproximado para el tiempo es de',et
FinSubProceso
SubProceso MBiseccion (vi,u,m0,q,g)
bdi<-1 et<-1
vlt<-0 Escribir 'Ingrese un tiempo menor al esperado' Leer t1
Escribir 'Ingrese un tiempo mayor al esperado' Leer t2
Mientras bdi==1 Hacer vlt<-vlt+1 v1<-(u*ln(m0/(m0-q*t1))-g*t1-vi)
v2<-(u*ln(m0/(m0-q*t2))-g*t2-vi) t<-(t1+t2)/2
v<-(u*ln(m0/(m0-q*t))-g*t-vi) Si (v*v1)<0 Entonceso t2<-t
Sino Si (v*v1)>0 Entonceso
ENTONCESO t1<-t Sino
bdi<-0 FinSi
FinSi Si vlt!=1 Entonceso et<-abs(((t2-t1)/t2)*100)
FinSi Si et<0.001 O vlt>150 Entonceso
bdi<-0 FinSi FinMientras
tf<-t2 Escribir ('El valor estimado para el tiempo es de ')
Escribir tf FinSubProceso
SubProceso MFalsaPos(vi,u,m0,q,g) bdi<-1
et<-1 vlt<-0 Escribir 'Ingrese un tiempo menor al esperado'
Leer t1 Escribir 'Ingrese un tiempo mayor al esperado'
Leer t2 Mientras bdi==1 Hacer vlt<-vlt+1
v1<-(u*ln(m0/(m0-q*t1))-g*t1-vi) v2<-(u*ln(m0/(m0-q*t2))-g*t2-vi)
t<-t2-((v2*(t1-t2))/(v1-v2)) v<-(u*ln(m0/(m0-q*t))-g*t-vi) Si (v*v1)<0 Entonceso
t2<-t Sino
Si (v*v1)>0 Entonceso ENTONCESO t1<-t
Sino bdi<-0
FinSi FinSi Si vlt!=1 Entonceso
et<-abs(((t2-t1)/t2)*100) FinSi
Si et<0.001 O vlt>150 Entonceso bdi<-0 FinSi
FinMientras tf<-t
Escribir ('El valor estimado para el tiempo es de ') Escribir tf FinSubProceso
SubProceso MGrafico (u,m0,q,g)
DimenSion t(100) DimenSion v(100) Para i<-2 Hasta 100 Hacer
t(1)<-(0) t(i)<-(0.1+t(i-1))
v(i)<-((u*ln(m0/(m0-q*t(i)))-g*t(i))) FinPara Escribir 'La grafica es'
FinSubProceso
Proceso PuntoTres u<-2000
m0<-150000
q<-2700 g<-9.81
Escribir 'Ingrese el valor de la velocidad-> ' Leer vi Escribir 'Metodos abiertos -> 1 ó Metodos cerrados ->2 '
Leer op Segun op Hacer
1: Escribir 'M. Grafico ->1, M. Biseccion ->2 ó M. Falsa Posición ->3 '
Leer m Segun m Hacer
1: MGrafico(u,m0,q,g) 2:
MGrafico(u,m0,q,g) MBiseccion(vi,u,m0,q,g)
3: MGrafico(u,m0,q,g) MFalsaPos(vi,u,m0,q,g)
FinSegun 2:
Escribir 'M. Iteración Simple de Pto. Fijo ->1, M. Newton-Raphson ->2 ó M. Secante ->3 '
Leer m
Segun m Hacer 1:
MGrafico(u,m0,q,g) Escribir 'Ingrese un tiempo semilla-> ' Leer t1
MIterSim(t1,vi,u,m0,q,g) 2:
MGrafico(u,m0,q,g) Escribir 'Ingrese un tiempo semilla-> ' Leer t1
MNewRap(t1,vi,u,m0,q,g) 3:
MGrafico(u,m0,q,g) Escribir 'Ingrese un tiempo semilla-> ' Leer t1
MSecante(t1,vi,u,m0,q,g) FinSegun
FinSegun FinProceso
4. Elabore un algoritmo en matlab que permita solucionar simultaneamente las
siguientes ecuaciones utilizando un método numérico:
4.1 solución
El método empleado para la resolución de este problema fue el método de newton-
Raphson. El funcionamiento del método para hallar una sola raíz consiste en utilizar la
derivada, con la finalidad de hallar la intersección de la recta tangente con el eje de las
abscisas. Para esto se utilizo la serie de Taylor de primer orden
f (xi + 1) = f(xi) + (xi+1 – xi) ƒ′(xi) donde xi es el valor inicial de la raíz y xi+1 es el
valor en el cual la recta tangente intersecta el eje x. En esta intersección, f(xi + 1) es, por
definición, igual a cero y la ecuación que se obtiene es:
xi + 1=
.
El principio para resolver ecuaciones simultaneas se obtiene de forma identica con la
diferencia de que se debe utilizar la serie de Taylor de múltiples variables para tener en
cuenta el hecho de que más de una variable independiente contribuye a la determinación
de la raíz. De esta manera se planteó un algoritmo que utiliza las derivadas parciales y el
determinante jacobino del sistema de ecuaciones, se implementó en matlab y se
obtuvieron los siguientes resultados. El algoritmo implementado se muestra en
pseudocódigo en el anexo 5.
4.1.1 Resultados
Utilizando diferentes valores semilla para iniciar el algoritmo se obtuvo.
Valor
semilla
en x
Valor
semilla
en y
Raíz en
x
Raíz en y Error aprox
en x
Error aprox
en y
Tiempo
de
computo
[s]
0 0 0.16051 0.493102 2.86648e-05 4.37456e-07 0.017
0.1 0.4 0.16051 0.493102 0.00346477 0.000168816 0.016
0.1605 0.493 0.16051 0.493102 6.17696e-05 0.000207486 0.012
2 2 0.16051 0.493102 0.000266927 3.87517e-06 0.02
Cuadro 4. Resultados obtenidos.
4.1.2 Análisis.
como puede observarse en los datos obtenidos, el procedimiento requiere más tiempo de
computo cuando el valor semilla que se le proporciona al algoritmo se aleja del valor
solución, este mayor tiempo de computo se ve reflejado en un mayor número de
iteraciones, sin embargo a pesar del número de iteraciones la aproximación siempre
converge al mismo valor, por otro lado el número de iteraciones si tiene cierto efecto
sobre el error relativo aproximado, el cual tiende a disminuir al aumentar el número de
iteraciones.
4.2 Conclusión.
Según el comportamiento del método, podemos asegurar que si se desea reducir el
tiempo de obtención de los datos lo ideal es proporcionar valores semilla que se
encuentren en las proximidades de los valores solución, pero si por el contrario lo que
se busca es disminuir el factor de error lo más recomendable es permitir que el
algoritmo realice una cantidad considerable de iteraciones lo cual se consigue
proporcionando valores semilla alejados de los valores solución.
Anexo 6.
Proceso punto_1
i<--0;
xi<--0;
yi<--0;
Eax<--1;
Eay<--1;
Mientras Eax>0.01 && Eay>0.01 Hacer
ui<--(sen((xi+yi)/2)-(2*xi));
vi<--cos((xi-yi)/2)-(2*yi);
U_xi<--0.5*cos((xi+yi)/2)-2;
U_yi<--(-0.5*cos((xi+yi)/2));
V_xi<--(-0.5*sen((xi-yi)/2));
V_yi<--0.5*sen((xi-yi)/2)-2;
ximas1<--xi-((ui*V_yi)-(vi*U_yi))/((U_xi*V_yi)-(U_yi*V_xi));
yimas1<--yi-((vi*U_xi)-(ui*V_xi))/((U_xi*V_yi)-(U_yi*V_xi));
Eax<--abs((ximas1-xi)/ximas1);
Eay<--abs((yimas1-yi)/yimas1);
xi<--ximas1;
yi<--yimas1;
FinMientras
Escribir 'el valor aproximado de la solución para x es';
Escribir ximas1;
Escribir ' El error aproximado en x es:';
Escribir Eax;
Escribir 'el valor aproximado de la solución para y es';
Escribir yimas1;
Escribir 'El error aproximado en y es: %g';
Escribir Eay;
FinProceso