public class Matriz {
public int numeroFilas;
public int numeroColumnas;
public double [][]matriz;
public Matriz(){
}
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;
}
public Matriz suma(Matriz b){
Matriz resultado;
//primero revisamos que las filas y las columnas sean iguales
//this referencia a un objeto que au no esta creado pero que alguien algun momento lo va a crear
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
//retorna una matriz resultado resta
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;
}
}
public class Vector3D extends Matriz{
double coordenadaX;
double coordenadaY;
double coordenadaZ;
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;
coordenadaX = x;
coordenadaY = y;
coordenadaZ = z;
}
public double magnitud(){
double resultado = 0;
for(int i=0; i < 3; i++){
resultado + = this.matriz[0][i]*this.matriz[0][i];
}
resultado = Math.sqrt(resultado);
return resultado;
}
//segunda forma de hacer la magnitud
public double magnitud1(){
double resultado;
resultado = this.coordenadaX*this.coordenadaX+this.coordenadaY*this.coordenadaY+this.coordenadaZ*this.coordenadaZ;
resultado = Math.sqrt(resultado);
return resultado;
}
//tercera forma de hacer la magnitud
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;
}
public Vector3D unitario(){
Vector3D unitario = new Vector3D();
for(int i=0; i < 3; i++)
unitario.matriz[0][i] = this.matriz[0][i]/this.magnitud2();
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 Vector3D productoCruz(Vector3D v){
Vector3D resultado;
resultado = new Vector3D();
resultado.matriz[0][0] = this.matriz[0][1]*v.matriz[0][2]-this.matriz[0][2]*v.matriz[0][1];
resultado.matriz[0][1] = this.matriz[0][2]*v.matriz[0][0]-this.matriz[0][0]*v.matriz[0][2];
resultado.matriz[0][2] = this.matriz[0][0]*v.matriz[0][1]-this.matriz[0][1]*v.matriz[0][0];
return resultado;
}
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);
System.out.println("La coordenada en x es: "+v1.coordenadaX);
System.out.println("\nLa suma de 2 vectores es: "+(v1.suma(v2)));
System.out.println("\nLLa magnitud del vector es: "+v1.magnitud());
System.out.println("\nLLa magnitud del vector es: "+v1.magnitud1());
System.out.println("\nLLa magnitud del vector es: "+v1.magnitud2());
System.out.println("\nEl vector unitario es: "+v1.unitario());
System.out.println("\nEL PRODUCTO ESCALAR ENTRE LOS DOS VECTORES ES: "+v1.productoEscalar(v2));
System.out.println("\nEL PRODUCTO CRUZ ENTRE LOS DOS VECTORES ES: "+v1.productoCruz(v2));
}
}
//RESULTADO
[
-1.0 1.0 -1.0
]
[
0.0 2.0 0.0
]
LA COORDENADA EN X ES: -1.0
LA SUMA DE LOS VECTORES ES:
[
-1.0 3.0 -1.0
]
LA MAGNITUD DEL VECTOR ES: 1.7320508075688772
LA MAGNITUD DEL VECTOR ES: 1.7320508075688772
LA MAGNITUD DEL VECTOR ES: 1.7320508075688772
EL VECTOR UNITARIO ES:
[
-0.5773502691896258 0.5773502691896258 -0.5773502691896258
]
EL PRODUCTO ESCALAR ENTRE LOS DOS VECTORES ES: 2.0
EL PRODUCTO CRUZ ENTRE LOS DOS VECTORES ES:
[
2.0 0.0 -2.0
]
domingo, 15 de noviembre de 2009
Suscribirse a:
Enviar comentarios (Atom)
6 comentarios:
hola, los fors estan incompletos tienes algo asi:
for(int i=0; i
for(int j=0; j
en toda la clase matriz deberia ser algo asi:
for(int i=0; i < this.numeroFilas; i++){
for(int j=0; j < b.numeroColumnas; j++){
for(int k=0; k < this.numeroFilas; k++)
hola todo esta bien excepto por una parte.
public double magnitud(){
double resultado = 0;
for(int i=0; i < 3; i++){
resultado + = this.matriz[0][i]*this.matriz[0][i];
}
resultado = Math.sqrt(resultado);
return resultado;
}
no puedes poner resultado + = this.matriz[0][i]*this.matriz[0][i]; sino debes oponer resultado += this.matriz[0][i]*this.matriz[0][i]; fijate q no debe ir separa el + del = , de ahi todo lo demas lo veo bien.
leo lo del += es lo mismo los resultados no se alteran sino intenta ponerlo de las dos maneras sale lo mismo
Esta bien loquito pero no te olvides de revosar los for de "Matriz" que salen incompletos en la mayoria de programas.
Hola en esta parte de tu codigo:
public double magnitud1(){
double resultado;
resultado = this.coordenadaX*this.coordenadaX+this.coordenadaY*this.coordenadaY+this.coordenadaZ*this.coordenadaZ;
resultado = Math.sqrt(resultado);
return resultado;
}
podrias utilizar el Math.pow para no multiplicar las coordenadas 2 veces:
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;
}
hola mijin haber como es eso de que un metodo de multiplicaion retorna un resultado de resta
//metodo de multiplicacion de matrices
//retorna una matriz resultado resta
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]);
}
por que no ocupas las operaciones que declaras en la clase matriz y solo las haces haber haber a ya ves esta mal?
Publicar un comentario