Autor Tema: Resolver ecuacion Lineal en java con interface ecuación  (Leído 27638 veces)

Eva

  • Sin experiencia
  • *
  • Mensajes: 23
    • Ver Perfil
Resolver ecuacion Lineal en java con interface ecuación
« en: 03 de Noviembre 2012, 17:37 »
Les tengo un problema con ecuaciones
La idea es crear varias clases que derivan de una interfaz Ecuacion, en primer lugar una clase denominada EcuacionLineal que se debe comportar como tal de manera que se resuelva pasandole dos valores.
Recien la empece y lo que tengo es lo siguiente:

Código: [Seleccionar]
public class EcuacionLineal implements Ecuacion {
//Representa una ecuación lineal del tipo f(x) = m × x + b
                       public EcuacionLineal(Double m, Double b) {

                             throw new RuntimeException("No implementado");
}
public Double resolver(Double x) {

throw new RuntimeException("No implementado");
//aca es donde deberia devolver el resultado de evaluar f(x)

}

                       }

Mi problema es que no se me ocurre como trabajar con esos valores de manera que resuelva la ecuacion..Lo habia empezado pero cada vez me desviaba mas..si alguno puede ayudarme para hacerlo en pocas lineas se los agradezco...
« Última modificación: 12 de Septiembre 2014, 17:21 por Alex Rodríguez »

nosferacento

  • Moderador Global
  • Avanzado
  • *******
  • Mensajes: 443
    • Ver Perfil
Re:Resolver ecuacion Lineal en java
« Respuesta #1 en: 03 de Noviembre 2012, 23:31 »
Hola Eva, una ecuación lineal del tipo f(x) = m*x + b es lo que entiendo yo.

¿Qué ocurre? Que la interfaz será quien defina los métodos a implementar, ya que según indicas la clase debe implementar la interfaz y la interfaz te especifica el contrato que debe de cumplir la clase. Por eso creo que deberías poner aquí el contenido de esa interface para que podamos responder algo.

Suponiendo que debemos seguir el código que has puesto tú, lo plantearía así:

public class EcuacionLineal implements Ecuacion {
//Representa una ecuacion lineal del tipo f(x) = m * x + b
private int m; //Representa el valor de la pendiente en la ecuacion
private int b; //Representa el valor de b corte con eje de ordenadas de la recta

                       public EcuacionLineal(Double m, Double b) {

                                   this.m = m; // Establecemos el valor del atributo
                                   this.b = b; //Establecemos el valor del atributo
}

public Double resolver(Double x) {
int resultado = 0;
resultado = m*x +b;
return resultado;
   }

Si era esto lo que había que hacer me resulta muy simple, el único problema que le podría ver es que no se tenga claro el concepto de ecuación. La ecuación viene definida por dos valores, m y b que son valores fijos. Por ejemplo una ecuación puede ser 3x + 2 y otra ser 8x - 1. La ecuación se resuelve introduciendo un valor concreto de x. Por ejemplo la primera ecuación para x = 1 se resuelve como 3+2=5, para x = 2 se resuelve como 6+2 = 8 y así sucesivamente. Se puede invocar el método para resolver la ecuación pasándole cualquier valor.

Si no era esto, pues a ver si aportas algo más de información.

Eva

  • Sin experiencia
  • *
  • Mensajes: 23
    • Ver Perfil
Re:Resolver ecuacion Lineal en java
« Respuesta #2 en: 04 de Noviembre 2012, 16:21 »
Si se que no fui muy especifica y pido disculpas..La interface ecuacion es por el momento una clase abstracta a la cual me permite agrupar las diferentes clases de ecuaciones que debo desarrollar(Lineal, Cuadratica y Polinomica). En esta primera parte me dijeron que debia resolver el comportamiento de mi clase permitiendo que esta reciba dos valores (m y b) atraves de tests y que los metodos que utilice me permitan obtener el valor de x, por lo que si no resuelvo como se comporta mi clase no puedo probar los tests..
de todos modos gracias por responder

nosferacento

