Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
NETO
SUMRIO
1 INTRODUO ........................................................................................................ 3
2 INTERPOLAO POR SPLINE CBICO ............................................................... 5
2.1 Cdigo em C ......................................................................................................... 6
3 CONCLUSO .......................................................................................................... 8
4 REFERNCIAS BIBLIOGRFICAS ........................................................................ 9
1 INTRODUO
0,9
1,3
1,9
2,1
2,6
3,0
3,9
4,4
f(x) 1,3
1,5
1,85 2,1
2,6
2,7
2,4
4,7
5,0
6,0
7,0
2,25 2,3
8,0
9,2
0,9
0,7
0,6
0,5
0,4
0,25
13
12,6
12
11,6
11,3
10,5
9,2
4,7
4,4
3,9
2,6
2,1
1,9
1,3
0,9
f(x)
2.1 Cdigo em C
#include<stdio.h>
#include<math.h>
#define MAX 21
int main(){
float
x[MAX]={0.9,1.3,1.9,2.1,2.6,3.0,3.9,4.4,4.7,5.0,6.0,7.0,8.0,9.2,10.5,11.3,11.6,12.0,12.6,13.0,13.3};
float
a[MAX]={1.3,1.5,1.85,2.1,2.6,2.7,2.4,2.15,2.05,2.1,2.25,2.3,2.25,1.95,1.4,0.9,0.7,0.6,0.5,0.4,0.25};
float h[MAX-1],alfa[MAX-1],l[MAX],mi[MAX-1],z[MAX],c[MAX],b[MAX-1],d[MAX-1];
float s[4][MAX-1];
int i,j;
for(i=0;i<=MAX-2;i++){
h[i]=x[i+1]-x[i];
}
for(i=1;i<=MAX-2;i++){
alfa[i]=(3/h[i])*(a[i+1]-a[i]) - (3/h[i-1])*(a[i]-a[i-1]);
}
l[0]=0;
mi[0]=0;
z[0]=0;
for(i=1;i<=MAX-2;i++){
l[i]=2*(x[i+1]-x[i-1]) - (h[i-1]*mi[i-1]);
mi[i]=h[i]/l[i];
z[i]=(alfa[i]-(h[i-1]*z[i-1]))/l[i];
}
l[MAX-1]=1;
z[MAX-1]=0;
c[MAX-1]=0;
for(j=MAX-2;j>=0;j--){
c[j]=z[j]-(mi[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]);
}
printf("I | X | A | B | C | D\n");
for(i=0;i<MAX;i++){
if(i<MAX-1){
printf("%d | %.2f | %.2f | %.2f | %.2f | %.2f\n", i,x[i],a[i],b[i],c[i],d[i]);
}else{
printf("%d | %.2f | %.2f\n",i,x[i],a[i]);
}
}
printf("\n\n");
for(i=0;i<MAX-1;i++){
printf("Se %.1f<=x<=%.1f=>S(x)=(%.1f)+(%.1f)(x-%.1f)+(%.1f)(x-%.1f)^2+(%.1f)(x%.1f)^3\n",x[i],x[i+1],a[i],b[i],x[i],c[i],x[i],d[i],x[i]);
}
for(i=0;i<MAX-1;i++){
s[0][i]=0; //x^0
s[1][i]=0; //x
s[2][i]=0; //x^2
s[3][i]=0; //x^3
}
for(i=0;i<MAX-1;i++){
s[0][i]+= (-b[i]*x[i])+(pow(x[i],2)*c[i])-(pow(x[i],3)*d[i])+a[i];
s[1][i]+= b[i]-(2*x[i]*c[i])+(3*d[i]*pow(x[i],2));
s[2][i]+= c[i]-(3*x[i]*d[i]);
s[3][i]+= d[i];
}
printf("\n\n");
for(i=0;i<MAX-1;i++){
printf("Se %.2f<=x<=%.2f => S(x)= (%.2f)x^3 + (%.2f)x^2 + (%.2f)x +
(%.2f)\n",x[i],x[i+1],s[3][i],s[2][i],s[1][i],s[0][i]);
}
system("pause");
}
3 CONCLUSO
4 REFERNCIAS BIBLIOGRFICAS
Disponvel em:
<http://www.mat.ufrgs.br/~guidi/grad/MAT01032/calculo_numerico.cap4.pdf>
Disponvel em: <http://pessoal.utfpr.edu.br/angelabarboza/arquivos/Spline.pdf >
Disponvel em: <http://www.dca.ufrn.br/~meneghet/FTP/MCEC/Transp05.pdf>