TODOPIC
Lenguajes de programación para PC => Visual Basic => Mensaje iniciado por: RubOli en 31 de Marzo de 2016, 14:53:01
-
Saludos a todos, tengo un problemilla con la elaboración de ese programa, y es que mi profe no es de mucha ayuda, he buscado en otros lados informacion y lo máximo que llego es derivar funciones de una incognita y solo del tipo cx^n, necesito ideas porfa :c
-
Hola RubOli, necesitamos mas información, por ejemplo:
-¿como va a ser la entrada de datos?
-¿se sabe cual es la variable a derivar o el programa tiene que detectarlo de manera "intenligente" de la ecuación?, es decir introduces los calculos como en una calculadora donde eliges la variable?
-importante, ¿tu sabes derivar bien? es lo primero para elaborar un programa para derivar ecuaciones.
y por ultimo, un programa para derivadas, puede ser muy simple, o muy complejo, que clase de derivadas tiene que hacer?
con funciones anidadas, con funciones simples, derivadas parciales....
si es con funciones simples basta con hacer una base de datos con las tablas de las funciones, identificar la función y actuar, tipo sen(x), pero si son funciones mas complejas tipo sen((3X^2)*(6^X)) eso ya se complica bastante.
un saludo.
-
Gracias por contestar juaperser1, el programa en si va a calcular el factor integrante de las ecuaciones diferenciales no exactas,
pero para esto se debe de derivar los miembros de la ecuación, que presenta esta forma:
M(x,y)dx+ N(x,y)dy=0
M sera una caja de texto independiente de N, creo que asi se puede simplificar el reconocimiento, lo que se me complica a mi
es que M o N no sera un término sino pueden ser una suma o resta de términos; asi que los términos máximos que manejare son 3.
La formula para calcular el factor integrante es:
(1/N)(dM/dy-dN/dx)=f(x) o
(1/M)(dM/dy-dN/dx)=g(y)
A M que puede presentar términos con Y y X, se debe derivar en Y, y a N que tambien puede presentar términos con la variable Y y X,
se deriva en X.
Y ese es mi problema, las derivadas que manejare serán de la forma cx^n y trigonometricas simples, como sen(x), cos(x), porque
ya meterse con exponenciales y log, es otro rollo, agradecería todas las ideas en la resolución de las derivadas
-
Hola RubOli, tengo alguna duda pones esto:
M(x,y)dx+ N(x,y)dy=0
pero despues pones esto:
A M que puede presentar términos con Y y X, se debe derivar en Y, y a N que tambien puede presentar términos con la variable Y y X, se deriva en X.
una de las dos cosas esta al revés, ¿no?
aqui M(x,y)dx es una función que estas derivando con respecto a x,
si va a ser la suma de dM(x,y)/dx con respecto a dN(x,y)/dy, podemos centrarnos en, por poner un ejemplo la funcione M derivada en función de x, y la función N sera idéntica pero cambiando las variables.
No es un programa "fácil" de realizar, no diría difícil pero si un algoritmo un poco largo, y yo no programo en basic, pero lo que yo haría seria lo primero trabajar con cadenas, cuando tengas la función en una cadena, identificar caracter por caracter para identificar y encontrar el termino X y de hay saber, mediante if-else, en que caso te encuentras si sen(x), cos(x) o cx^n.
una vez sepas el caso, sacar el resultado, eso ya es lo fácil.
el programa seria mas fácil, si las expresiones M o N se escribieran como en una calculadora, es decir pulsando sen(), cos() así ya sabrías de antemano la función.
la dificulta de este programa radica en la dificultad de conocer la expresión M y N a partir de una simple entrada de teclado, lo de la derivación en si es una chorrada.
¿es necesario que el programa deba leer la ecuación N y M en formato texto?
un saludo.
-
Gracias por seguir contestando juaperser1, sobre la derivación la ecuación diferencial, debe (para que sea exacta) presentar la forma:
M(x,y)dx+ N(x,y)dy=0
y se debe derivar respecto a la otra variable, por ello a M se deriva en y,y a N se deriva en x, por lo que se simplifica mucho los términos.
Por ejemplo si tenemos la siguiente ecuación:
(https://tecdigital.tec.ac.cr/revistamatematica/cursos-linea/EcuacionesDiferenciales/EDO-Geo/edo-cap2-geo/img175.gif)
se debe derivar de la siguiente forma:
(https://tecdigital.tec.ac.cr/revistamatematica/cursos-linea/EcuacionesDiferenciales/EDO-Geo/edo-cap2-geo/img176.gif)
Sobre el uso de cadenas, estoy en eso, porque como ya había mencionado mi profesor no es de mucha ayuda, y lo voy haciendo poco a poco, porque esto es nuevo para mi, de hecho estuve intentándolo pero como vi que era mucho código y solo logre que reconociera un término, deseche la idea, ahora que tu me dices, que si es un buen rollo, pues lo volveré a intentar; también me pareció la idea excelente sobre los botones como calculadora, pero necesitaría investigar un poco más para hacer eso, me podrías recomendar una pagina?, sobre
¿es necesario que el programa deba leer la ecuación N y M en formato texto?
no entendi, muy bien, pero creo que te refieres a lo que anterior dije. De ante mano, muchas gracias
Un saludo.
-
no entendi, muy bien, pero creo que te refieres a lo que anterior dije. De ante mano, muchas gracias
Un saludo.
si, exacto me refería a eso, ahora comprendo bien lo que quieres hacer, hasta ahora no lo tenia muy claro, veo que quieres derivar parcialemente con respecto a la variable distinta del diferencial, supongo que para una posterior integración o lo que sea.
pues como te dije antes, yo no programo en basic, yo uso C#o C++, asi que en cuestiones de código no te puedo ayudar, pero la idea es la misma independientemente del lenguaje.
Si tienes la libertad de escribir las funciones N y M de la forma que tu quieras, yo crearia un form, pondria 2 Toolbox, uno para N y otro para M. (lo puedes hacer con una sola Toolbox poniendo primero una función y luego la otra, pero con dos se ve la función escrita mas claramente.
despues en el mismo form, colocaria varios pulsadores, uno para cos(), otro para sen(), símbolo "+" y "-", la variable x e y y todo lo que necesites.
y en el evento de cada pulsación ir formando la ecuación, de esta manera tu programa escribe la ecuación en vez de leerla, que es mas complicado, aunque también se puede hacer.
una vez tengas la ecuación formada, solo debes aplicar tablas de derivación teniendolas en memoria y punto.
Hay muchos proyectos por la red, que tratan sobre como hacer una calculadora, es un proyecto bñasico cuando aprendes programación con form, y con interfaces gráficas, puedes buscar proyectos de ese tipo para cojer las ideas de como ir formando la ecuación a medida que vas introduciendo datos.
una vez tengas la ecuación formada, ya debe ser todo mas fácil.
te recomiendo que uses las funciones "try catch" (o como se llamen en basic que no se como se llamara) para capturar las posibles excepciones que puedan ocurrir al introducir los datos y que no se te quede el programa colgado.
un saludo.