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
2

Imports SingularSys.Jep
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
2
3

Dim cad As String


Private jVar As New JepInstance()
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
3
Chart1.Series(0).Points.AddY(1)
4
End Sub
1

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
02
03

Chart1.Series(0).Points.Clear()
Me.Label_ngrafica.Text = Me.TextBox_funcion.Text 'muestro en el label
ngrafica la funcion de entrada

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

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
o

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
o

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
Chart1.ChartAreas(0).AxisX.Maximum
2
grafica, (maximo valor 100)
3 Chart1.ChartAreas(0).AxisY.Minimum
Chart1.ChartAreas(0).AxisY.Maximum
4
grafica, (maximo valor 5)
5
Chart1.Series(0).Points.AddY(1)

= 0 'Minimo valor de x
= 100 'Numero de puntos en x de la
= -2 'Minimo valor de y
= 5 'Numero de puntos en y de la

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
2
3
4
5

For i = 0 To 20 Step 2
'aqui va el codigo para generar la grafica
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
o

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...

También podría gustarte