Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Metodo Pivoteo parcial c++

Estas en el tema de Metodo Pivoteo parcial c++ en el foro de C/C++ en Foros del Web. Buena a todos de nuevo Este otro programa es de pivoteo parcial tengo el mismo problema que el anterior las soluciones no sales pero me ...
  #1 (permalink)  
Antiguo 12/05/2013, 12:52
 
Fecha de Ingreso: abril-2013
Mensajes: 4
Antigüedad: 11 años, 7 meses
Puntos: 0
Metodo Pivoteo parcial c++

Buena a todos de nuevo

Este otro programa es de pivoteo parcial tengo el mismo problema que el anterior
las soluciones no sales pero me parece que si implemente la lógica correcta al hacer pruebas de escritorio

El método consisten en tener intercambiar filas para evitar ceros en la diagonal principal, por eso el elemento pivote(números en la diagonal) tiene que se mayor en valor absoluto respecto a cada columna, y si este elemento pivote es menor en su columna por el elemento mayor, ademas se se intercambia toda la fila

De ahí es el metodo de gauss simple para despejar las incógnitas

Aquí
un ejemplo de una matriz:
matriz A

2 1 -3
-1 3 2
3 1 -3

vector B
-1
12
0

la matriz resultante --- >
3 1 -3
0 10/3 1
0 0 -11/10

vector B
0
12
-11/5

Soluciones:
X=1
Y=3
Z=2


EL PROGRAMA

[I]//METODO PIVOTEO
#include <fstream>
#include <conio>
#include <ctype>
#include <string.h>
#include <stdio>
#include <dos.h>
#include <windows.h>
#include <time.h>
#include <math.h>


void main()
{
float min,paso,g,b[100][100],c[100],h[100][100],inv[100][100],ind[100],matriz[100][100],det,a[100][100],fo[100],m0[100][100],f1[100],f2[100],m1[100][100],factor,xn[100],sum;
int may,fmay,f,i,j,n,m,p,k,l,s=1,km,km1,n1,n2;
if(s!=1)
{
o:
}else{
r:
clrscr();
cout<<"INGRESE EL NUMERO DE VARIABLES"<<endl;
cin>>n;
if(n<=1)
{
cout<<"ERROR!, Ingrese mas de una variable para completar el sistema "<<endl;
getch();
goto r;
}
else{
cout<<"=========================================== ===================================";
km=1;
m=4;
p=10;
for(j=1;j<=n;j++)
{
gotoxy(p,m);cout<<"X"<<j;
p=p+6;
}
gotoxy(p,m);cout<<"C";
m=6;
for(i=1;i<=n;i++)
{
p=10;
for(j=1;j<=n;j++)
{
gotoxy(p,m);scanf("%f",&matriz[i][j]);
fo[km]=matriz[i][j];
km++;
p=p+6;
}
gotoxy(p,m);cin>>ind[i];
fo[km]=ind[i];
km++;
m=m+2;
}
}
cout<<"=========================================== ===================================";

//Pivoteo parcial
for(i=1;i<=n-1;i++)
{
may=abs(matriz[i][i]);
fmay=i;
for(j=i+1;j<=n;j++)
{
if(abs(matriz[j][i])>may)
{
may=abs(matriz[j][i]);
fmay=j;
}
}

for(k=1;k<=n;k++)
{
paso=matriz[i][k];
matriz[i][k]=matriz[fmay][k];
matriz[fmay][k]=paso;
}

paso=ind[i];
ind[i]=ind[fmay];
ind[fmay]=paso;

//Eliminacion

for(j=i+1;j<=n;j++)
{
min=matriz[j][i]/matriz[i][i];
for(k=1;k<=n;k++)
{
matriz[j][k]=matriz[j][k]-(min*matriz[i][k]);

}
ind[j]=ind[j]-(min*ind[i]);
}
}


//Despeje de las incognitas
xn[n]=ind[n]/matriz[n][n];

for(i=n-1;i<=1;i--)
{
xn[i]=ind[i];
for(j=i+1;j<=n;j++)
{
xn[i]=xn[i]-(matriz[i][j]*xn[j]);
}
xn[i]=xn[i]/matriz[i][i];
}

clrscr();

m=4;
for(i=1;i<=n;i++)
{
p=10;
for(j=1;j<=n;j++)
{
gotoxy(p,m);cout<<matriz[i][j];
p=p+6;
}
m=m+2;
}


cout<<"Las soluciones son: "<<endl;
for(i=1;i<=n;i++)
{
cout<<xn<<endl;
}

getch();
}
}

Etiquetas: int, metodo, parcial, programa, string, variable
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:46.