Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //CONSULTAR PARA ENTENDER BIEN EL ALGORITMO DE NEWTON.
- //Preguntar qué pasa si la matriz de mínimos cuadrados no es inversible.
- Ejercicio 1:
- Apartado a)
- function imagenAprox = metodoLagrange(conjPares, x)
- imagenAprox = 0
- for i = 1:size(conjPares)(1)
- L = 1
- for j = 1:size(conjPares)(1)
- if(i ~= j)
- L = L * ( x - conjPares(j,1) ) / ( conjPares(i,1) - conjPares(j,1) )
- end
- end
- imagenAprox = imagenAprox + L * conjPares(i,2)
- end
- endfunction
- function imagenAprox = interpolacionNewton(conjPares, x)
- n = size(conjPares)(1) - 1
- for i = 1:n+1
- a(i) = conjPares(i,2)
- end
- for i = 2:n+1
- for j = n+1:-1:i
- a(j) = (a(j) - a(j-1)) / (conjPares(j,1) - conjPares(j-i+1,1))
- end
- end
- imagenAprox = a(n+1)
- for i = n:-1:1
- imagenAprox = a(i) + (x - conjPares(i,1)) * imagenAprox
- end
- endfunction
- --> paresLineal = [0.2 1.2214; 0.4 1.4918];
- --> paresCubica = [0 1; 0.2 1.2214; 0.4 1.4918; 0.6 1.8221];
- --> metodoLagrange(paresLineal, 1/3)
- ans =
- 1.4016667
- --> metodoLagrange(paresCubica, 1/3)
- ans =
- 1.3955494
- --> interpolacionNewton(paresLineal, 1/3)
- ans =
- 1.4016667
- --> interpolacionNewton(paresCubica, 1/3)
- ans =
- 1.3955494
- Apartado b)
- //Ultra específico porque justo estamos trabajando con una función creciente.
- function cota = cotaDeError(conjPares, x)
- cota = 1
- for i = 1: size(conjPares)(1)
- cota = cota * (x - conjPares(i,1))
- end
- cota = abs(cota / factorial(size(conjPares)(1)) * conjPares(i, 2))
- endfunction
- --> cotaDeError(paresLineal, 1/3)
- ans =
- 0.0066302
- --> errorLineal = abs(interpolacionNewton(paresLineal, 1/3) - 1.395612425)
- errorLineal =
- 0.0060542
- --> cotaDeError(paresCubica, 1/3)
- ans =
- 0.00006
- --> errorCubico = abs(interpolacionNewton(paresCubica, 1/3) - 1.395612425)
- errorCubico =
- 0.000063
- Ejercicio 2: Carpeta.
- Ejercicio 3:
- El error de la aproximación será menor a (10**-6)/2 pues está acotado por el producto de las diferencias contra todos los nodos:
- --> 0.15 * 0.05 * 0.05 * 0.15 * 0.25 * 0.35 / factorial(6)
- ans =
- 6.836D-09
- --> pares = [2 0.2239; 2.1 0.1666; 2.2 0.1104; 2.3 0.0555; 2.4 0.0025; 2.5, -0.0484];
- --> interpolacionNewton(pares, 2.15)
- ans =
- 0.1383688
- --> interpolacionNewton(pares, 2.35)
- ans =
- 0.0287312
- Ejercicio 4:
- De la primera expresión, despejo que f(0) = 1, f(1) = 3.
- De la segunda expresión, despejo que f(2) = 3.
- Ampliando la tercera expresión, y con los datos anteriores, puede despejarse que f(3) = 3.
- Por último, aplicamos el método de Lagrange con los datos obtenidos para aproximar f(2.5).
- --> metodoLagrange([0 1; 1 3; 2 3; 3 3], 2.5)
- ans =
- 2.875
- Ejercicio 5:
- Apartado a)
- P(x) = f[-1] + (x + 1)*f[-1,1] + (x + 1)*(x - 1)*f[-1,1,2] + (x + 1)*(x - 1)*(x - 2)*f[-1,1,2,4]
- P(x) = 2 + (x + 1)*1 + (x^2 - x + x - 1)*-2 + (x^3 - 2x^2 - x^2 + 2x + x^2 - 2x - x + 2)*2
- P(x) = 2 + (x + 1) + (-2x^2 + 2) + (2x^3 - 4x^2 - 2x + 4) = 2x^3 - 6x^2 - x + 9
- Apartado b)
- P(0) = 9
- Apartado c)
- |Error| <= |(1)(-1)(-2)(-4)/4! * 33.6| = 11.2
- Ejercicio 6:
- function [polinomio, epsilon] = minimosCuadrados(A, b)
- coeficientes = metodoGauss(A' * A, A' * b)
- polinomio = poly(coeficientes, 'x', "coeff")
- epsilonI = A * coeficientes - b
- epsilon = epsilonI' * epsilonI
- endfunction
- --> b = [1; 1.004; 1.31; 1.117; 1.223; 1.422]
- b =
- 1.
- 1.004
- 1.31
- 1.117
- 1.223
- 1.422
- --> Alineal = [1 0; 1 0.15; 1 0.31; 1 0.5; 1 0.6; 1 0.75]
- Alineal =
- 1. 0.
- 1. 0.15
- 1. 0.31
- 1. 0.5
- 1. 0.6
- 1. 0.75
- --> Acuad = [1 0 0; 1 0.15 0.15**2; 1 0.31 0.31**2; 1 0.5 0.5**2; 1 0.6 0.6**2; 1 0.75 0.75**2]
- Acuad =
- 1. 0. 0.
- 1. 0.15 0.0225
- 1. 0.31 0.0961
- 1. 0.5 0.25
- 1. 0.6 0.36
- 1. 0.75 0.5625
- --> Acub = [1 0 0 0; 1 0.15 0.15**2 0.15**3; 1 0.31 0.31**2 0.31**3; 1 0.5 0.5**2 0.5**3; 1 0.6 0.6**2 0.6**3; 1 0.75 0.75**2 0.75**3]
- Acub =
- 1. 0. 0. 0.
- 1. 0.15 0.0225 0.003375
- 1. 0.31 0.0961 0.029791
- 1. 0.5 0.25 0.125
- 1. 0.6 0.36 0.216
- 1. 0.75 0.5625 0.421875
- --> [Plineal, Elineal] = minimosCuadrados(Alineal, b)
- Elineal =
- 0.0536218
- Plineal =
- 0.9960666 +0.4760174x
- --> [Pcuad, Ecuad] = minimosCuadrados(Acuad, b)
- Ecuad =
- 0.0531417
- Pcuad =
- 2
- 1.007732 +0.3542987x +0.1635646x
- --> [Pcub, Ecub] = minimosCuadrados(Acub, b)
- Ecub =
- 0.0405174
- Pcub =
- 2 3
- 0.9653196 +1.6154731x -4.3450249x +3.97241x
- Ejercicio 7:
- Apartado a)
- --> b = [102.56; 113.18; 130.11; 142.05; 167.53; 195.14; 224.87; 256.73; 299.5; 326.72]
- b =
- 102.56
- 113.18
- 130.11
- 142.05
- 167.53
- 195.14
- 224.87
- 256.73
- 299.5
- 326.72
- --> Alineal= [1 4; 1 4.2; 1 4.5; 1 4.7; 1 5.1; 1 5.5; 1 5.9; 1 6.3; 1 6.8; 1 7.1]
- Alineal =
- 1. 4.
- 1. 4.2
- 1. 4.5
- 1. 4.7
- 1. 5.1
- 1. 5.5
- 1. 5.9
- 1. 6.3
- 1. 6.8
- 1. 7.1
- --> Acuad = Alineal;
- --> Acuad(:, 3) = Alineal(:, 2) .* (Alineal(:, 2))
- Acuad =
- 1. 4. 16.
- 1. 4.2 17.64
- 1. 4.5 20.25
- 1. 4.7 22.09
- 1. 5.1 26.01
- 1. 5.5 30.25
- 1. 5.9 34.81
- 1. 6.3 39.69
- 1. 6.8 46.24
- 1. 7.1 50.41
- --> Acub = Acuad;
- --> Acub(:, 4) = Acuad(:, 2) .* Acuad(:, 3)
- Acub =
- 1. 4. 16. 64.
- 1. 4.2 17.64 74.088
- 1. 4.5 20.25 91.125
- 1. 4.7 22.09 103.823
- 1. 5.1 26.01 132.651
- 1. 5.5 30.25 166.375
- 1. 5.9 34.81 205.379
- 1. 6.3 39.69 250.047
- 1. 6.8 46.24 314.432
- 1. 7.1 50.41 357.911
- --> [Alin, Elin] = minimosCuadrados(Alineal, b)
- Elin =
- 329.01319
- Alin =
- -194.13824 +72.084518x
- --> [Acuad, Ecuad] = minimosCuadrados(Acuad, b)
- Ecuad =
- 0.0014429
- Acuad =
- 2
- 1.2355604 -1.1435234x +6.6182109x
- --> [Acub, Ecub] = minimosCuadrados(Acub, b)
- Ecub =
- 0.0005273
- Acub =
- 2 3
- 3.4290944 -2.3792211x +6.8455778x -0.0136746x
- Ejercicio 8:
- function imagenAprox = metodoLagrange(conjPares, x)
- imagenAprox = 0
- for i = 1:size(conjPares)(1)
- L = 1
- for j = 1:size(conjPares)(1)
- if(i ~= j)
- L = L * ( x - conjPares(j,1) ) / ( conjPares(i,1) - conjPares(j,1) )
- end
- end
- imagenAprox = imagenAprox + L * conjPares(i,2)
- end
- endfunction
- function resultado = aplicame(funcion, x, tamanio)
- for i = 1:tamanio
- resultado(i) = funcion(x(i))
- end
- endfunction
- --> deff("y = funcion(x)", "y = 1./(x.**2 + 1)")
- --> paresn2 = linspace(-5, 5, 3);
- --> paresn6 = linspace(-5, 5, 7);
- --> paresn14 = linspace(-5, 5, 15);
- --> conjParesn2 = paresn2';
- --> conjParesn2(:, 2) = funcion(conjParesn2);
- --> conjParesn2 = paresn2'
- conjParesn2 =
- -5.
- 0.
- 5.
- --> conjParesn2(:, 2) = funcion(conjParesn2)
- conjParesn2 =
- -5. 0.0384615
- 0. 1.
- 5. 0.0384615
- --> conjParesn6 = paresn6';
- --> conjParesn6(:, 2) = funcion(conjParesn6)
- conjParesn6 =
- -5. 0.0384615
- -3.3333333 0.0825688
- -1.6666667 0.2647059
- 0. 1.
- 1.6666667 0.2647059
- 3.3333333 0.0825688
- 5. 0.0384615
- --> conjParesn14 = paresn14';
- --> conjParesn14(:, 2) = funcion(conjParesn14);
- --> deff("y = Pn2(x)","y = metodoLagrange(conjParesn2, x)")
- --> deff("y = Pn6(x)","y = metodoLagrange(conjParesn6, x)")
- --> deff("y = Pn14(x)","y = metodoLagrange(conjParesn14, x)")
- --> Abscisas = linspace(-5,5,100);
- --> Imagenesn2 = Pn2(Abscisas=
- Imagenesn2 = Pn2(Abscisas=
- ^^
- Error: syntax error, unexpected end of file
- --> Imagenesn2 = Pn2(Abscisas)
- at line 7 of function metodoLagrange ( C:\Users\usuario\Desktop\Runge.sce line 7 )
- at line 2 of function Pn2
- Inconsistent row/column dimensions.
- --> exec('C:\Users\usuario\Desktop\Runge.sce', -1)
- --> Imagenesn2 = aplicame(Pn2, Abscisas, 100);
- --> Imagenesn6 = aplicame(Pn6, Abscisas, 100);
- --> Imagenesn14 = aplicame(Pn14, Abscisas, 100);
- --> plot(Abscisas, Imagenesn2, 'red')
- WARNING: Transposing row vector X to get compatible dimensions
- --> plot(Abscisas, Imagenesn6, 'blue')
- WARNING: Transposing row vector X to get compatible dimensions
- --> plot(Abscisas, Imagenesn14, 'green')
- WARNING: Transposing row vector X to get compatible dimensions
- --> ImagenesRealDeal = aplicame(funcion, Abscisas, 100);
- --> plot(Abscisas, ImagenesRealDeal, 'black')
- WARNING: Transposing row vector X to get compatible dimensions
- Ejercicio 10:
- function t = conversion(x)
- t = ((%pi/2) - x* %pi/2)/2
- endfunction
- function resultado = aplicame(funcion, x, tamanio)
- for i = 1:tamanio
- resultado(i) = funcion(x(i))
- end
- endfunction
- --> raicesCheb = [cos(%pi/8);cos(3*%pi/8);cos(5*%pi/8);cos(7*%pi/8)]
- raicesCheb =
- 0.9238795
- 0.3826834
- -0.3826834
- -0.9238795
- --> raicesInterpolacion = aplicame(conversion, raicesCheb, 4)
- raicesInterpolacion =
- 0.0597849
- 0.4848393
- 1.085957
- 1.5110115
Add Comment
Please, Sign In to add comment