Codigos Python
Codigos Python
import numpy as np
A=np.array([ [2,-1,1],[0,2,-1],[1,-1,0] ])
b=np.array([3,1,1])
cramer(A,b)
-----------------------------------------------------------------------------------
#Armando Hernández Cortez - Eliminación de Gauss
def mostrarMatriz(matriz,orden):
for i in range(0,orden):
linea = "| "
for j in range(orden+1):
linea += str(matriz[i][j])+" "
linea += "| "
print(linea)
----------------------------------------------------------------------------------
Matriz Inversa
#include <iostream>
#include <windows.h>
COORD coord={0,0};
void gotoxy(int x, int y){
coord.X=x;
coord.Y=y;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
}
int main(){
short int i,j,k,n;
if(i==j)
I[i][j]=1;
}
//Reduccion por renglones
pivote= A[i][i];
for(k=0; k<n; k++){
A[i][k]= A[i][k]/pivote;
I[i][k]= I[i][k]/pivote;
}
gotoxy(j*10, i+10);
cout<<A[i][j];
gotoxy(30+j*10,i+10);
cout<<" "<<I[i][j];
}
return 0;
}
-----------------------------------------------------------------------------------
-------------------
DESCOMPOSICION LU
import numpy as np
print ("Descomposición LU, matrices cuadradas")
m=int(input("Introduce el número de renglones"))
matriz=np.zeros([m,m])
u=np.zeros([m,m])
l=np.zeroz([m,m])
print("Introduce los elementos de la matriz")
for r in range(0,m):
for c in range(0,m):
matriz[r,c]=(input("Elemento a["+str(r+1)+","+str(c+1)+"]"))
matriz[r,c]=float(matriz[r,c])
u[r,c]=matriz[r,c]
#Operaicones para hacer ceros debajo de la diagonal
for k in range(0,m):
for r in range(0,m):
if (k==r):
l[k,r]=1
if (k<r):
factor=(matriz[r,k]/matriz[k,k])
l[r,k]=factor
for c in range(0,m):
matriz[r,c]=matriz[r,c]-(factor*matriz[k,c])
u[r,c]=matriz[r,c]
print("Resultados")
print("Matriz L")
print(l)
print("Matriz U")
print(u)
-----------------------------------------------------------------------------------
-------------
DESCOMPOSICION LU CON UN VECTOR B
#include<iostream>
#include<stdio.h>
int main(){
int i=0,j=0,k=0,n=0;
//Descomposicion LU
for(i=0;i<n;i++){
for(j=0;j<n;j++){
sum=0;
if(i<=j){ //Es decir, solo se llenan los elementos de la
diagonal y encima de ella para U
for(k=0;k<n;k++){
if(k!=i){
sum=sum+L[i][k]*U[k][j];
}else {
U[i][j]=A[i][j]-sum; //Llenado de elementos
restantes de U
}
}
} else{ //Es decir, solo se llenan los elementos debajo
de la diagonal para L
for(k=0;k<n;k++){
if(k!=j){
sum=sum+L[i][k]*U[k][j];
}else {
L[i][j]=(A[i][j]-sum)/U[j][j]; //Llenado de elementos
restantes de L
}
}
}
}
}
printf("\n\n L =");
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
printf ("%10.2f",L[i][j]);
printf("\n ");
}
printf("\n\n U =");
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
printf ("%10.2f",U[i][j]);
printf("\n ");
}
Y[0]=B[0]/L[0][0];
for(i=1;i<n;i++)
{
sum=0;
for(j=0;j<i;j++)
{
sum=sum+Y[j]*L[i][j];
}
Y[i]=B[i]-sum;
}
printf("\n\n Y =");
for(i=0;i<n;i++)
{
printf ("%10.2f",Y[i]);
printf("\n ");
}
X[n-1]=Y[n-1]/U[n-1][n-1];
for(i=n-2;i>=0;i--){
sum=0;
for(j=n-1;j>i;j--)
sum=sum+X[j]*U[i][j];
X[i]=(Y[i]-sum)/U[i][i];
}
//Descomposicion LU
for(i=0;i<n;i++){
for(j=0;j<n;j++){
sum=0;
if(i<=j){ //Es decir, solo se llenan los elementos de la
diagonal y encima de ella para U
for(k=0;k<n;k++){
if(k!=i){
sum=sum+L[i][k]*U[k][j];
}else {
U[i][j]=A[i][j]-sum; //Llenado de elementos
restantes de U
}
}
} else{ //Es decir, solo se llenan los elementos debajo
de la diagonal para L
for(k=0;k<n;k++){
if(k!=j){
sum=sum+L[i][k]*U[k][j];
}else {
L[i][j]=(A[i][j]-sum)/U[j][j]; //Llenado de elementos
restantes de L
}
}
}
}
}
printf("\n\n L =");
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
printf ("%10.2f",L[i][j]);
printf("\n ");
}
printf("\n\n U =");
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
printf ("%10.2f",U[i][j]);
printf("\n ");
}
Y[0]=B[0]/L[0][0];
for(i=1;i<n;i++)
{
sum=0;
for(j=0;j<i;j++)
{
sum=sum+Y[j]*L[i][j];
}
Y[i]=B[i]-sum;
}
printf("\n\n Y =");
for(i=0;i<n;i++)
{
printf ("%10.2f",Y[i]);
printf("\n ");
}
X[n-1]=Y[n-1]/U[n-1][n-1];
for(i=n-2;i>=0;i--){
sum=0;
for(j=n-1;j>i;j--)
sum=sum+X[j]*U[i][j];
X[i]=(Y[i]-sum)/U[i][i];
}