Ejercicios de Final Resueltos
Ejercicios de Final Resueltos
Ejercicios de Final Resueltos
Yo use ciclos DO implícitos, pero podrías no usarlos y hacerlo con ciclos DO normales. También use
los “intent” pero podrías no usarlos. La resolución de estos ejercicios es muy relativa, aunque
siempre hay que tener en cuenta la eficacia, eficiencia y la legibilidad (indentado, nombres de
variables relativamente entendibles, si es necesario comentarlo, etc.).
1) La diferencia absoluta y relativa entre dos valores es siempre del mismo orden de
magnitud.
FALSO. Contraejemplo:
|10 − 9.9999|
𝛿(9.9999) = = 10−5
|10|
Se ve claramente que difieren en un orden de magnitud.
2) Una EDO-PVI resueltos mediante Euler y Euler modificado nunca dará la misma solución en
la misma cantidad de iteraciones.
FALSO. Tanto el método de Gauss-Seidel como el de Jacobi convergen por ser el sistema
estrictamente diagonalmente dominante, pero Gauss-Seidel convergerá más rápido ya que es una
mejora del método de Jacobi (Para la iteración actual, Gauss-Seidel usa valores anteriores y
valores actuales ya calculados).
4) La integral obtenida por el método de Romberg es poco exacta porque utiliza el método
de Trapecios.
FALSO. Si bien el método de Romberg utiliza Trapecios para calcular la integral numérica, se aplica
la extrapolación de Richardson de forma reiterada para mejorar la estimación previa.
FALSO. Los valores negativos no afectan de ninguna manera al cálculo de la integral por
Romberg, tanto en la estimación inicial por trapecios como en las extrapolaciones siguientes.
6) El método de mínimos cuadrados puede ser un buen método para calcular un trazador
cubico.
FALSO. El método de mínimos cuadrados sirve solo para APROXIMAR funciones, por lo que
generalmente la curva aproximante no coincide con la aproximada (por lo que NO ES un método
de INTERPOLACION). Un trazador cubico sirve para crear una función que interpole un conjunto de
puntos dado, por lo que el método de mínimos cuadrado no sirve para calcular un trazador cubico.
En cambio para este tipo de función interpolante existe el método de SPLINES CUBICOS.
7) Es posible resolver un sistema de ecuaciones lineales con el método de punto fijo, pero no
con Newton y Quasi-Newton.
8) Los coeficientes de los polinomios de Splines Cubicos deben ser todos distintos de cero.
FALSO. No es condición que algún o todos los coeficientes de un trazador cubico Spline sean
distintos de cero.
9) El refinamiento iterativo para sistemas de ecuaciones lineales se suele utilizar para mejorar
las soluciones obtenidas por métodos directos.
VERDADERO. Demostración:
FALSO. No indica que se deba hacer en un tramo solo: si se tomaran de a 2^2 trapecios (5 puntos),
se podrían calcular por Romberg 6 tramos individuales y sumarlos. En caso de ser menos puntos
no sería posible: en caso de tener 10 puntos se harían dos tramos y sobrarían dos puntos, ya que
el tramo siguiente usa el último punto del tramo anterior, quedando así los dos últimos puntos
para calcular por el método de Trapecios simple. En el caso de 25 puntos estos puntos sobrantes
se acumulan hasta llegar a ser 5, pudiendo así hacer 6 tramos.
FALSO. Ya que converge más lentamente que el método de Newton necesita, en general, realizar
más iteraciones que el método de Newton para obtener igual exactitud.
14) El grado del polinomio de Mínimos Cuadrados óptimo se determina cuando el RMS es
mínimo.
FALSO. Para encontrar el polinomio de grado óptimo se analiza la varianza, cuando sea mínima
entonces este será el grado óptimo. Otro criterio es que en cierto punto la varianza comenzara a
aumentar permanentemente, siendo el polinomio optimo el anterior al polinomio que comienza
con la tendencia de aumento. En cualquiera de los dos casos, si el error no varía mucho y el
denominador disminuye puede ocurrir que para mayores grados de polinomio la varianza sea
mayor.
17) Perturbar los coeficientes de un polinomio puede afectar el número de raíces reales del
mismo.
VERDADERO.
18) El método de refinamiento iterativo se aplica para mejorar los resultados obtenidos por
Gauss-Jordan.
19) El error global de la integral obtenida por el método de 3/8 de Simpson, es menor que el
correspondiente al método de 1/3 de Simpson.
FALSO. El error global de la integral obtenida por el método de 3/8 de Simpson es mayor que el
correspondiente a 1/3 de Simpson. El método de 3/8 de Simpson utiliza para aproximar la función
un polinomio de grado 3, mientras que 1/3 utiliza un polinomio de grado 2. En general las
aproximaciones por polinomios de grado par son mejores que las aproximaciones por grado
impar.
1) Escriba una función FORTRAN que devuelva la diferencia entre la integral exacta de un
polinomio y la calculada por el método de trapecios compuestos para una determinada
cantidad de puntos, dentro de un intervalo [a,b]. Para ello suponer que ya se tiene una
función TRAPECIOS(v,h) que devuelve el valor de la integral de trapecios compuestos y una
función EVA_POL(p,x) que devuelve el valor del polinomio evaluado en x.
NOTA: Los argumentos de la función TRAPECIOS son v (vector con los valores de f(x)), h
(escalar). Los argumentos de la función EVA_POL son p(vector 0:n con los coeficientes de p
en orden creciente de grado), x (escalar).
NOTA: Voy a suponer que cuando pusieron “integral exacta” se equivocaron y quisieron decir…
“más exacta que la calculada por trapecios”.
FUNCTION DIFERENCIA(p,a,b,m)
INTEGER, INTENT(IN):: m
REAL(8), INTENT(IN)::p(0:N),a,b
REAL(8):: int1,int2,aux(0:N),DIFERENCIA,h, v(0:m),x
INTEGER:: i,j
aux=p
!integro “aux”
DO i=0, N, 1
aux(i)*b/(i+1)
END DO
int1= EVA_POL(aux,b)
aux=p !piso los valores anteriores
DO i=0, N, 1
aux(i)*a/(i+1)
END DO
int2= EVA_POL(aux,a)
!genero los puntos para TRAPECIOS:
h= (b-a)/m
x=a
DO i=0, m, 1
v(i)=EVA_POL(p,x)
x=x+h
ENDDO
DIFERENCIA= (int1-int2) – TRAPECIOS(v,h)
END FUNCTION
2) Indique si el numero decimal 27,07421875 puede ser representado de forma exacta como
REAL(4) en IEEE-754.
REAL(4) -> 4 bytes = 32 bits (1 para el bit de signo, 8 para el exponente y 23 para la mantisa)
0.0742187510 = 0.000100112
Para que quede de la forma 1.MANTISA debo correr la coma 4 veces hacia la izquierda, por lo que
el exponente será 127+4=131
EXPONENTE = 13110 = 100000112
3) Dada una matriz dato de nxn, siendo n conocido, escriba una subrutina Fortran que
permita intercambiar las filas i y j.
NOTA: USE SUBROUTINE INTERCAMBIAR (M,i,j)
NOTA: Para hacer esto supuse que los números i y j dados son menores o iguales al rango de la
matriz.
4) Explique las condiciones que deben cumplir un conjunto de polinomios de tercer orden para
ser un Spline cubico de frontera sujeta en el extremo inicial (x0,y0) y frontera libre en el
extremo final (xn,yn).
El trazador cubico o Spline deberá para empezar cumplir cuatro condiciones por definición:
Todas las condiciones deben cumplirse simultáneamente para obtener el tipo de trazador cubico
pedido.
5) Explique cómo se discretiza de forma explícita la siguiente ecuación diferencial a derivadas
parciales. ¿Qué condición deberá tener r para ser estable la discretizacion y simplificar la
ecuación? ¿Qué ventajas y desventajas tiene la forma explícita respecto de la implícita?
Se procederá a utilizar el método de las diferencias finitas, para convertir una ecuación de
derivadas parciales en una de diferencias.
El supraindice indican variable temporal (j) y los subíndices indican variable espacial (i para el eje x,
c para el eje y, k para el eje z).
La derivada temporal (diferencia ascendente en el tiempo de orden 1) mantiene su forma respecto
de la discretización unidimensional ya que solo tiene en cuenta la variable temporal, manteniendo
constante la espacial:
𝑗+1 𝑗
𝜕𝑈(𝑥𝑖 , 𝑦𝑐 , 𝑧𝑘 , 𝑡𝑗 ) 𝑈𝑖,𝑐,𝑘 − 𝑈𝑖,𝑐,𝑘
= − 𝑂(∆𝑡)
𝜕𝑡 ∆𝑡
Las derivadas espaciales serán ahora:
𝑗 𝑗 𝑗
𝜕 2 𝑈(𝑥𝑖 , 𝑦𝑐 , 𝑧𝑘 , 𝑡𝑗 ) 𝑈𝑖+1,𝑐,𝑘 − 2. 𝑈𝑖,𝑐,𝑘 + 𝑈𝑖−1,𝑐,𝑘
2
= − 𝑂(∆𝑥 2 )
𝜕𝑥 ∆𝑥 2
𝑗 𝑗 𝑗
𝜕 2 𝑈(𝑥𝑖 , 𝑦𝑐 , 𝑧𝑘 , 𝑡𝑗 ) 𝑈𝑖,𝑐+1,𝑘 − 2. 𝑈𝑖,𝑐,𝑘 + 𝑈𝑖,𝑐−1,𝑘
2
= − 𝑂(∆𝑦 2 )
𝜕𝑦 ∆𝑦 2
𝑗 𝑗 𝑗
𝜕 2 𝑈(𝑥𝑖 , 𝑦𝑐 , 𝑧𝑘 , 𝑡𝑗 ) 𝑈𝑖,𝑐,𝑘+1 − 2. 𝑈𝑖,𝑐,𝑘 + 𝑈𝑖,𝑐,𝑘−1
= − 𝑂(∆𝑧 2 )
𝜕𝑧 2 ∆𝑧 2
𝑗+1 𝑗 𝑗 𝑗 𝑗 𝑗 𝑗 𝑗 𝑗 𝑗 𝑗
𝑈𝑖,𝑐,𝑘 − 𝑈𝑖,𝑐,𝑘 𝑈𝑖+1,𝑐,𝑘 − 2. 𝑈𝑖,𝑐,𝑘 + 𝑈𝑖−1,𝑐,𝑘 𝑈𝑖,𝑐+1,𝑘 − 2. 𝑈𝑖,𝑐,𝑘 + 𝑈𝑖,𝑐−1,𝑘 𝑈𝑖,𝑐,𝑘+1 − 2. 𝑈𝑖,𝑐,𝑘 + 𝑈𝑖,𝑐,𝑘−1
= + +
∆𝑡 ∆𝑥 2 ∆𝑦 2 ∆𝑧 2
Si ∆𝑥 = ∆𝑦 = ∆𝑧 = ℎ, finalmente se obtiene:
𝑗+1 𝑗 𝑗 𝑗 𝑗 𝑗 𝑗 𝑗
𝑈𝑖,𝑐,𝑘 = (1 − 6𝑟) . 𝑈𝑖,𝑐,𝑘 + 𝑟 . (𝑈𝑖+1,𝑐,𝑘 + 𝑈𝑖−1,𝑐,𝑘 + 𝑈𝑖,𝑐+1,𝑘 + 𝑈𝑖,𝑐−1,𝑘 + 𝑈𝑖,𝑐,𝑘+1 + 𝑈𝑖,𝑐,𝑘−1 )
Por lo que el valor de r para que la ecuación sea estable y se simplifique es 1/6.
De ser mayor a este valor, el método se vuelve inestable por haber usado como discretización dos
diferencias de distinto orden de error.
Finalmente la comparación entre métodos:
Método explícito:
VENTAJAS: Los valores próximos en el tiempo solo dependen de los anteriores, por lo que el
algoritmo es más simple y conlleva un menor costo computacional y es más simple de
implementar.
DESVENTAJAS: Al reemplazar las derivadas por diferencias con distinto orden de error
(h^2 contra Δt) se genera inestabilidad en el método. Por ende, solo se puede usar con valores de
r<=1/6 (en este caso 3D). Esto limita las opciones para elegir h y/o Δt. Además, es menos exacto
que el implícito.
Puede ser que el h y/o Δt que permita r<=1/6 no sea representativo para la evolución del
sistema/problema.
Método implícito:
VENTAJAS: al reemplazar las derivadas por diferencias con órdenes de error iguales (Δt/2)^2 y
(h^2) el método es estable para cualquier valor de r, por lo que hay mayor libertad para elegir h y
Δt. Además, es más exacto que el explícito.
DESVENTAJAS: Los valores próximos en el tiempo no solo dependen de los anteriores, sino que
dependen de los adyacentes para ese tiempo próximo. Esto genera que se debe resolver un
sistema de ecuaciones lineales (tridiagonal) en cada iteración, por lo que se genera un mayor costo
computacional y es más complicado de implementar.
±0.062510
±0.12510
± (0.001)2 . 2𝑘−1 = ±(0.125)10 . 2𝑘−1 {
±0.2510
±0.510
±0.12510
±0.2510
± (0.010)2 . 2𝑘−1 = ±(0.125)10 . 2𝑘−1 {
±0.510
±1.010
±0.2510
±0.510
± (0.100)2 . 2𝑘−1 = ±(0.125)10 . 2𝑘−1 {
±1.010
±2.010
±0.187510
±0.37510
± (0.011)2 . 2𝑘−1 = ±(0.125)10 . 2𝑘−1 {
±0.7510
±1.510
±0.37510
±0.7510
± (0.110)2 . 2𝑘−1 = ±(0.125)10 . 2𝑘−1 {
±1.510
±3.010
±0.317510
±0.62510
± (0.101)2 . 2𝑘−1 = ±(0.125)10 . 2𝑘−1 {
±1.2510
±2.510
±0.437510
±0.87510
± (0.111)2 . 2𝑘−1 = ±(0.125)10 . 2𝑘−1 {
±1.7510
±3.510
En total se pueden representar 39 valores distintos (38 valores positivos y negativos, y el cero)
Suma insignificante: situación en la que se suman dos valores de magnitudes muy diferentes,
produciendo que la representación de la suma sea parcial o totalmente igual al número más
grande.
Por ejemplo:
Numero A= 9.536747 . 10−7= 0|01101011|00000000000000000000011
Numero B= 1600 = 0|10001001|10010000000000000000000
A+B = 1600.0000009536747
fl (A+B) = 1600
Se produjo entonces una adición insignificante.
8) Explique detalladamente cuales son las ventajas y/o desventajas de aplicar el método de
Spline con respecto al método de Lagrange, en el siguiente conjunto de datos.
x 0 2 3 5
y 3 12 15 7
Con respecto a la forma: dado que el conjunto de puntos a interpolar es bastante cerrado, se va a
elegir un método u otro dependiendo del fenómeno a representar. Si se desea una curva suave
que represente fielmente la forma original, se va a recurrir al método de Splines Cubicos. En otro
caso se recurrirá al método de Lagrange, pero cualquiera sea la elección el criterio será
interpolante.
Con respecto a los recursos computacionales: el método de Lagrange efectuara muchos menos
cálculos que el método de Splines, ya que no resuelve ningún sistema de ecuaciones tridiagonal
como si hace el método de Splines (además de que lo hace para cada par de puntos).
Por lo que finalmente la ventaja o desventaja de cada método depende de la naturaleza del
modelo a representar. En este caso al ser una curva bastante cerrada puede ser mejor aplicar
Splines Cubicos.
𝑓(𝑎) 𝑓(𝑏)
max{ ; } ≤ (b-a)
𝑓 ′ (𝑎) 𝑓 ′ (𝑏)
𝑓(𝑎) 𝑓(𝑏)
El valor max{ ; } es el extremo del intervalo donde la derivada f ‘ (x) es mínima. Si
𝑓 ′ (𝑎) 𝑓 ′ (𝑏)
este valor intersecta al eje x en el intervalo [a,b] se asegura que la sucesión de valores xi caigan en
ese intervalo. Si esta condición no se cumple el método podría diverger.
Gráficamente:
g(x,y) = y – exp(-x)
Exprese la función 𝛷(𝑋) correspondiente al método de Punto Fijo. Elija los valores (x0,y0)
que considere adecuados. Justifique su respuesta.
−1
𝛷(𝑋) = 𝑋 − Λ F(X) , Λ = [F ′ (𝑋0)]
𝑥/2 2𝑦/9
F ′ (𝑋) = [ ]
𝑒 −𝑥 1
Los valores iniciales serán x0=1 e y0=0, para elegir estos valores se tuvo en cuenta la proposición:
“Una matriz es singular si y solo si su determinante es nulo”
1
Y esos valores hacen que det(F ′ (𝑋0)) = , además de ser cercanos a uno de los puntos de
2
intersección entre las dos curvas (al de la derecha).
11) Demuestre cuantos puntos se necesitan para calcular la integral numérica de la función
f(x), para [0,1], con un error máximo de 10−3 , por los métodos de Trapecios y 1/3 de
Simpson.
𝜋 . 𝑥2
𝑓(𝑥) = 𝑠𝑖𝑛
2
Para trapecios:
1
− 12 . ℎ3 . 𝑛. 𝑓 ′′ (ξ ) < 10−3 , pero como b-a = h.n:
1 (𝑏−𝑎)3
− 12 . 𝑛3
. 𝑛. 𝑓 ′′ (ξ ) < 10−3
1 (b−a)3
− 12 . . π < 10−3
n2
| 𝑛 | > | 16.18|
Por lo que finalmente la cantidad de trapecios debe ser, como mínimo, 17. Y como la
cantidad de puntos siempre es la cantidad de trapecios más 1, como mínimo debe haber
18 puntos.
(𝑏−𝑎)
− 180
. ℎ4 . 𝑓 𝑖𝑣 (ξ ) < 10−3
π .𝑥 2 π.𝑥 2
𝑓 𝑖𝑣 (x ) = (sin 2
. (π2 . 𝑥 4 − 3) − 6. π. 𝑥 2 . cos (2
) ) . π2
ξ = 1 , 𝑓 𝑖𝑣 ( ξ) = π2 . (π2 − 3)
Reemplazando:
(𝑏−𝑎) (𝑏−𝑎)4
− 180
. 𝑛4 . π2 . (π2 − 3) < 10−3
Despejando:
| 𝑛 | > | 4.405|
Por lo que finalmente la cantidad de arcos debe ser, como mínimo, 6. Y como la cantidad
de puntos siempre es la cantidad de trapecios más 1, como mínimo debe haber 7 puntos
(en 1/3 debe haber un nro par de segmentos y un nro impar de puntos).
12) ¿Cómo procedería a calcular la inversa de una matriz con un método indirecto?
Dado que los métodos indirectos trabajan con un VECTOR de términos independientes, no se
puede aplicar la resolución simultanea de sistemas y simplemente llamar b = Id (como se hace con
los métodos directos).
Si A es la matriz que se desea invertir:
Se procederá a resolver un sistema de ecuaciones para cada columna de la matriz identidad,
guardando la solución del sistema (sistema que tiene como vector de términos independientes la
columna j de la matriz identidad) en una matriz auxiliar (en la columna j).
Haciendo este proceso n veces se obtiene finalmente en la matriz auxiliar, la matriz inversa de nxn
de A. Se puede usar cualquier método indirecto (Jacobi, Gauss-Seidel o SOR).
14) Programe en FORTRAN las siguientes funciones/ subrutinas (determine lo más adecuado
en cada caso) para que realicen las siguientes tareas:
a) Dado un conjunto de valores a, b, c y d calcule y devuelva el valor del polinomio de Splines
cúbicos correspondiente, evaluado en un valor x.
NOTA: Los coeficientes del polinomio se pasan a la función a través de un vector. Para
minimizar los errores acumulados en las sucesivas operaciones, no utilice potencias y
realice la menor cantidad de productos posible.
FUNCTION SPEVAL(vec,xj,x)
REAL(8):: vec(4),x,xj, SPEVAL, dif
dif= x – xj
SPEVAL = v(1) + v(2) * dif + v(3) * dif * dif + v(4) * dif * dif * dif
END FUNCTION
b) Calcule y grabe en un archivo m pared de valores x, p(x) para cada uno de los polinomios
de Splines cúbicos, cuyos datos se encuentran almacenados en las siguientes matrices
utilizando la función programada en el inciso anterior.
𝑏0 𝑐0 𝑑0
splines = [ … … … ]
𝑏𝑛 − 1 𝑐𝑛 − 1 𝑑𝑛 − 1
𝑥0 𝑦0
𝑥1 𝑦1
datos = [ ]
… …
𝑥𝑛 𝑦𝑛
SUBROUTINE ESCRIBE(splines,datos,m,n)
INTEGER, INTENT(IN):: m,n
REAL(8), INTENT(IN):: splines(0:n-1,1:3), datos(0:n,1:2)
INTEGER:: i,j
REAL(8):: coef(4),delta,x
OPEN(2,FILE=’datos.dat’)
DO i=0, n-1, 1
delta= (datos(i+1,1)-datos(i,1))/m
!si yo no pusiera esto acá y solo lo asignara una vez arriba del DO, se acumularía error al
haber sumado tanto el delta
x=datos(i,1)
!uso un vector para los coeficientes porque después del 2do DO no los uso mas
coef(1)=datos(i,2)
coef(2:)=splines(i,:)
DO j=1, m, 1
WRITE(2, ‘(2F10.4)’ ) x , SPEVAL(coef,datos(i,1), x)
x= x+delta
ENDDO
WRITE(2,*) ‘’
ENDDO
CLOSE(2)
ENDSUBROUTINE