sábado, 14 de noviembre de 2009

Vector unitario, Producto escalar, Producto cruz

Nombre: Carolina Navarrete

Vector unitario, Producto Escalar,Producto

CLASE MATRIZ

public class Matriz {
public int numeroFilas;
public int numeroColumnas;
public double [][]matriz;

//crea una matriz sin dimensiones
public Matriz(){
}

//constructor con parametros
//nF es el numero de filas
//nc es el numero de columnas
public Matriz(int nF, int nC){
numeroFilas = nF;
numeroColumnas = nC;
matriz = new double [numeroFilas][numeroColumnas];

for(int i=0; i < numeroFilas; i++)
for(int j=0; j < numeroColumnas; j++)
matriz[i][j]=0;
}


//metodo de suma de matrices
//b es el primer sumando
//retorna una matriz resultado de suma
public Matriz suma(Matriz b){
Matriz resultado;

if((this.numeroFilas == b.numeroFilas)&& (this.numeroColumnas == b.numeroColumnas)){
resultado = new Matriz(this.numeroFilas, this.numeroColumnas);
for(int i=0; i < this.numeroFilas; i++)
for(int j=0; j < this.numeroColumnas; j++)
resultado.matriz[i][j] = this.matriz[i][j]+ b.matriz[i][j];
return resultado;
}
else
System.out.println("ERROR EN DIMENSIONES DE LAS MATRICES");
resultado=null;
return resultado;
}

//metodo de multiplicacion de matrices

public Matriz multiplicacion(Matriz b){
Matriz resultado;
if(this.numeroFilas == b.numeroColumnas){
resultado=new Matriz(this.numeroFilas,b.numeroColumnas);
for(int i=0; i < this.numeroFilas; i++){
for(int j=0; j < b.numeroColumnas; j++){
for(int k=0; k < this.numeroFilas; k++)
resultado.matriz[i][j] += (this.matriz[i][k]*b.matriz[k][j]);
}
}
return resultado;
}
else
System.out.println("error en dimensiones de las matrices");
resultado = null;
return resultado;
}
//devuelve el objeto matriz en texto para poderlo imprimir
public String toString(){
String aux="\n[\n";
for(int i=0; i < numeroFilas; i++){
for(int j=0; j < numeroColumnas; j++){
aux += matriz[i][j]+" ";
}
aux+="\n";
}
aux+= "]";
return aux;
}
}

Clase Vector

public class Vector3D extends Matriz {
private static Object v;
double coorX;
double coorY;
double coorZ;

public Vector3D (){
super(1,3);
}

public Vector3D(double x, double y, double z){
super(1,3);
this.matriz[0][0] = x;
this.matriz[0][1] = y;
this.matriz[0][2] = z;
coorX = x;
coorY = y;
coorZ = z;
}

public double magnitud(){
double resultado = 0;
//double suma;
for(int i = 0; i < 3; i++ ){
resultado += this.matriz[0][i]*this.matriz[0][i];
}
resultado = Math.sqrt(resultado);
return resultado;
}

public double magnitud1(){
double resultado;
resultado =this.coorX*this.coorX+this.coorY*this.coorY+this.coorZ*this.coorZ;
resultado = Math.sqrt(resultado);
return resultado;
}


public Vector3D unitario(){
Vector3D unitario = new Vector3D();
for(int i = 0; i < 3; i++)
unitario.matriz[0][i] = this.matriz[0][i]/this.magnitud();
return unitario;
}

public double productoEscalar(Vector3D v){
double resultado = 0;
for(int i = 0; i < 3; i++)
resultado += this.matriz[0][i]*v.matriz[0][i];

return resultado;
}
public double magnitud2(){
double resultado;
resultado = this.coorY*this.coorZ-this.coorY*this.coorZ;

return resultado;

}

public Vector3D productoCruz (Vector3D v){
Vector3D productocruz;
productocruz = new Vector3D();

productocruz.matriz[0][0] = this.matriz[0][1]*v.matriz[0][2]-this.matriz[0][2]*v.matriz[0][1];
productocruz.matriz[0][1] = this.matriz[0][0]*v.matriz[0][2]-this.matriz[0][2]*v.matriz[0][0];
productocruz.matriz[0][2] = this.matriz[0][0]*v.matriz[0][1]-this.matriz[0][1]*v.matriz[0][0];
return productocruz;
}

public static void main(String args[]){
Vector3D v1 = new Vector3D(-1, 1, -1);
Vector3D v2 = new Vector3D(0,2,0);
System.out.println(v1+"\n"+v2+"\n suma "+(v1.suma(v2)));
System.out.println("Coordenada x "+v1.coorX);
System.out.println(v1.magnitud()+"\n"+v1.magnitud1());
System.out.println(v1.unitario());
System.out.println((v1.unitario()).magnitud());
System.out.println("Producto escalar "+v1.productoEscalar(v2));
System.out.println("Producto cruz "+v1.productoCruz (v2));

}

}
Resultados :

