Está en la página 1de 11

Graficar cualquier funcion algebraica usando vb.

net
Publicado por ingsistele en mayo 1, 2011 Graficar una funcion algebraica en muchas ocasiones se convierte en algo tedioso y complicado de hacer, en la mayoria de las ocasiones recurrimos a software especializado que se encargan de elaborar dichas graficas como es el famoso matlab o la herramienta de matematicas que incluye microsoft encarta. En este tutorial se realizara una aplicacion a traves de la cual la elaboracion de graficas se nos convertira en algo sencillo ya que vamos a crear un graficador, si , una herramienta capaz de plotearnos la funcion que le indiquemos en la entrada, para ello, haremos uso de la libreria JEP (Java parses and evaluates mathematical expressions) explicado en el post anterior y tambien haremos uso del control MSchart de microsoft para visual express 2008 el cual servira como control que mostrara las graficas Primero que todo tenemos que instalar el control mschart, se puede descargar de: Descargar mschart Bien, una vez descargado debemos instalar el control, el cual se llama MSChart.exe, lo ejecutas y el se instala normalmente; despues hay que agregar el control al vb.net, para ello debejos ejecutar el archivo llamado MSChart_VisualStudioAddOn.exe, que tambien se puede descargar de: agregar mschart a vb.net tambien lo ejecutas y lo instalas normalmente, en la siguiente imagen te muestro los archivos a instalar, los cuales subire al final del post,

ahora creamos un nuevo proyecto de vb.net y en la barra de herramientas buscamos el control mschart tal y como vemos en la siguiente imagen:

en el cuadro de herramientas se puede ver el control, lo agregamos al formulario y tambien agregamos un boton un textbox y varios label, como se puede ver en la imagen, el control chart muestra una imagen de un histograma o grafica de barras, para cambiar el tipo de grafica puesto que el que usaremos sera un grafico de tipo lineal, seleccionamos el control y nos dirigimos al cuadro de propiedades, bucamos la opcion que diga series, hacemos click en ella y luego nos abrira una nueva ventana, alli en la lista de la parte derecha buscamos la opcion que diga chart type y seleccionamos Spline, en la siguiente imagen se pueden ver los pasos a seguir:

Listo, luego se hace click en el boton aceptar y nuestro control quedara con una grafica del siguiente aspecto:

despues de todo esto, si empezamos a programar, inicialmente importamos las referencias a JEP, no olvidemos que antes es necesario agregar la referencia a la dll (explicado en el post anterior): ver fuente imprimir?
1 Imports SingularSys.Jep 2 Imports SingularSys.Jep.Types

luego importamos la biblioteca que hace referencia a mschar para poder hacer uso de sus funciones y propiedades: ver fuente imprimir?
1 Imports System.Windows.Forms.DataVisualization.Charting

ahora declaramos las siguientes variables como globales: ver fuente imprimir?
1 Dim cad As String 2 Private jVar As New JepInstance() 3 Dim j As New JepInstance()

luego, en el evento load del formulario, debemos escribir lo siguiente:

ver fuente imprimir?


Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 2 Chart1.Series(0).ChartType = SeriesChartType.Spline 1 3 Chart1.Series(0).Points.AddY(1) 4 End Sub

despues de haber inicializado nuestra grafica lo que hacemos ahora es programar el tipo de grafica a generar cuando se le de click al boton graficar, para ello, escribimos en el evento click de dicho boton las siguientes instrucciones: ver fuente imprimir?
01 Chart1.Series(0).Points.Clear() 02 03 04 05 Dim i As Double 06 07 For i = -10 To 10 Step 0.1 08 09 Try 10 11 jVar.VarTab.AddVariable("x", New JepDouble(i)) 12 13 jVar.ReinitializeComponents() 14 15 jVar.Parse(Me.TextBox_funcion.Text) 16 17 Chart1.Series(0).Points.AddXY(i, CDbl(jVar.Evaluate().ToString)) 18 19 Catch ex As Exception 20 21 End Try 22 23 Next Me.Label_ngrafica.Text = Me.TextBox_funcion.Text 'muestro en el label ngrafica la funcion de entrada

