pregunto
alguien sabe de algun codigo que lea el grado de un poilinomio y que lo evaluea en un punto (x, P(x)) y que haga los mismo para su derivada
es sobre metodos numericos
y estaba pensando en asp para hcerlo
| ||||
la verdad e suna tarea maestro, pero no era mia era de mi hermana y ella lo posteo jajajaj no te digo pues encontre unos codigos para visual basic estan medio interesantes!!!! gracias de antemano
__________________ JuanRa Pérez San Salvador, El Salvador |
| |||
Pues se me ocurre hacer esto: Analizar cadena, contar "x", contar números al lado de la x y precedidos por un ^. Números anteriores a la "x" también (y todos esos datos ir guardándolos en un vector. Un vector con un tamaño inicial muy grande o un vector que puedas ir redimensionando). Después, es sumar y multiplicar, así de sencillo (x^3 es x·x·x, lo cual puedes conseguir mediante un bucle). Con las funciones adecuadas de tratamiento de cadena podrás hacerlo (busca el equivalente al charAt de Javascript, en ASP. Luego es en un bucle ir recorriendo la cadena recibida, que contendrá la ecuación, desde la posición 0 hasta la de su longitud menose uno, para iniciar el programa y empezar a dar los pasos que he comentado antes). PD: Ah, ni vector dinámico ni pollas, que estaba pensando en guardar la información del polinomio para evaluarla después para cualquier número. Pero si quieres evaluar directamente el polinomio en un número, puedes ir haciéndolo "sobre la marcha" y utilizar para ello sólo tres o cuatro variables, e ir guardando en una (por medio de ir sumándole los monomios) el resultado final. PPD: Leer el grado de un polinomio es trivial, si antes se ha de hacer lo otro. |
| ||||
detalle de la resolucion pero fue en visual basic lo dejo por si a alguien le interesa mas adelante sludos. Suerte Cita: powered raul, cros y jr Attribute VB_Name = "frm_derivadas" Attribute VB_GlobalNameSpace = False Attribute VB_Creatable = False Attribute VB_PredeclaredId = True Attribute VB_Exposed = False Private Sub Command1_Click() Dim rvalor, rExp, rvar1, rvar2, roper, rmay9 rvalor = 0 roper = "" If Len(Text6) > 0 Then rvez = 1 For i = 1 To Len(Text6) ' verificar el grado If Mid(Text6, i, 2) = "X^" Then If rvalor < Mid(Text6, i + 2, 1) Then rvalor = Mid(Text6, i + 2, 1) End If Else If Mid(Text6, i, 1) = "X" Then If Val(rvalor) < Val(Mid(Text6, i + 1, 1)) Then rvalor = Mid(Text6, i + 1, 1) Else ' rvalor = 1 End If End If End If ' calcular derivada If Mid(Text6, i, 1) = "+" Or Mid(Text6, i, 1) = "-" Then If rvez = 1 Then Dim pos(10) As Integer Dim posV(10) As String Dim posY As Integer rconta = 0 For p = 1 To Len(Text6) If Mid(Text6, p, 1) = "+" Or Mid(Text6, p, 1) = "-" Then pos(rconta) = p posV(rconta) = Mid(Text6, p, 1) rconta = rconta + 1 End If Next p For p = 1 To Len(Text6) If Mid(Text6, p, 1) = "=" Then posY = p End If Next p K = 0 Dim rlimI, rlimS Do While rconta + 1 > 0 If rconta > 0 Then If K = 0 Then rlimI = 1 rlimS = pos(K) rlong = rlimS - rlimI Else rlimI = pos(K - 1) + 1 rlimS = pos(K) rlong = rlimS - rlimI End If Else If rconta = 0 Then rlimI = pos(K - 1) + 1 rlimS = posY rlong = rlimS - rlimI Else rlimI = pos(K - 1) + 1 rlimS = pos(K) rlong = rlimS - rlimI End If End If rvar1 = Mid(Text6, rlimI, rlong) For l = 1 To Len(rvar1) If Mid(rvar1, l, 2) = "X^" Then rExp = Mid(rvar1, l + 2, 1) rmay9 = Val(Left(rvar1, 2)) If rmay9 > 9 Then rvar2 = Mid(rvar1, l - 2, 2) Else If rmay9 = 0 Then rvar2 = 1 Else rvar2 = Mid(rvar1, l - 1, 1) End If End If If Val(rExp) = 2 Then roper = roper + " " + Trim(posV(K - 1)) + " " + Str(Val(rExp) * Val(rvar2)) + "X" Else If Val(rExp) = 1 Then Else If Len(roper) > 0 Then roper = roper + " " + Trim(posV(K - 1)) + " " + Str(Val(rExp) * Val(rvar2)) + "X^" + Str(rExp - 1) Else roper = Str(Val(rExp) * Val(rvar2)) + "X^" + Str(rExp - 1) End If End If End If Else If Mid(rvar1, l, 1) = "X" Then rExp = Mid(rvar1, l + 2, 1) rmay9 = Val(Left(rvar1, 2)) If rmay9 > 9 Then rvar2 = Mid(rvar1, l - 2, 2) Else If rmay9 = 0 Then rvar2 = 1 Else rvar2 = Mid(rvar1, l - 1, 1) End If End If If Val(rExp) = 2 Then roper = roper + " " + Trim(posV(K - 1)) + " " + Str(Val(rExp) * Val(rvar2)) + "X" Else If Val(rExp) = 0 Then roper = roper + " " + Trim(posV(K - 1)) + " " + rvar2 Else roper = roper + " " + Trim(posV(K - 1)) + " " + Str(Val(rExp) * Val(rvar2)) + "X^" + Str(rExp - 1) End If End If End If End If Next l rconta = rconta - 1 K = K + 1 rvez = 3 Loop End If End If Next i End If MsgBox "la derivada es de grado." + Str(rvalor) MsgBox "la derivada es " + roper End Sub
__________________ JuanRa Pérez San Salvador, El Salvador |
| ||||
Por nada...nada mas preguntaba ![]() ![]() ![]()
__________________ "El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera." -- Ernest Hemingway |