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 ]
sábado, 14 de noviembre de 2009
Suscribirse a:
Enviar comentarios (Atom)
hola caro, creo que te olvidaste de poner la clase matriz para poder heredar el vector de la otra.....
ResponderEliminarla 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;
}
Hola Caro, no pusiste tu clase matriz, y sin ella esta clase:
ResponderEliminar"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.
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.
ResponderEliminarHola en la magnitud1 de tu codigo:
ResponderEliminarpublic 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;
}
public double magnitud1(){
ResponderEliminardouble 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