

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
Encontra documentos específicos para os exames da tua universidade
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
Um algoritmo para resolver sistemas lineares usando o método da gradiente. O usuário é solicitado a digitar os valores das variáveis desconhecidas de três equações lineares simultâneas, após o qual o programa calcula as novas aproximações das variáveis até atingir a tolerância desejada. O algoritmo é iterativo e é executado até atingir a quantidade máxima de interações.
Tipologia: Notas de estudo
1 / 2
Esta página não é visível na pré-visualização
Não perca as partes importantes!


#include <stdio.h>
// Equacao 1: 1X + 2Y + 3Z = 11 // Equacao 2: 3X + 3Y + 2Z = 9 // Equacao 3: 4X + 5Y + 3Z = 20
// Tolerancia 0, // Interacoes 100
void main () {
float C[3][4],x,y,z,xant=0,yant=0,zant=0,tol=1,tol1,tol2,tol3,mod1,mod2,mod3; int i,j,k=0;
for(i=0;i<=2;i++) { for(j=0;j<=3;j++) { if(i==0){ printf("Digite Valor Variavel 1: "); scanf("%f",&C[i][j]); } if(i==1){ printf("Digite Valor Variavel 2: "); scanf("%f",&C[i][j]); } if(i==2){ printf("Digite Valor Variavel 3: "); scanf("%f",&C[i][j]); } } }
while (tol>0.00001 && k<20) {
getchar();
x = (C[0][3] - (C[0][2] * zant) - C[0][1] * yant ) / C[0][0]; y = (C[1][3] - (C[1][0] * x) - ( C[1][2] * zant)) / C[1][1]; z = (C[2][3] - (C[2][1] * y) - ( C[2][0] * x)) / C[2][2];
tol1= x-xant; tol2= y-yant; tol3= z-zant;
printf("\nX Ant:%.6f\nY Ant:%.6f\nZ Ant:%.6f\nX Pro:%.6f\nY Pro:%.6f\nZ Pro:%.6f\n",xant,yant,zant,x,y,z);
if (tol1<0) tol1 = tol1 * (-1); if (tol2<0) tol2 = tol2 * (-1); if (tol3<0) tol3 = tol3 * (-1);
if (tol1 > tol2 && tol1 > tol3) tol = tol1;
if (tol2 > tol1 && tol2 > tol3) tol = tol2; if (tol3 > tol1 && tol3 > tol2) tol = tol3;
xant = x; yant = y; zant = z; k++;
printf("\nMod Tolerancia X: %.6f\nMod Tolerancia Y: %.6f\nMod Tolerancia Z: %.6f\nTolerancia Maxima %.6f\nInteracoes %d\n",tol1,tol2,tol3,tol,k);
printf("\n Valor1: %.6f \n Valor2: %.6f \n Valor3: %.6f \n\n",xant,yant,zant); }