el proceso que se hace dentro del ciclo for es hacer un recorrido desde -10 hasta 10 en pasos o incrementos de 0.1, atraves del cual se le ira asignando cada valor de la variable usada en el ciclo a la variable x, mas adelante, se va evaluando dicha funcion en el valor actual

(como se vio en el post anterior), y se va graficando el punto; de tal manera que al final obtendremos una sucesion de puntos que formaran nuestra grafica en un rango desde -10 a 10. es momento ahora de realizar una prueba a nuestro graficador intentando hacer varias graficas, probemos con una sencilla primero: y=x^2

ahora probemos con la funcion coseno de x: cos(x)

Muy bien, hasta aqui hemos logrado hacer un simple y potente graficador en vb.net usando herramientas faciles de manejar, espero y este tutorial les sea facil de entender y resulte util en sus trabajos o en la cotidianidad hasta la proxima Descargar Programa
About these ads

Me gusta:
Me gusta Se el primero en decir que te gusta. Esta entrada fue publicada el mayo 1, 2011 a 1:54 am y est archivada en Programacion en .Net. Puedes seguir los comentarios a esta entrada a travs de RSS 2.0 feed. Puedes deja un comentario, o trackback desde tu propio sitio.

11 comentarios hacia Graficar cualquier funcion algebraica usando vb.net


1.

Jos escribi
septiembre 14, 2011 a 2:48 pm

caray, eres un tigre y que tal forma de introducirnos en este tema, gracias te debo la vida Responder

2.

Rafael Becerra escribi


enero 21, 2012 a 5:27 pm

Gracias por este tutorial, me saco de un problema en la universidad. Pero tengo un problema, al intentar generar el proyecto me sale este error: El tipo JepInstance no est definido Espero que me puedas ayudar.. Gracias de antemano Responder

3.

Rafael Becerra escribi


enero 21, 2012 a 11:44 pm

Gracias por esta informacin, me sac de un problema en la universidad para hacer un programa de integracin numrica a travs del mtodo de Romberg Pero tengo un problema, cuando quiero generar el proyecto me sale este error: El tipo JepInstance no est definido, el .exe que se encuentra en la carpeta bin del proyecto bin funciona perfecto en mi computadora, pero al intentar ejecutarlo en otra, me sale un error, y copi el jep.dll y es el mismo problema espero me puedas ayudar Gracias de Antemano. Responder

ingsistele escribi
enero 22, 2012 a 3:56 pm

Hola Rafael, Respecto a tu pregunta El tipo JepInstance no est definido , lo que te esta ocurriendo es que no esta agregada la referencia al proyecto de vb.net, es por eso que no se te genera la aplicacion, lo que debes de hacer para que te funcione correctamente es: 1) ir la barra de menu de vb.net y seleccionamos la opcion proyecto (es la cuarta opcion del menu superior de izquierda a derecha) y en el menu desplegable que aparece seleccionamos la opcion agregar referencia 2) en el cuadro de dialogo que emerge haces click en la pestaa examinar y accedes a la carpeta debug (esta dentro de bin) del proyecto, donde debe de estar la dll de Jep, luego la seleccionas y haces clic en el boton aceptar, ahora si te debe de haber quedado agregada la libreia de jep; puedes comprobarlo en el explorador de soluciones de vb.net (se encuentra en el menu de la parte derecha de la pantalla) alli seleleccionas el boton que dice mostrar todos los archivos y realmente te fijas de que aparezca jep entre las libreiras usadas. Ten encuenta que debes tener instalado primero el mschart y el complemento para aadirlo a vb.net cuyos link se encuentran al inicio de este post.

si quieres mas informacion sobre como agregar la referencia visita el post Evaluar expresiones matematicas con JEP y vb.net eso es todo amigo!, espero y te sirva de ayuda. Responder

