Está en la página 1de 22

MTODO DE GAUSS

package gauss; import javax.swing.JOptionPane; public class gauss { public static void main(String[] args) { int i,j,s,k,h,n; double d; double m[][]; double r[]; double x[];

n=Integer.parseInt(JOptionPane.showInputDialog("ingrese el numero de incognitas")); m= new double [n][n]; for(i=0;i<=n-1;i++){ k=i+1; r[i]=Double.parseDouble(JOptionPane.showInputDialog("ingrese el elemento "+k+" del vector de soluciones")); x[i]=0; for(j=0;j<=n-1;j++){ h=j+1; m[i][j]=Double.parseDouble(JOptionPane.showInputDialog("ingrese el elemento "+k+h+" de la matriz de coeficientes")); } } for(i=0;i<n;i++){ for(j=i;j<n;j++){ if(i==j){ d=m[i][j]; for(s=0;s<n;s++){ m[i][s]=((m[i][s])/d); } r[i]=((r[i])/d); } r= new double [n]; x= new double [n];

else{ d=m[j][i]; for(s=0;s<n;s++){ m[j][s]=m[j][s]-(d*m[i][s]); } r[j]=r[j]-(d*r[i]); } } }

for(i=n-1;i>=0;i--){ double y=r[i]; for(j=n-1;j>=i;j--){ y=y-x[j]*m[i][j]; } x[i]=y; } for(i=0;i<n;i++){ k=i+1; "+x[i]); } } } JOptionPane.showMessageDialog(null,"el valor de la incognita x"+k+" es

MTODO DE GAUSS-JORDAN
package gaussjordan; import javax.swing.JOptionPane; public class gaussjordan { public static void main(String[] args) { int i,j,s,k,h,n,x,y; double d,c; double m[][]; double r[];

n=Integer.parseInt(JOptionPane.showInputDialog("ingrese el numero de incognitas")); m= new double [n][n]; for(i=0;i<=n-1;i++){ k=i+1; r[i]=Double.parseDouble(JOptionPane.showInputDialog("ingrese el elemento "+k+" del vector de soluciones")); for(j=0;j<=n-1;j++){ h=j+1; m[i][j]=Double.parseDouble(JOptionPane.showInputDialog("ingrese el elemento "+k+h+" de la matriz de coeficientes ")); } } for(i=0;i<=n-1;i++){ d=m[i][i]; for(s=0;s<=n-1;s++){ m[i][s]=((m[i][s])/d); } r[i]=((r[i])/d); for(x=0;x<=n-1;x++){ if(i!=x){ c=m[x][i]; for(y=0;y<=n-1;y++){ m[x][y]=m[x][y]-c*m[i][y]; r= new double [n];

} r[x]=r[x]-c*r[i]; } } } for(i=0;i<=n-1;i++){ k=i+1; JOptionPane.showMessageDialog(null,"el valor de la incognita x"+k+" es "+r[i]); } } }

FACTORIZACIN LU

package factorizacionlu; import javax.swing.JOptionPane; public class factorizacionLU { public static void main(String[] args) { int i,j,h,k,n,s; double c,suma; double m[][]; x[]; n=Integer.parseInt(JOptionPane.showInputDialog("ingrese el numero de incognitas")); m= new double [n][n]; x= new double [n]; for(i=0;i<=n-1;i++){ k=i+1; r[i]=Double.parseDouble(JOptionPane.showInputDialog("ingrese el elemento "+k+" del vector de soluciones")); for(j=0;j<=n-1;j++){ h=j+1; m[i][j]=Double.parseDouble(JOptionPane.showInputDialog("ingrese el elemento"+k+h+" de la matriz de coeficientes ")); if(i==j){ l[i][j]=1; } else{ l[i][j]=0; } } } for(i=0;i<n-1;i++){ for(j=i+1;j<n;j++){ l= new double [n][n]; z= new double [n]; r= new double [n]; double l[][]; double r[]; double z[]; double

c=(m[j][i])/m[i][i]; for(s=0;s<n;s++){ m[j][s]=m[j][s]-c*m[i][s]; } l[j][i]=c; } } for(i=0;i<n;i++){ suma=r[i]; for(j=i;j>=0;j--){ if(i==j){ suma=suma/l[i][j]; } else{ suma=suma-((z[j]*l[i][j])/l[i][i]); } } z[i]=suma; } for(i=n-1;i>=0;i--){ suma=z[i]; for(j=i;j<n;j++){ if(i==j){ suma=suma/m[i][j]; } else{ suma=suma-((x[j]*m[i][j])/m[i][i]); }

} x[i]=suma; } for(i=0;i<n;i++){ k=i+1; JOptionPane.showMessageDialog(null,"el valor de la incognita x"+k+" es "+x[i]); } } }

MTODO DE THOMAS package thomas; import javax.swing.JOptionPane; public class Thomas { public static void main(String[] args) { int i,j,k,h,n; double band,suma; double m[][]; double u[][];double l[][]; double r[]; double z[]; double x[]; double a[];double b[];double c[]; n=Integer.parseInt(JOptionPane.showInputDialog("ingrese el numero de incognitas")); m= new double [n][n]; u= new double [n][n];l= new double [n][n]; r= new double [n];x= new double [n];z= new double [n]; a= new double [n]; b= new double [n];c= new double [n-1]; for(i=0;i<=n-1;i++){ k=i+1; r[i]=Double.parseDouble(JOptionPane.showInputDialog("ingrese el elemento "+k+" del vector de soluciones")); for(j=0;j<=n-1;j++){ h=j+1; u[i][j]=0; m[i][j]=Double.parseDouble(JOptionPane.showInputDialog("ingrese el elemento"+k+h+" de la matriz de coeficientes ")); if(i==j){ l[i][j]=1; } else{ l[i][j]=0; }

} } for(i=0;i<n;i++){ if(i==0){ b[i]=m[i][i]; a[i]=0; u[i][i]=b[i]; } else{ c[i-1]=m[i-1][i]; a[i]=(m[i][i-1])/(b[i-1]); b[i]=m[i][i]-((a[i])*(c[i-1])); l[i][i-1]=a[i]; u[i][i]=b[i]; u[i-1][i]=c[i-1]; } } for(i=0;i<n;i++){ k=i+1; for(j=0;j<n;j++){ h=j+1; JOptionPane.showMessageDialog(null,"El elemento"+k+h+" de la matriz L es "+l[i][j]); JOptionPane.showMessageDialog(null,"El elemento"+k+h+" de la matriz U es "+u[i][j]); } } for(i=0;i<n;i++){ suma=r[i];

for(j=i;j>=0;j--){ if(i==j){ suma=suma/l[i][j]; } else{ suma=suma-((z[j]*l[i][j])/l[i][i]); } } z[i]=suma; } for(i=n-1;i>=0;i--){ suma=z[i]; for(j=i;j<n;j++){ if(i==j){ suma=suma/u[i][j]; } else{ suma=suma-((x[j]*u[i][j])/u[i][i]); } } x[i]=suma; } for(i=0;i<n;i++){ k=i+1; JOptionPane.showMessageDialog(null,"el valor de la incognita x"+k+" es "+x[i]); } } }

FACTORIZACIN DE CHOLESKY package cholesky; import javax.swing.JOptionPane; public class Cholesky { public static void main(String[] args) { int i,j,s,k,h,n; double band,suma; double m[][]; double l[][];double lt[][]; double r[]; double z[]; double x[]; double a[];double b[];double c[]; n=Integer.parseInt(JOptionPane.showInputDialog("ingrese el numero de incognitas")); m= new double [n][n]; l= new double [n][n];lt= new double [n][n]; r= new double [n];x= new double [n];z= new double [n]; a= new double [n]; b= new double [n];c= new double [n-1]; for(i=0;i<=n-1;i++){ k=i+1; r[i]=Double.parseDouble(JOptionPane.showInputDialog("ingrese el elemento "+k+" del vector de soluciones")); for(j=0;j<=n-1;j++){ h=j+1; m[i][j]=Double.parseDouble(JOptionPane.showInputDialog("ingrese el elemento"+k+h+" de la matriz de coeficientes ")); if(i==j){ l[i][j]=1; } else{ l[i][j]=0; }

} } k=0; for(i=0;i<n;i++){ for(j=0;j<n;j++){ if(m[i][j]!=m[j][i]){ k=1; } } } h=0; for(i=0;i<n;i++){ for(j=0;j<n;j++){ if(m[i][j]<0){ h=1; } } } if(k==0 && h==0){ l[0][0]=Math.sqrt(m[0][0]); for(i=0;i<n;i++){ for(j=0;j<=i;j++){ if(i==j){ suma=0; for(s=0;s<=i-1;s++){ suma=suma+Math.pow(l[i][s],2); } l[i][i]=Math.sqrt(m[i][i]-suma);

else{ suma=0; for(s=0;s<=j-1;s++){ suma=suma+(l[j][s])*(l[i][s]); } l[i][j]=(m[i][j]-suma)/l[j][j]; } } } for(i=0;i<n;i++){ k=i+1; for(j=0;j<n;j++){ h=j+1; JOptionPane.showMessageDialog(null,"el valor de la incognita x"+k+h+" es "+l[i][j]); } } for(i=0;i<n;i++){ for(j=0;j<n;j++){ a[j]=l[i][j]; } for(j=0;j<n;j++){ lt[j][i]=a[j]; } } for(i=0;i<n;i++){ k=i+1;

for(j=0;j<n;j++){ h=j+1; JOptionPane.showMessageDialog(null,"el valor de la incognita lt"+k+h+" es "+lt[i][j]); } } for(i=0;i<n;i++){ suma=r[i]; for(j=i;j>=0;j--){ if(i==j){ suma=suma/l[i][j]; } else{ suma=suma-((z[j]*l[i][j])/l[i][i]); } } z[i]=suma; } for(i=n-1;i>=0;i--){ suma=z[i]; for(j=i;j<n;j++){ if(i==j){ suma=suma/lt[i][j]; } else{ suma=suma-((x[j]*lt[i][j])/lt[i][i]); } } x[i]=suma;

} for(i=0;i<n;i++){ k=i+1; JOptionPane.showMessageDialog(null,"el valor de la incognita x"+k+" es "+x[i]); } } else{ if(k==1 && h==1){ JOptionPane.showMessageDialog(null,"La matriz es asimetrica y no esta definida positivamente"); } else{ if(k==1){ JOptionPane.showMessageDialog(null,"La matriz es asimetrica"); } else{ JOptionPane.showMessageDialog(null,"La matriz no esta definida positivamente"); } } } } }

MTODO DE JACOBI package jacobi; import javax.swing.JOptionPane; public class jacobi { public static void main(String[] args) { int n,k,i,j,h,band,siga,miter; double m[][]; double error[]; double suma,l,tol; n=Integer.parseInt(JOptionPane.showInputDialog("ingrese el numero de incognitas")); tol=Double.parseDouble(JOptionPane.showInputDialog("ingrese tolerancia ")); la double r[]; double x[]; double s[]; double cont[];

miter=Integer.parseInt(JOptionPane.showInputDialog("ingrese el numero maximo de iteraciones")); m= new double [n][n]; new double [n]; cont= new double [n]; for(i=0;i<=n-1;i++){ k=i+1; r[i]=Double.parseDouble(JOptionPane.showInputDialog("ingrese el elemento "+k+" del vector de soluciones")); x[i]=Double.parseDouble(JOptionPane.showInputDialog("ingrese el valor en el cual quiere comenzar a evaluar x"+k)); s[i]=0; for(j=0;j<=n-1;j++){ h=j+1; m[i][j]=Double.parseDouble(JOptionPane.showInputDialog("ingrese el elemento"+k+h+" de la matriz de coeficientes")); } } r= new double [n]; error= new double [n]; x= new double [n]; s=

band=0; for(i=0;i<n;i++){ suma=0; for(j=0;j<n;j++){ if(i!=j){ suma=suma+m[i][j]; } } cont[i]=suma; if(Math.abs(m[i][i])>cont[i]){ band=band+1; } } if(band==n){ siga=n-1; int iter=0; while(siga!=n && iter<miter){ iter=iter+1;

for(i=0;i<n;i++){ l=0; for(j=0;j<n;j++){ if(i==j){ l=l+r[i]/m[i][j]; } else{ l=l-((m[i][j]*x[j])/m[i][i]); }

} s[i]=l; } for(i=0;i<n;i++){ error[i]=Math.abs((s[i]-x[i])/s[i])*100; } for(i=0;i<n;i++){ x[i]=s[i]; } siga=0; for(i=0;i<n;i++){ if(error[i]<tol){ siga=siga+1; } } } h=0; for(i=0;i<n;i++){ h=h+1; JOptionPane.showMessageDialog(null,"el valor aproximado de la incognita x"+h+" es "+s[i]); } JOptionPane.showMessageDialog(null,"El numero total de iteraciones fue de "+iter); } else { JOptionPane.showMessageDialog(null,"No se puede solucionar por este metodo debido a que la matriz de coeficientes no es diagonalmente dominante"); }

} }

MTODO DE GAUSS-SEIDEL package gaussseidel2; import javax.swing.JOptionPane; public class gaussseidel2 { public static void main(String[] args) { int n,k,i,j,h,band,siga,miter; double m[][]; double cont[]; double r[]; double x[]; double y[]; double error[];

double suma,l,tol; n=Integer.parseInt(JOptionPane.showInputDialog("ingrese el numero de incognitas")); tol=Double.parseDouble(JOptionPane.showInputDialog("ingrese la tolerancia ")); miter=Integer.parseInt(JOptionPane.showInputDialog("ingrese el numero maximo de iteraciones")); m= new double [n][n]; new double [n]; cont= new double [n]; for(i=0;i<=n-1;i++){ k=i+1; r[i]=Double.parseDouble(JOptionPane.showInputDialog("ingrese el elemento "+k+" del vector de soluciones")); x[i]=Double.parseDouble(JOptionPane.showInputDialog("ingrese el valor en el cual quiere comenzar a evaluar x"+k)); y[i]=0; for(j=0;j<=n-1;j++){ h=j+1; r= new double [n]; error= new double [n]; x= new double [n]; y=

m[i][j]=Double.parseDouble(JOptionPane.showInputDialog("ingrese el elemento"+k+h+" de la matriz de coeficientes")); } } band=0; for(i=0;i<n;i++){ suma=0; for(j=0;j<n;j++){ if(i!=j){ suma=suma+m[i][j]; } } cont[i]=suma; if(Math.abs(m[i][i])>cont[i]){ band=band+1; } } if(band==n){ siga=n-1; int iter=0; while(siga!=n && iter<miter){ iter=iter+1; for(i=0;i<n;i++){ l=0; for(j=0;j<n;j++){ if(i==j){ l=l+r[i]/m[i][j]; } else{

l=l-((m[i][j]*x[j])/m[i][i]); } } x[i]=l; } for(i=0;i<n;i++){ error[i]=Math.abs((x[i]-y[i])/x[i])*100; y[i]=x[i]; } siga=0; for(i=0;i<n;i++){ if(error[i]<tol){ siga=siga+1; } } } h=0; for(i=0;i<n;i++){ h=h+1; JOptionPane.showMessageDialog(null,"el valor aproximado de la incognita x"+h+" es "+x[i]); } JOptionPane.showMessageDialog(null,"El nmero total de iteraciones fue de "+iter); } else { JOptionPane.showMessageDialog(null,"No se puede solucionar por este metodo debido a que la matriz de coeficientes no es diagonalmente dominante"); }

} }

También podría gustarte