Graficar función f(x)

0 votos
preguntado por jsaviola (120 puntos) Ene 28, 2016 en Java
Buenas,

Alguien sabe como graficar una función f(x) en 2 dimensiones.

Desde ya se agradece toda ayuda.

jsavoila


11 Respuestas

0 votos
respondido por Torres (8,580 puntos) Ene 28, 2016
Buenas!

Yo para gráficas he usado: http://www.jfree.org/jfreechart/

Hace tiempo que no se actualiza la versión pero si no quieres nada hacer algo muy complejo yo creo que te servirá.

Un saludo.


0 votos
respondido por Laux (180 puntos) Ene 28, 2016
gracias por responder, bueno lo que quiero hacer es que desde ese valor de X obtenido del usuario con el for, dado el limite que yo le coloque me vaya generando la grafica, aunque por ahora solo puedo hacer que me grafique sen(x) o cos(x) y las demas funciones trigonometricas, pero tengo otra duda ahora como podria hacer para que grafique por ejemplo: 1+ sen(x)+ cos(x) , alguna idea?


0 votos
respondido por fiurer87 (3,260 puntos) Ene 28, 2016
en el codigo que publique mas arriba solo debes cambiar la funcion f(x) por la que desees.

por ejemplo para 1+ sen(x)+ cos(x) la f(x) debe ser:


//x es el angulo en Radianes.
private double f(double x){
     return 1 + Math.sin(x) + Math.cos(x);
}

0 votos
respondido por Torres (8,580 puntos) Ene 28, 2016
No se si te entiendo bien, pero con un solo valor de x, no tienes una función, tienes un punto...

y = f(x)

¿Que pretendes hacer con la x que le pasas, obtenida del usuario?

Un saludo.


0 votos
respondido por fiurer87 (3,260 puntos) Ene 28, 2016
un constructor debe ser antepuesto por la palabra reservada public


public class Graficador{
   private double x;

   //constructor
   public Graficador(double valor){
         x = valor;
   }
}

0 votos
respondido por Laux (180 puntos) Ene 28, 2016
Hola quetal a todos estoy iniciandome en java, eh investigado mucho sobre el jfreechart es una buena herramienta, yo lo que quisiera hacer es que no solo me grafique el seno como en el codigo que publico FIURER87, pues lo estoy adaptando pero quiero recibir el valor de X por el usuario y pues creando el constructor me sale error alguien podria ayudarme???

<pre lang='java' lineno='1'>private double x;// miembro de la clase graficador

//mi constructor
Graficador(double valor) {
       x=valor;
    }
0 votos
respondido por fiurer87 (3,260 puntos) Ene 28, 2016
Desde mi punto de vista el JFreeChart es la mejor solucion por la calidad que tiene.

A continuacion un ejemplo de como hacer un graficador con JFreeChart.

En este caso graficare la sigueinte funcion f(x)=4sen(x).

=====================================================================

<pre lang='java' lineno='1'>/*
 * Autor: Roberto Perez
 * Potosi - Bolivia.
 */

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.xy.XYDataset;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RefineryUtilities;
import java.awt.Dimension;

public class Graficador extends ApplicationFrame{
    public Graficador(){
        super("Graficador");
        XYDataset paresDeDatos = generarDatos();
        JFreeChart diagrama = crearDiagrama(paresDeDatos);
        ChartPanel chartPanel = new ChartPanel(diagrama);
        chartPanel.setPreferredSize(new Dimension(500,400));
        setContentPane(chartPanel);
    }

    private XYDataset generarDatos(){
        //le pasamos una funcion generadora f(x)
        XYSeries datos = new XYSeries("Linea Funcion");
        for(double x=0.0; x<=50.0; x+=0.2) datos.add(x,f(x));

        XYSeriesCollection conjuntoDatos = new XYSeriesCollection();
        conjuntoDatos.addSeries(datos);

        return conjuntoDatos;
    }

    private JFreeChart crearDiagrama(XYDataset conjuntoDatos){
        JFreeChart diag = ChartFactory.createXYLineChart(
                                "Graficador", //Titulo Grafica
                                "X", // Leyenda eje X
                                "Y", // Leyenda eje Y
                                conjuntoDatos, // Los datos
                                PlotOrientation.VERTICAL, //orientacion
                                false, // ver titulo de linea
                                false, //tooltips
                                false  //URL
                            );
        return diag;
    }

    //aqui definimos la funcion que desees, en esta caso la f(x) = 4sen(x)
    private double f(double x){
        return 4*Math.sin(x);
    }

    public static void main(String[] arg){
        Graficador miGraficador = new Graficador();
        miGraficador.pack();
        RefineryUtilities.centerFrameOnScreen(miGraficador);
        miGraficador.setVisible(true);
    }
}
=============================

Ten en cuenta que debes tener instaldo las paquetes de JFreeChart de forma correcta


0 votos
respondido por fiurer87 (3,260 puntos) Ene 28, 2016
Para que veas como queda subi la imagen de la ejecucion en la siguiente enlace:

http://www.subirimagenes.com/imagen-grafseno-4632743.html


0 votos
respondido por orla725 (180 puntos) Ene 28, 2016
Fiurer Como puedo contactar contigo para hacerte unas preguntar .. porfavor respondeme :D
0 votos
respondido por orla725 (180 puntos) Ene 28, 2016
Fiurer me podrias ayudar a completar este programa que haz compartido.

Necesito que el usuario introduzca el valor de x  o con un rango de valores y asi determinar la funcion ... otra cosa es que necesito utilizar funciones que no sean solo en funcion de x sino que tengan constantes y demas .. por favor si me podrias ayudar te lo agradeceria mucho

Preguntas relacionadas

0 votos
5 respuestas
preguntado por genis (140 puntos) Ene 28, 2016 en Java
0 votos
1 respuesta
0 votos
3 respuestas
0 votos
1 respuesta
0 votos
0 respuestas
preguntado por rick_korn (220 puntos) Ene 28, 2016 en Java
Bienvenido a Dudas de Programación, donde puedes hacer preguntas y recibir respuestas sobre los problemas más frecuentes de los lenguajes de programación, frameworks de desarrollo y bases de datos que utilices. Foro de Línea de Código
...