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

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;
"+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];

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

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

double l[][];

double r[];

double z[];

double

x[];
n=Integer.parseInt(JOptionPane.showInputDialog("ingrese el numero de
incognitas"));
m= new double [n][n];
x= new double [n];

l= new double [n][n];

r= 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]);
}
}
}

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

double x[];

double s[];

double cont[];

double suma,l,tol;
n=Integer.parseInt(JOptionPane.showInputDialog("ingrese el numero de
incognitas"));
tol=Double.parseDouble(JOptionPane.showInputDialog("ingrese
tolerancia "));

la

miter=Integer.parseInt(JOptionPane.showInputDialog("ingrese el numero
maximo de iteraciones"));
m= new double [n][n];
new double [n];
cont= new double [n];

r= new double [n];

x= new double [n];

s=

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

}
}

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

r= new double [n];

x= new double [n];

y=

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