
Procedimientos numéricos
Ecuación diferencial del segundo orden
Resolver el sistema de ecuaciones diferenciales, una de primer orden y otra de segundo orden
con las condiciones iniciales v1=0, cuando x1=h-h10. Siendo h la altura de equilibrio, y h10 la altura inicial en el primer recipiente.
public class Oscilador extends RungeKutta{ double a; double b; Oscilador(double a, double b, double paso){ super(paso); this.a=a; this.b=b; } public double f(double x, double v, double t){ double temp=-980*x/(a+b*x); // x en cm y t en s return temp; } } void setNuevo(double radioIzq, double radioDcha, double radioCom){ //parámetros hEquilibrio=(radioIzq*radioIzq*hIzq+radioDcha*radioDcha*hDcha) /(radioIzq*radioIzq+radioDcha*radioDcha); double sIzq=radioIzq*radioIzq; double sDcha=radioDcha*radioDcha; double sCom=radioCom*radioCom; double a=hEquilibrio+(lonComunica*sIzq/sCom)/(1+sIzq/sDcha); double b=sIzq/sDcha-1.0; double periodo=2*Math.PI*Math.sqrt(a/980); //oscilador oscila=new Oscilador(a, 0.0, periodo/200); estado=new Estado(0.0, (hIzq-hEquilibrio), 0.0); } void mover(){ //movimiento oscila.resolver(estado); double sIzq=radioIzq*radioIzq; double sDcha=radioDcha*radioDcha; hIzq=hEquilibrio+estado.x; hDcha=((sIzq+sDcha)*hEquilibrio-sIzq*hIzq)/sDcha; } |