  • Moderador Global
  • Avanzado
  • *******
  • Mensajes: 443
    • Ver Perfil
Re:Resolver ecuacion Lineal en java
« Respuesta #3 en: 04 de Noviembre 2012, 19:50 »
¿Pero el código que te he puesto no resuelve el comportamiento de tu clase?

Eva

  • Sin experiencia
  • *
  • Mensajes: 23
    • Ver Perfil
Re:Resolver ecuacion Lineal en java
« Respuesta #4 en: 07 de Noviembre 2012, 00:11 »
Implemente el codigo que me pasaste y ahora estoy probando con Test pero me dìo rojo (estoy usando eclipse) tal vez porque pase mal los valores.
Hice esto:
@Test
   public void testQueLLamaAlMetodo(){
      EcuacionLineal ecuLineal = new EcuacionLineal(1.0,1.0);
      ecuLineal.resolver(2.0);
      Assert.assertEquals(4,ecuLineal.resolver(4.0));
   }

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Re:Resolver ecuacion Lineal en java
« Respuesta #5 en: 07 de Noviembre 2012, 14:39 »
Hola, yo creo que hay un error en los tipos en el código propuesto y que el problema puede venir por ahí.


public class EcuacionLineal implements Ecuacion {
//Representa una ecuacion lineal del tipo f(x) = m * x + b
private double m; //Representa el valor de la pendiente en la ecuacion
private double b; //Representa el valor de b corte con eje de ordenadas de la recta

                       public EcuacionLineal(double m, double b) {

                                   this.m = m; // Establecemos el valor del atributo
                                   this.b = b; //Establecemos el valor del atributo
}

public double resolver(double x) {
double resultado = 0;
resultado = m*x +b;
return resultado;
   }

Te señalo en color los cambios. No podemos mezclar int con double y Double. Hay que diferenciar entre tipos primitivos como int o double, frente a tipos objeto como Integer o Double.

Por otro lado si construyéramos la ecuación con m=1, b=1, la ecuación sería f(x) = 1*x+1, y entonces:

ecuLineal.resolver(4.0) sería igual a 1*4 + 1 = 5

Luego la línea de la aserción quedaría:

Assert.assertEquals(5,ecuLineal.resolver(4.0));

Es decir, el valor esperado de la ecuación para x=4 sería f(x) = 5

La línea ecuLineal.resolver(2.0); no sé muy bien para qué la metes.

Eva

  • Sin experiencia
  • *
  • Mensajes: 23
    • Ver Perfil
Re:Resolver ecuacion Lineal en java
« Respuesta #6 en: 07 de Noviembre 2012, 15:52 »
Ah si me di cuenta que pasaba mal los valores ya lo resolvì, gracias... ¿Como implemetaria en una ecuacion cuadratica y en una polinomica?  Hice lo mismo que en la lineal, tengo la estructura pero no estoy segura de como se va a comportar el metodo.
clase EcuacionCuadratica{

public class EcuacionCuadratica implements Ecuacion {

   private double a;
    private double b;
   private double c;
   public EcuacionCuadratica(Double a, Double b, Double c) {

      throw new RuntimeException("No implementado");

   }

   /**
    * Devuelve el resultado de evaluar f(x)
    *
    * @param x la variable
    *
    */
   public Double resolver(Double x) {
      double valordeEquis = 0;
      valordeEquis = (a*x).(a*x)+(b.x)+c
         //throw new RuntimeException("No implementado");

   }

}

Si este codigo esta bien encaminado me pongo a hacer la ecuacion polonomica.. :D!

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Re:Resolver ecuacion Lineal en java
« Respuesta #7 en: 07 de Noviembre 2012, 23:12 »
Yo insistiría en que no es lo mismo double que Double, y parece que aparece indistintamente. En realidad deberías ponerlo tal como defina la interface.

La función cuadrática es f(x) = a*x*x + b*x + c , yo escribiría:

public double resolver(double x) {
      double valordeFuncion = 0;
      valordeFuncion = (a*x*x)+(b*x)+c
      return valordeFuncion;
         //throw new RuntimeException("No implementado");

   }

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".