SoloCodigo
Programación General => Visual Basic 6.0 e inferiores => Mensaje iniciado por: cirlia en Lunes 1 de Septiembre de 2003, 06:57
-
Hola
Dispongo de una curva cuyos datos x yY estan en vectores, y la curva varia para cada corrida de mi programa. Necesito programar un codigo que cada vez encuentre el mejor polinomio (max sexto orden) que se ajuste a la curva.
Me imagino que ya alguien necesito programar algo parecido...
Saludos
Cirlia
-
No se si te refieres a ajustes polinómicos de Bezzier... o tú conoces el polinomio y deseas formar ecuaciones y resolverlas por determinantes ??
Los datos son vectores o segmentos de recta ??
La curva tiene máximos y mínimos o es monótona ??
Si detallas algo más a lo mejor te podemos ayudar.
-
Si has usado Excel para hacer un grafico y luego con el boton derecho usas Agregar linea de tendencia, alli uno puede decidir si la curva graficada se aproxima a una recta o a un polinomio de segundo, tercero...hasta sexto orden. Eso es lo que yo necesito hacer, voy a tener los datos x y Y de una curva pero necesito encontrar la funcion o expresion analitica asi como y=ax+b para una recta, o y=aX2+bx+c para una curva. Eso lo llamamos regresion polinomica.
Mi curva es sencilla comienza en (0,0) y termina en (1,1) noes una recta asi que se que no se aproximara a un polinomio de primer orden sino a mayor.
Los datos los tengo en vectores, quiero decir x=(0,0.5,0.7,0.9,1) y Y=(0,0.1,0.4,0.7,1). (En realidad es una curva de equilibrio quimico, no tiene maximos ni minimos)
Si tienes alguna idea de como hacer esto, por favor indicame como hacerlo.
Muchas gracias anticipadas
Cirlia
-
No se si esto te puede servir.
Selecciona los puntos de coordenadas en grupos de cuatro, es decir
1er grupo
X1,X2,X3,X4
Y1,Y2,Y3,Y4
2º grupo
X2,X3,X4,X5
Y2,Y3,Y4,Y5
y asi sucesivamente hasta alcanzar el último grupo de 4 pares de valores.
Con cada uno de estos grupos realiza la siguiente operación:
Toma un valor 'u' entre 0 y 1 en segmentos tan pequeños como la precisión requiera.
Calcula los parámetros de regresión para cada valor de 'u'.
A=(-u^3/6)+(u^2/2)-(u/2)+(1/6)
B=(u^3/2)-(u^2)+(2/3)
C=(-u^3+u^2+u)/2+(1/6)
D=(u^3/6)
Xn=A*X1+B*X2+C*X3+D*X4
Yn=A*Y1+B*Y2+C*Y3+D*Y4
Los valores Xn;Yn te los vas guardando en una matriz y cuando termines con todos los grupos formados, tendrás una matriz con los valores que se ajustan a cualquier sucesión de puntos (Algoritmo de Spline).
Si esto no te sirve, deberás de seleccionar las ecuaciones (Parábola, Hipérbola ...) y ajustar los parámetros (A,B,C...etc) por mínimos cuadrados en función a los valores conocidos (X,Y) de cada referencia.
NOTA: Te lo he escrito al vuelo, espero no haberme equivocado en ninguna operación.
Un saludo
-Acalanto-