lunes, 4 de mayo de 2009

perceptron

/** * @(#)Perceptron.java * * Perceptron application * * @author * @version 1.00 2009/3/18 */
public class Perceptron {
public static void main(String[] args) {
matriz a = new matriz(1,3,-3,4);
a.obtenermatriz();
System.out.println("b");
matriz b = new matriz(3,1,-3,4);
b.obtenermatriz();
matriz resul = new matriz();
resul=a.multiplicar(b);
System.out.println("resl");
resul.obtenermatriz();
double res;
res=(resul.matrizsumada(resul))+0.5;
System.out.print("net: "+res); // resul.ingresar(0,0,-2);// resul.ingresar(0,1,1);// resul.ingresar(0,2,2);// resul.obtenermatriz();
}
}

/**
* @(#)matriz.java
*
*
* @Juan Carlos Lafuente
* @version 1.00 2009/3/18
*/
import java.math.*;
public class matriz {
int i,j,k;
int numFilas;
int numColumnas;
double matriz[][];

/********************************************************/
/* CONSTRUCTORES DE CLASE */
/********************************************************/
//Constructor de Matriz Vacia
matriz() {
}

//Constructor de Matriz Inicializado a CERO
matriz(int nf, int nc){
numFilas=nf;
numColumnas=nc;
matriz = new double [numFilas][numColumnas];
for(i=0; i for(j=0; j matriz[i][j]=0;
}
}
}

//Constructor de Matriz Inicializado con aleatorios a los limtes
public matriz(int nf, int nc, double a, double b){
numFilas=nf;
numColumnas = nc;
matriz = new double [numFilas][numColumnas];
for(i=0;i for(j=0;j // aqui coje valores de (0 - 3.99_) y al momento de hacer
// el cast se trunca y queda de (0-3)
matriz[i][j] = (int)((2)*Math.random()*2);
}
}
}

/********************************************************/
/* METODO DE MODIFICACION */
/********************************************************/
// modificamos individualmente el numero en cada posición
public void ingresar(int nf,int nc, double numero){
matriz[nf][nc] = numero;
}
/********************************************************/
/* METODO DE IMPRESION */
/********************************************************/
public void obtenermatriz(){
for(i=0; i for(j=0; j System.out.print("\t\t"+matriz[i][j]);
}
System.out.println("");
}
System.out.println("---------------------------------------");
}
/********************************************************/
/* OPERACIONES CON MATRICES */
/********************************************************/
//suma
public matriz suma(matriz b){
if(this.numFilas==b.numFilas&&this.numColumnas==b.numColumnas){
matriz result=new matriz(this.numFilas,this.numColumnas);
for(int i=0;i for(int j=0;j result.matriz[i][j]=this.matriz[i][j]+b.matriz[i][j];
}
}
return result;
}else{
mensajeError();
return null;
}
}
//resta
public matriz resta(matriz b){
if(this.numFilas==b.numFilas&&this.numColumnas==b.numColumnas){
matriz result=new matriz(this.numFilas,this.numColumnas);
for(int i=0;i for(int j=0;j result.matriz[i][j]=this.matriz[i][j]-b.matriz[i][j];
}
}
return result;
}else{
mensajeError();
return null;
}
}
//multiplicacion
public matriz multiplicar(matriz b){
if(this.numColumnas==b.numFilas){
matriz result=new matriz(this.numFilas,b.numColumnas);
for(int i=0;i for(int j=0;j for(int k=0;k result.matriz[i][j] += this.matriz[i][k]*b.matriz[k][j];
}
}
}
return result;
}else{
mensajeError();
return null;
}
}
//transpuesta acabar de corregir la transpuesta
public matriz transpuesta(){
matriz result=new matriz(this.numColumnas,this.numFilas);
for(int i=0;i for(int j=0;j result.matriz[j][i]=matriz[i][j];
}
}
return result;
}
//multiplicar escalar
public matriz multiplicarEscalar(double alfa){
matriz result=new matriz(this.numFilas,this.numColumnas);
for(int i=0;i for(int j=0;j result.matriz[i][j]=alfa*matriz[i][j];
}
}
return result;
}
//matrizsumada - se suman todos los elemntos de la matriz
public double matrizsumada(matriz b){
double resultado=0;
for(int i=0;i for(int j=0;j resultado=resultado+matriz[i][j];
}
}
return resultado;
}
/********************************************************/
/* MEMSAJES DE ERRORES */
/********************************************************/

private void mensajeError() {
System.out.println("\nError no es posible realizar esta operacion");
}


///metodo que me sirve para el mensaje de error


/*
//inversa de la matriz

public matriz matrizInversa(){
if(matriz.length==matriz[0].length){
matriz result=new matriz(this.matriz.length,this.matriz[0].length);
double tmp;
matriz inversa=new matriz(matriz.length,matriz[0].length*2);
for(int i=0;i for(int j=0;j inversa.matriz[i][j]=0.0;
}
}
for(int i=0;i for(int j=0;j inversa.matriz[i][j]=matriz[i][j];
if (i==j){
inversa.matriz[i][j+matriz.length]=1.0;
}
}
}

///////////////////////
for(int i=0;i tmp=inversa.matriz[i][i];
for(int j=0;j<(matriz[0].length*2);j++){
inversa.matriz[i][j]/=tmp;
}
for(int k=0;k if(k!=i){
tmp=inversa.matriz[k][i];//toca revisar
for(int j=0;j<(matriz[i].length*2);j++){
inversa.matriz[k][j]-=tmp*inversa.matriz[i][j];
}
}
}
}

for(int i=0;i for(int j=0;j result.matriz[i][j]=inversa.matriz[i][j+matriz[i].length];

return result;
}else{
mensajeError();
return null;
}


}*/
}

No hay comentarios:

Publicar un comentario