Vector 1: [-1.0 1.0 -1.0 ]

Vector 2: [0.0 2.0 0.0 ]
suma

[-1.0 3.0 -1.0 ]

Coordenada x -1.0
1.7320508075688772
1.7320508075688772

Vector Unitario [-0.5773502691896258 0.5773502691896258 -0.5773502691896258 ]
Magnitud 1.0
Producto escalar 2.0

Producto cruz
[2.0 0.0 -2.0 ]

5 comentarios:

  1. hola caro, creo que te olvidaste de poner la clase matriz para poder heredar el vector de la otra.....
    la magnitud puedes sacar de otra forma:
    public double magnitud2(){
    double resultado;
    resultado = Math.pow(this.coordenadaX, 2)+Math.pow(this.coordenadaY, 2)+Math.pow(this.coordenadaZ, 2);
    resultado = Math.sqrt(resultado);
    return resultado;
    }

    ResponderEliminar
  2. Hola Caro, no pusiste tu clase matriz, y sin ella esta clase:
    "public class Vector3D extends Matriz"
    No puede existir porque toda esta clase se hereda de la clase matriz. de allí salen las operaciones multiplicación, suma, transpuesta, etc. Por lo tanto para poder llamar a las operaciones que utilizas en esta clases necesitas de la clase matriz.

    ResponderEliminar
  3. Este ejercicio si esta bien solo pon un comentario "nombre" antes de la funcion q quires q te imprima para saber de q se trata, hay q tener cuidado con el segundo metodo de la magnitud "magnitud1" ya que si quieres ingresar los valores por la funcion leer estos no van a ser iguales a los del metodo 2 por q tienes en el vector unas constantes Vector3D(-1, 1, -1); si comparas esas con el vector q le pones leer no va a dar lo mismo xq tu ingresas otras constantes para el otro vector y por lo tanto ya no es la magnitu, este es solo un consejo mas no es q esta mal hecho solo q hay q tener encuenta esas variables.

    ResponderEliminar
  4. Hola en la magnitud1 de tu codigo:

    public double magnitud1(){
    double resultado;
    resultado =this.coorX*this.coorX+this.coorY*this.coorY+this.coorZ*this.coorZ;
    resultado = Math.sqrt(resultado);
    return resultado;
    }

    pudes utilizar tambien lo sieguiente:

    public double magnitud1(){

    double resultado;
    resultado = Math.pow(this.coorX,2)+Math.pow(this.coorY,2)+Math.pow(this.coorZ,2);
    resultado = Math.sqrt(resultado);
    return resultado;
    }

    ResponderEliminar
  5. public double magnitud1(){
    double resultado;
    resultado =this.coorX*this.coorX+this.coorY*this.coorY+this.coorZ*this.coorZ;
    resultado = Math.sqrt(resultado);
    return resultado;
    }


    veras puedes hacer esto:

    public double magnitud1(){
    double resultado;
    resultado =Math.pow(this.coorX,2)+Math.pow(this.coorY,2)+Math.pow(this.coorZ,2);
    resultado = Math.sqrt(resultado);
    return resultado;
    }
    asi ya no multiplicas el mismo por el mismo solo lo elevas al cuadrado

    ResponderEliminar