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-