You are on page 1of 22

MÉTODO JFJ

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]; r= new double [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"));

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);

}
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;

JOptionPane.showMessageDialog(null,"el valor de la incognita x"+k+" es


"+x[i]);

}
MÉTODO 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]; r= 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 "));

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[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]);

FACTORIZACIÓN 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[][]; double l[][]; double r[]; double z[]; double


x[];

n=Integer.parseInt(JOptionPane.showInputDialog("ingrese el numero de
incognitas"));

m= new double [n][n]; l= new double [n][n]; r= new double [n];

x= new double [n]; z= 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++){
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]);

}
MÉTODO 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]);

}
FACTORIZACIÓN 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");

}
MÉTODO 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 r[]; double x[]; double s[]; double cont[];
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]; r= new double [n]; x= new double [n]; s=


new double [n];

cont= new double [n]; error= 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"));

}
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");

}
}

MÉTODO 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 r[]; double x[]; double y[]; double error[];
double cont[];

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]; r= new double [n]; x= new double [n]; y=


new double [n];

cont= new double [n]; error= 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;
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 número 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");

}
}

You might also like