eff666
(usa Debian)
Enviado em 16/10/2014 - 17:17h
Pessoal, blz?
Abaixo segue meu código funcionando.
O problema começa quando faço meu vetor T (float) virar uma matriz pois estou simulando o perfil de temperatura de um experimento que é função do raio (r[k]) e do z (ainda não implementado, mas nesse código podemos verificar o valor de z=0.0 na função C[k]).
Eu preciso fazer com que T vire uma matriz, mas quando faço isso e a defino como FLOAT, DOUBLE ou LONG DOUBLE, os resultados aparecem enormes, infinitos, eles estouram a precisão(?).
O mesmo acontece com a matriz lambda; se eu a deixa-la como double ou float, o mesmo erro acontece.
Criei as funções A[k], B[k] e C[k] para fazer um arredondamento prévio e depois arredondar novamente no cálculo de T[k].
Alguém tem alguma idéia de como proceder?
Att,
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <conio.h>
#define lim 10
int main(){
/*Essa matriz contém os zeros das funções de Bessel Jn.
lambda[i][0]: Autovalores de J0(lambda)
lambda[i][1]: Autovalores de J1(lambda) */
long double lambda[20][2]={
{2.404825,},
{5.520078,},
{8.653727,},
{11.79153,},
{14.93091,},
{18.07106,},
{21.21163,},
{24.35247,},
{27.49347,},
{30.63460,},
{33.77582,},
{36.91709,},
{40.05842,},
{43.19979,},
{46.34118,},
{49.48260,},
{52.62405,},
{55.76551,},
{58.90698,},
{62.04846,},
};
//-----------------------------FIM-----------------------
int i,j,k;
float a;
float r[lim],z[lim];
float T[lim];
float A[lim],B[lim],C[lim];
//----FIM das variáveis
a=0;
for(k = 0 ; k <= lim ; k++){
r[k]=a;
a+=.1;
}
for(k = 0 ; k <= lim ; k++){
for (i = 0 ; i < 20 ; i++){
A[k]=j0(lambda[i][0]*r[k]);
B[k]=(lambda[i][0]*j1(lambda[i][0]));
C[k]=exp(-lambda[i][0]*0.0);
T[k]+=(2*A[k]/B[k])*C[k];
}
printf("%10.9f\n",T[k]);
}
return 0;
}