Rafael Becerra escribi


enero 23, 2012 a 3:05 pm

Correcto, cuando inicio la depuracin no hay problema, la aplicacin corre El problemas es cuando se genera la aplicacin, o se publica.

ingsistele escribi
febrero 3, 2012 a 11:33 pm

Si vas a publicar la aplicacion te recomiendo InnoSetup es un programa muy simple para publicar programas mediante un instalador, lo puedes bajar Haciendo clic Aqui 4.

Car Dan Bec escribi


marzo 16, 2012 a 2:04 am

una pregunta como le hago par poder poner los intervalos,es decir los valores para x saludos!! Responder

ingsistele escribi
marzo 17, 2012 a 6:58 pm

Hola Car Dan Bec, pueno a tu pregunta te puedo responder lo siguiente: 1) si quieres definir un limite maximo y minimo en los ejes x o y debes colocar las siguientes instrucciones dentro del load del formulario ver fuente

imprimir?
1 Chart1.ChartAreas(0).AxisX.Minimum = 0 'Minimo valor de x Chart1.ChartAreas(0).AxisX.Maximum = 100 'Numero de puntos 2 en x de la grafica, (maximo valor 100) 3 Chart1.ChartAreas(0).AxisY.Minimum = -2 'Minimo valor de y Chart1.ChartAreas(0).AxisY.Maximum = 5 'Numero de puntos en 4 y de la grafica, (maximo valor 5) 5 Chart1.Series(0).Points.AddY(1)

2) si lo que deseas es establecer un rango predefinido para tus coordenadas en x debes de ir variando los valores del ciclo for tal y como puedes ver en este post, la grafica va desde el punto -10 hasta el 10 con incrementos de 0.1, si quieres que los valores en x esten distribuidos de otra manera prueba armandote otro ciclo como: ver fuente

imprimir?
1 For i = 0 To 20 Step 2 2 3 'aqui va el codigo para generar la grafica 4 5 Next

Espero y te resulte util esta explicacion y puedas resolver tu problema! Responder 5.

Car Dan Bec escribi


marzo 18, 2012 a 7:58 am

muchas gracias me sirvi bastante da gusto que haiga personas como tu que comparten sus conocimientos muy bueno el tutorial Responder

6.

Jose Luis escribi


julio 26, 2012 a 11:20 pm

Hola Amigo, he estado echando un vistazo al tutorial y me parece magnifico, hace tiempo que vengo buscando algo parecido pero yo quiero que la grafica coja los datos que le mande via serie, por ejemplo si yo le mando una A al dispositivo mediante el puerto serie ste me responde mandando datos y son los que quisiera graficar en la grafica, me podrias dar alguna idea? mandar los datos por el puerto serie no es problema y que me responda tampoco es el Chartcontrol el que no puedo enlazar con esos datos que me envia el dispositivo via puerto serie no tengo nidea de como hacerlo.Desde ya muchas gracias y felicidades por tu web. Responder

ingsistele escribi
julio 30, 2012 a 5:14 pm

Hola Jose Luis, lo de graficar algun valor que envias desde un microcontrolador no es complicado, solo debes tener en cuenta que los datos que envies sean de tipo numerico, es decir entero, double o flotante; ademas el tipo de grafica a generar debe ser: SeriesChartType.FastLine, entonces colocas en el load del formulario: ver fuente

imprimir?
1 Chart1.Series(0).ChartType = SeriesChartType.FastLine

y para que grafiques los datos que vas recibiendo desde el puerto serie, debes crear un procedimiento que revise constantemente la llegada de cada

trama de datos para extraer el valor numerico a graficar y propiamente lo graficas con solo agregar una linea de codigo asi: ver fuente

imprimir?
1 Chart1.Series(0).Points.AddY(valoragraficar)

. Puedes descargar un ejemplo para lo que deseas realizar desde el siguiente link: Ejemplo de datos Graficados desde el Puerto Serie Responder

Deja un comentario
guest

Aade tu comentario aqu...