Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Caso Del Método de Interpolación de Spline
Caso Del Método de Interpolación de Spline
➢ y´´(2) = 0(M0 )
➢ y´´(7) = 0(M5 )
4M1 + M2 = 108
M1 + 4M2 + M3 = 144
M2 + 4M3 + M4 = 180
4M4 + M3 = 216
M1 = 21.0143
M2 = 23.9425
M3 = 27.2153
M4 = 47.1961
o Con los valores de las “M” se podrá determinar cada uno de los valores para
los coeficientes de las piezas de polinomios, esto es:
Mi+1 − Mi Mi yi+1 − yi 2hi+1 Mi + hi+1 Mi+1
ai = ; bi = ; ci = − ; di = y1
6hi+1 2 hi+1 6
• Cuando i = 1
M2 − M1
a1 = = 0.48
6h2
M1
b1 = = 10.5
2
y2 − y1 2h2 M1 + h2 M2
c1 = − = 25.004
h2 6
d1 = y1 = 23
d2 = y2 = 59
• Cuando i = 3
M 4 − M3
a3 = = 3.3301
6h4
M3
b3 = = 13.6076
2
y4 − y3 2h4 M3 + h4 M4
c3 = − = 73.0622
h4 6
d3 = y3 = 119
• Cuando i = 4
M 5 − M4
a4 = = −7.8610
6h5
M4
b4 = = 23.583
2
y5 − y4 2h5 M4 + h5 M5
c4 = − = 110.277
h5 6
d4 = y4 = 209
• Ordenados quedan:
d0 = 5 ; c0 = 14.5 ; b0 = 0 ; a0 = 3.50
d1 = 23 ; c1 = 24 ; b1 = 10.51 ; a1 = 0.49
d2 = 59 ; c2 = 47.48 ; b2 = 11.97 ; a0 = 0.55
d3 = 119 ; c3 = 73.06 ; b3 = 13.61 ; a3 = 3.33
d4 = 209 ; c4 = 110.27 ; b0 = 23.60 ; a4 = −7.87
#include <stdio.h>
#include <iostream>
#include <stdlib.h>
#include <iomanip>
#include <locale.h>
using namespace std;
int main()
{
setlocale(LC_ALL, "");
/** Step 0 */
int n, i, j;
cout<<" SPLINE CUBICO"<<endl;
cout <<" Calcula el polinomio cubico de un conjunto de puntos" << endl;
cout << "\nIngrese el numero de puntos: ";
cin >> n;
n--;
float x[n + 1], a[n + 1], h[n], A[n], l[n + 1],
u[n + 1], z[n + 1], c[n + 1], b[n], d[n];
for (i = 0; i < n + 1; ++i) scanf("%f", &x[i]);
for (i = 0; i < n + 1; ++i) scanf("%f", &a[i]);
/** Step 1 */
for (i = 0; i <= n - 1; ++i) h[i] = x[i + 1] - x[i];
/** Step 2 */
for (i = 1; i <= n - 1; ++i)
A[i] = 3 * (a[i + 1] - a[i]) / h[i] - 3 * (a[i] - a[i - 1]) / h[i - 1];
/** Step 3 */
l[0] = 1;
u[0] = 0;
z[0] = 0;
/** Step 4 */
for (i = 1; i <= n - 1; ++i) {
l[i] = 2 * (x[i + 1] - x[i - 1]) - h[i - 1] * u[i - 1];
u[i] = h[i] / l[i];
z[i] = (A[i] - h[i - 1] * z[i - 1]) / l[i];
}
/** Step 5 */
l[n] = 1;
z[n] = 0;
c[n] = 0;
/** Step 6 */
for (j = n - 1; j >= 0; --j) {
c[j] = z[j] - u[j] * c[j + 1];
b[j] = (a[j + 1] - a[j]) / h[j] - h[j] * (c[j + 1] + 2 * c[j]) / 3;
d[j] = (c[j + 1] - c[j]) / (3 * h[j]);
}
/** Step 7 */
cout<<"\nLos valores de los coeficientes para los polinomios son: "<< endl;
cout<<"\n";
printf("%2s %8s %8s %8s %8s\n", "i", "di", "ci", "bi", "ai");
for (i = 0; i < n; ++i)
printf("%2d %8.2f %8.2f %8.2f %8.2f\n", i, a[i], b[i], c[i], d[i]);
return 0;
cout<<"\n\n\n";
system("pause");
}
Prueba de escritorio