domingo, 29 de noviembre de 2009

Calculo del Movimiento Rectilíneo Uniformemente Variado (MRUV)

Se va a usar el mismo programa que para Vectores 3D
Main. ClaseMatriz

public class Matriz {
public int numerofilas;
public int numerocolumnas;
public double [][]matriz;

public Matriz(){
}

public Matriz(int nf, int nc){
numerofilas = nf;
numerofolumnas = 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;

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 las dimensiones de las matrices");
resultado=null;
return resultado;
}

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;
}

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;
}
}

Main.ClaseVector
public class Vector3D extends Matriz{
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;
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;
}

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

//Otra forma de calcular la magnitud
public double magnitud2(){
double resultado;
resultado = Math.pow(this.coorX, 2)+Math.pow(this.coorY, 2)+Math.pow(this.coorZ, 2);
resultado = Math.sqrt(resultado);
return resultado;
}

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

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(3,2,-1);
Vector3D v2 = new Vector3D(1,2,2);
System.out.println(v1+"\n"+v2);
System.out.println("La coordenada en x es: "+v1.coordenadaX);
System.out.println("\nLa suma de los vectores es: "+(v1.suma(v2)));
System.out.println("\nLa magnitud del vector es: "+v1.magnitud());
System.out.println("\nLa magnitud del vector es: "+v1.magnitud1());
System.out.println("\nLa magnitud del vector es: "+v1.magnitud2());
System.out.println("\nEl vector unitario es: "+v1.unitario());
System.out.println("\nEl producto escalar entre los vectores es: "+v1.productoEscalar(v2));
System.out.println("\nEl producto cruz entre los vectores es: "+v1.productoCruz(v2));
}
}



Main.ClaseMRUV
public class MRUV extends Vector3D{
Matriz posicion;
Matriz velocidad;
Matriz aceleracion;
Matriz desplazamiento;
Matriz velocidad2;

public MRUV(){
}

public MRUV (Vector3D pos, Vector3D veli, Vector3D ace, Vector3D des){
posicion = pos;
velocidad = veli;
aceleracion = ace;
desplazamiento = des;
}

public void calcularPosicion(Vector3D ri, Vector3D veli, Vector3D ace, double t){
posicion = ri.suma((vel0.productoEscalarVector(t)).suma((ace.productoEscalarVector(Math.pow(t,2))).productoEscalarVector(1/2)));
}

public void calcularVelocidad(Vector3D veli, double t, Vector3D ace){
velocidad = veli.suma(ace.productoEscalarVector(t));
}

public void calcularDesplazamiento(Vector3D veli, double t, Vector3D ace){
desplazamiento = (veli.productoEscalarVector(t)).suma((ace.productoEscalarVector(Math.pow(t, 2))).productoEscalarVector(1/2));
}

/*public void calcularVelocidad2(Vector3D veli, Vector3D ace, Vector3D des){
velocidad2 = (Math.pow(vel0, 2)).suma((ace.productoCruz(desplazamiento)).productoEscalarVectorial(2));
}*/

public static void main(String args[]){
MRUV m = new MRUV();
Vector3D ri = new Vector3D (2,1,-1);
Vector3D veli = new Vector3D (0,1,6);
Vector3D ace = new Vector3D (3,-10,4);
double t = 3;
System.out.println("La posicion cuando: t = 3s; ri = 2i+j-k; vi = j+6k; a = 3i-10j+4k es: \n" +m.calcularPosicion(ri, veli, ace, t));
System.out.println("La velocidad cuando: t = 3s; vi = j+6k; a = 3i-10j+4k; es: \n" +m.calcularVelocidad(veli, t, ace));
System.out.println("El desplazamiento cuando: t = 3s; vi = j+6k; a = 3i-10j+4k es: \n" +m.calcularDesplazamiento(veli, t, ace));
}

}

No hay comentarios:

Publicar un comentario