Excel - FORZAR LA ECUACIÓN DE LA LÍNEA DE TENDENCIA

 
Vista:

FORZAR LA ECUACIÓN DE LA LÍNEA DE TENDENCIA

Publicado por doblesparedes (1 intervención) el 07/10/2011 10:14:12
Hola a todos. Necesito, en un conjunto de datos, encontrar su ecuación, pero de la forma (forzándola):
a + bx + cx^3 + dx^5 + ex^7.......

En excel, con los datos que tengo, hago una gráfica, y puedo conseguir su fórmula agregando la línea de tendencia, eligiendo que se polinomial del orden que quiera.
De esta manera consigo lo siguiente: a + bx + cx^2+ dx^3 + ex^4 + fx^5.......


Pero necesito eliminar los términos pares x^2, x^4, x^6,......

Luego también necesitaría utilizar esta ecuación en un macro.

¿Me podría ayudar alguién?

Muchas gracias y un saludo
Raúl
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de JuanC

FORZAR LA ECUACIÓN DE LA LÍNEA DE TENDENCIA

Publicado por JuanC (1237 intervenciones) el 07/10/2011 15:11:25
esto es lo más parecido que tengo... cualquier seguimos viendo...

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
Option Explicit
Option Private Module
 
'//By JuanC - 07 de Septiembre de 2007
 
Sub Test()
Dim Y$, sRangoDatos$, sHoja$, sTmp$
Dim c1$, c2$, c3$, c4$
 
'//Origen de los datos a graficar
sRangoDatos = "B2:C8"
 
'//Nombre de la hoja destino del gráfico
sHoja = "Hoja1"
 
Application.ScreenUpdating = False
 
'//Crear gráfico (polinomio de 3er grado)
Charts.Add
ActiveChart.Type = xlXYScatter
ActiveChart.SetSourceData Source:=Sheets(sHoja).Range(sRangoDatos), PlotBy:=xlColumns
ActiveChart.Location Where:=xlLocationAsObject, Name:=sHoja
ActiveChart.SeriesCollection(1).Trendlines.Add Type:=xlPolynomial, Order:=3, Forward:=0, Backward:=0, DisplayEquation:=True, DisplayRSquared:=False
 
'//Tomar fórmula del gráfico ( y = c1x3 + c2x2 + c3x + c4 )
Y = ActiveChart.SeriesCollection(1).Trendlines(1).DataLabel.Caption
 
'//Eliminar gráfico (opcional)
ActiveChart.ChartArea.Select
ActiveWindow.Visible = False
Selection.Delete
 
Application.ScreenUpdating = True
 
'//Extraer coeficientes (c1, c2, c3 y c4)
Y = LCase(Y)
Y = Replace(Y, " x3", "1x3")
Y = Replace(Y, " x2", "1x2")
Y = Replace(Y, " x", "1x")
 
sTmp = Split(Y, "x3")(0)
c1 = Replace(Mid(sTmp, InStr(1, sTmp, "=") + 1), " ", "")
c1 = Replace(c1, "+", "")
 
sTmp = Mid(Y, InStr(1, Y, "x3") + 2)
c2 = Replace(Split(sTmp, "x")(0), " ", "")
c2 = Replace(c2, "+", "")
 
sTmp = Mid(Y, InStr(1, Y, "x2") + 2)
c3 = Replace(Split(sTmp, "x")(0), " ", "")
c3 = Replace(c3, "+", "")
 
sTmp = Mid(Y, InStrRev(Y, " ") - 2)
c4 = Replace(sTmp, " ", "")
c4 = Replace(c4, "+", "")
 
'//Preparar mensaje para el usuario y mostrarlo
'//(obviamente pueden convertirse los coeficientes
'// en números y realizar cálculos)
sTmp = "Polinomio de ajuste (grado 3):" & vbCrLf & vbCrLf & Y & vbCrLf
sTmp = sTmp & vbCrLf & "C1: " & c1 & " (x^3)"
sTmp = sTmp & vbCrLf & "C2: " & c2 & " (x^2)"
sTmp = sTmp & vbCrLf & "C3: " & c3 & " (x^1)"
sTmp = sTmp & vbCrLf & "C4: " & c4 & " (x^0)"
 
MsgBox sTmp
End Sub


Saludos, desde Baires, JuanC
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar