1. UNIVERSIDAD INDUSTRIAL DE SANTANDER
FACULTAD DE INGENIERÍAS FÍSICO-QUÍMICAS
ESCUELA DE INGENIERÍA DE PETRÓLEOS
Métodos Numéricos
SOME CODES
IN JAVA
2. UNIVERSIDAD INDUSTRIAL DE SANTANDER
FACULTAD DE INGENIERÍAS FÍSICO-QUÍMICAS
ESCUELA DE INGENIERÍA DE PETRÓLEOS
Métodos Numéricos
FACTORIZACION LU
package factorizacionlu;
import javax.swing.JOptionPane;
public class factorizacionLU {
public static void main(String[] args) {
JOptionPane.showMessageDialog(null,"SOLUCION DE ECUACIONES LINEALES POR EL
METODO DE FACTORIZACION LU");
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];
//RECUERDE QUE LOS ELEMENTOS DE LA DIAGONAL PRINCIPAL DEBEN SER
DIFERENTES DE CERO
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 "));
//LLENADO DE LA MATRIZ IDENTICA
if(i==j){
l[i][j]=1;
}
else{
l[i][j]=0;
}
}
}
//EL SIGUIENTE CICLO REALIZA EL PROCESO DE FACTORIZACION DIVIDE LA MATRIZ DE
COEFICIENTES EN 2 MATRICES
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;
}
}
3. UNIVERSIDAD INDUSTRIAL DE SANTANDER
FACULTAD DE INGENIERÍAS FÍSICO-QUÍMICAS
ESCUELA DE INGENIERÍA DE PETRÓLEOS
Métodos Numéricos
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]);
}
}
}
4. UNIVERSIDAD INDUSTRIAL DE SANTANDER
FACULTAD DE INGENIERÍAS FÍSICO-QUÍMICAS
ESCUELA DE INGENIERÍA DE PETRÓLEOS
Métodos Numéricos
GAUSS
package gauss;
import javax.swing.JOptionPane;
public class gauss {
public static void main(String[] args) {
JOptionPane.showMessageDialog(null,"SOLUCION DE ECUACIONES LINEALES POR EL
METODO DE GAUSS");
int i,j,s,k,h,n,x,y;
double d,c;
double m[][];
double r[];
//Recuerde que el numero de incognitas y de ecuaciones deben ser iguales
n=Integer.parseInt(JOptionPane.showInputDialog("ingrese el numero de incognitas"));
m= new double [n][n];
r= new double [n];
//RECUERDE QUE LOS ELEMENTOS DE LA DIAGONAL PRINCIPAL DE LA MATRIZ DE
COEFICIENTES DEBEN SER DIFERENTES A CERO
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]);
}
}
}
5. UNIVERSIDAD INDUSTRIAL DE SANTANDER
FACULTAD DE INGENIERÍAS FÍSICO-QUÍMICAS
ESCUELA DE INGENIERÍA DE PETRÓLEOS
Métodos Numéricos
GAUSS JORDAN
package gaussjordan;
import javax.swing.JOptionPane;
public class gaussjordan {
public static void main(String[] args) {
JOptionPane.showMessageDialog(null,"SOLUCION DE ECUACIONES LINEALES POR EL
METODO DE GAUSS-JORDAN");
int i,j,s,k,h,n;
double d;
double m[][];
double r[];
double x[];
//Recuerde que el numero de incognitas y de ecuaciones deben ser iguales
n=Integer.parseInt(JOptionPane.showInputDialog("ingrese el numero de incognitas"));
m= new double [n][n];
r= new double [n];
x= new double [n];
//RECUERDE QUE LA DIAGONAL PRINCIPAL DE LA MATRIZ DE COEFICIENTES NO PUEDE
TENER CEROS
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"));
}
}
//Este ciclo convierte la triangular inferior en ceros
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]);
}
}
}
//A continuacion se calcula el valor de las ingognitas
6. UNIVERSIDAD INDUSTRIAL DE SANTANDER
FACULTAD DE INGENIERÍAS FÍSICO-QUÍMICAS
ESCUELA DE INGENIERÍA DE PETRÓLEOS
Métodos Numéricos
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]);
}
}
}
7. UNIVERSIDAD INDUSTRIAL DE SANTANDER
FACULTAD DE INGENIERÍAS FÍSICO-QUÍMICAS
ESCUELA DE INGENIERÍA DE PETRÓLEOS
Métodos Numéricos
GAUSS SEIDEL
package gaussseidel2;
import javax.swing.JOptionPane;
public class gaussseidel2 {
public static void main(String[] args) {
JOptionPane.showMessageDialog(null,"SOLUCION DE ECUACIONES LINEALES POR EL
METODO DE GAUSS-SEIDEL");
int n,k,i,j,h,band,siga;
double m[][];
double r[];
double x[];
double y[];
double error[];
double suma,l,tol;
//Recuerde que el numero de incognitas y de ecuaciones deben ser iguales
n=Integer.parseInt(JOptionPane.showInputDialog("ingrese el numero de incognitas"));
//recuerde que entre mas pequeña la tolerancia mas exacto sera el calculo
tol=Double.parseDouble(JOptionPane.showInputDialog("ingrese la tolerancia "));
m= new double [n][n];
r= new double [n];
x= new double [n];
y= 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]=0; 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"));
}
}
suma=0; band=0;
for(i=0;i<n;i++){
while(Math.abs(m[i][i])>suma && band<n){
band=band+1;
suma=0;
for(j=0;j<n;j++){
if(i!=j){
suma=suma+m[i][j];
}
}
}
}
if(band==n){
siga=n-1;
int iter=0;
while(siga!=n){
iter=iter+1;
8. UNIVERSIDAD INDUSTRIAL DE SANTANDER
FACULTAD DE INGENIERÍAS FÍSICO-QUÍMICAS
ESCUELA DE INGENIERÍA DE PETRÓLEOS
Métodos Numéricos
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 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");
}
}
}