



Estude fácil! Tem muito documento disponível na Docsity
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Prepare-se para as provas
Estude fácil! Tem muito documento disponível na Docsity
Prepare-se para as provas com trabalhos de outros alunos como você, aqui na Docsity
Os melhores documentos à venda: Trabalhos de alunos formados
Prepare-se com as videoaulas e exercícios resolvidos criados a partir da grade da sua Universidade
Responda perguntas de provas passadas e avalie sua preparação.
Ganhe pontos para baixar
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Comunidade
Peça ajuda à comunidade e tire suas dúvidas relacionadas ao estudo
Descubra as melhores universidades em seu país de acordo com os usuários da Docsity
Guias grátis
Baixe gratuitamente nossos guias de estudo, métodos para diminuir a ansiedade, dicas de TCC preparadas pelos professores da Docsity
Neste documento, encontram-se dois exemplos de código em c que ilustram a aplicação do método da regressão linear utilizando dados experimentais. O primeiro exemplo utiliza a técnica de gauss-seidel para determinar os coeficientes da reta de regressão. Já no segundo exemplo, é utilizada a técnica de matrizes para resolver o sistema de equações que define a reta de regressão. Os dados experimentais são fornecidos no documento e os resultados obtidos pelos métodos numéricos são comparados com os resultados obtidos por meio de cálculos manualmente.
Tipologia: Trabalhos
1 / 5
Esta página não é visível na pré-visualização
Não perca as partes importantes!
int main() { int i, N; float x[6], y[6], u[6]; float sum_u = 0, sum_uu = 0, sum_y = 0, sum_uy = 0, a, b, Alphax, Beta; float Y[6], Mean_y, S = 0, S_t = 0, r2;
x[0] = 0.1; x[1] = 1; x[2] = 2; x[3] = 3; x[4] = 4; x[5] = 5; y[0] = 0.05; y[1] = 0.62; y[2] = 1.1; y[3] = 2.1; y[4] = 3.6; y[5] = 6.9;
printf("Given equation: y=Alphax/(Beta + x)"); printf("\nRearrange the equation -> y = a + bu"); printf("\nwhere a = (Alphax)/Beta , b = -1/Beta , u = xy"); printf("\n\nGiven data points: \t\t\tNew data points:"); printf("\nx \t\ty \t\t\tu=xy \t\ty");
for (i = 0; i<6; i++) {
u[i] = x[i]*y[i]; printf("\n%f \t%f \t\t%f \t%f", x[i], y[i], u[i], y[i]);
sum_u = sum_u + u[i]; sum_uu = sum_uu + u[i] * u[i]; sum_y = sum_y + y[i]; sum_uy = sum_uy + u[i] * y[i]; }
printf("\n\nSum of u = %f", sum_u); printf("\nSum of u^2 = %f", sum_uu); printf("\nSum of y = %f", sum_y); printf("\nSum of uy = %f", sum_uy);
printf("\n\nSubstituting the values gives"); printf("\n%da + %fb = %f", N, sum_u, sum_y); printf("\n%fa + %fb = %f", sum_u, sum_uu, sum_uy);
b = (sum_uy - (sum_ysum_u/N)) / (sum_uu - (sum_usum_u/N)); a = (sum_y - sum_u * b) / N;
printf("\n\nUsing Gauss elimination method, we obtain"); printf("\na = %f", a); printf("\nb = %f", b);
Beta = -1/b; Alphax = aBeta; printf("\n\nTherefore, Alphax and Beta are"); printf("\nAlphax = aBeta = %f", Alphax); printf("\nBeta = -1/b = %f", Beta);
for (i = 0; i<6; i++) { Y[i] = a + (bu[i]); Mean_y = sum_y / N; S = S + (y[i] - Y[i])(y[i] - Y[i]);
S_t = S_t + (y[i] - Mean_y)*(y[i] - Mean_y);
printf("\n\nValue of St = %f", S_t); printf("\nValue of S = %f", S);
printf("\n\nFitting curve:"); printf("\ny = Alpha*x/(Beta + x) = %fx/(%f + x)", Alphax, Beta); r2 = (S_t - S) / S_t; printf("\n\nCoefficient of determination:"); printf("\nr^2 = %f", r2); }
for (j = 0; j<7; j++) { FtF[0][0] = FtF[0][0] + Ft[0][j] * F[j][0]; FtF[0][1] = FtF[0][1] + Ft[0][j] * F[j][1]; FtF[0][2] = FtF[0][2] + Ft[0][j] * F[j][2]; FtF[1][0] = FtF[1][0] + Ft[1][j] * F[j][0]; FtF[1][1] = FtF[1][1] + Ft[1][j] * F[j][1]; FtF[1][2] = FtF[1][2] + Ft[1][j] * F[j][2]; FtF[2][0] = FtF[2][0] + Ft[2][j] * F[j][0]; FtF[2][1] = FtF[2][1] + Ft[2][j] * F[j][1]; FtF[2][2] = FtF[2][2] + Ft[2][j] * F[j][2]; } printf("\n\nFt * F matrix "); printf("\n%f \t%f \t%f", FtF[0][0], FtF[0][1], FtF[0][2]); printf("\n%f \t%f \t%f", FtF[1][0], FtF[1][1], FtF[1][2]); printf("\n%f \t%f \t%f", FtF[2][0], FtF[2][1], FtF[2][2]);
for (j = 0; j<7; j++) { Y[0] = Y[0] + Ft[0][j] * y[j]; Y[1] = Y[1] + Ft[1][j] * y[j]; Y[2] = Y[2] + Ft[2][j] * y[j]; } printf("\n\nFt * y matrix"); printf("\n%f^ ", Y[0]); printf("\n%f^ ", Y[1]); printf("\n%f^ ", Y[2]);
double deter[1] = { 0 }; double inv[3][3] = { 0 };
deter[0] = (FtF[0][0] * FtF[1][1] * FtF[2][2] + FtF[0][1] * FtF[1][2] * FtF[2][0] + FtF[0][2] * FtF[1][0] * FtF[2][1]) - (FtF[0][2] * FtF[1][1] * FtF[2][0] + FtF[0][1] * FtF[1][0] * FtF[2][2] + FtF[0][0] * FtF [1][2] * FtF[2][1]);
for (m = 0; m<3; m++) { float adj[3][3] = { 0 }; for (n = 0; n<3; n++) { adj[m][n] = (FtF[(m + 1) % 3][(n + 1) % 3] * FtF[(m + 2) % 3][(n + 2) % 3]) - (FtF[(m + 1) % 3][(n + 2) % 3] * FtF[(m + 2) % 3][(n + 1) % 3]); inv[m][n] = adj[m][n] / deter[0]; } }
C[0] = Y[0] * inv[0][0] + Y[1] * inv[0][1] + Y[2] * inv[0][2]; C[1] = Y[0] * inv[1][0] + Y[1] * inv[1][1] + Y[2] * inv[1][2]; C[2] = Y[0] * inv[2][0] + Y[1] * inv[2][1] + Y[2] * inv[2][2];
printf("\n\nUsing the eq [Ft * F * c = Ft * y]"); printf("\nand solving for C1, C2 and C3,");
printf("\nC1 = %f ", C[0]); printf("\nC2 = %f ", C[1]); printf("\nC3 = %f ", C[2]);
ym = (y[0] + y[1] + y[2] + y[3] + y[4] + y[5] + y[6]) / N; S = 0; S_t = 0;
for (j = 0; j<7; j++) { yc[j] = C[0] + C[1] * (log(1 + x[j])) + C[2] * (exp(x[j] / 1000));
S = S + (y[j] - yc[j])(y[j] - yc[j]); S_t = S_t + (y[j] - ym)(y[j] - ym);
r2 = (S_t - S) / S_t; printf("\n\nValue of S_t = %f", S_t); printf("\nValue of S = %f", S); printf("\n\nFitting Curve:"); printf("\ny = (%f) + (%f) ln(1+x) + (%f) exp(x/1000)", C[0], C[1], C[2]); printf("\n\nCoefficient of determination:"); printf("\nr^2 = %f", r2); }