📄 practica7_1a.cpp
字号:
/*PRACTICA 7 EJERCICIO 1a
Escribir una funci髇 que tome como par醡etro una matriz cuadrada y que triangule
la matriz seg鷑 el m閠odo de Gauss-Jordan sin pivoteo.
a) Modificar la funci髇 para que detecte la existencia de pivotes nulos, y que
interrumpa el proceso mostrando un mensaje de error en ese caso. Para este
punto, consideramos que un pivote aii es nulo si | aii | < 10-8.*/
#include<stdio.h>
#include<conio.h>
#include<math.h>
#define COLS 100
void triangular(float A[][COLS],int n,float E)
{ float m,aux; int i,j,k,t,;
for (j=0; j<n-1; ++j)
{
if(fabs(A[j][j])<E)
{ t=j+1;
while(t<n && fabs(A[t][j])<E)
++t;
if(t==n)
{
printf("La matriz no es inversible");
return;
}
for (k=j; k<=n; ++k)
{
aux =A[t][k];
A[t][k]=A[j][k];
A[j][k]=aux;
}
}
for (i=j+1; i<n; ++i)
{
m=-A[i][j]/A[j][j];
for(k=j; k<=n; ++k)
A[i][k]=A[i][k]+m*A[j][k];
}
}
}
main ()
{ int n,i,j;
float E,suma;
printf ("Dame el margen de error");
scanf("%f",&E);
printf("ingrese el tamande la matriz cuadrada");
scanf("%d",&n);
float A[n][COLS];
printf("Ingrese los elementos de la matriz\n");
for(i=0; i<n;++i)
{
for(j=0; j<=n; ++j)
{
scanf("%f",&A[i][j]);
}
}
printf("\n\n");
triangular(A,n,E);
for(i=0; i<n;++i)
{
for(j=0; j<=n; ++j)
{
printf("%.0f ",A[i][j]);
if (j==n)
printf("\n");
}
}
printf("\n\n");
float X[n];
X[n]=0;
suma=0;
for(i=n-1; i>=0 ; --i)
{
for(j=i+1; j<n; ++j)
{
suma=suma+A[i][j]*X[j];
}
if (i==n-1)
X[i]=A[i][n]/A[i][i];
else
X[i]=(A[i][n]/A[i][i])-(suma/A[i][i]);
suma=0;
}
for(i=0 ; i<n; ++i)
printf("%f ,",X[i]);
getch();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -