Ejercicio utilizando Visual basic, calcular error absoluto, relativo y relativo porcentual

Al medir la

Longitud de una varilla para construcción se obtiene el resultado aproximado de
19998 cms. Mientras que al medir la longitud de un clavo, se obtiene el
resultado de 9 cms. Suponiendo que los valores verdaderos de la varilla y el
clavo son de 20000 cms. Y 11 cms. Respectivamente, calcular el error absoluto, el error relativo y el error relativo porcentual
en ambos casos

1 Respuesta

Respuesta
1

Haber si puedo ayudarte. Voy a desempolvar mis "mates" y si no recuerdo mal el error absoluto era la diferencia entre la media de mediciones y una de las mediciones y el error relativo era el absoluto entre la media de mediciones o medición. Como este valor suele ser pequeño y sin unidades, se utiliza el porcentaje. Si esto es correcto, vamos allá.

Voy a escribir el código para que se ejecute el sub mediante un botón que te crees y luego le asignas el código. Te creas un módulo y escribes:

Option Explicit
Sub calculo_errores_click()
On Error Resume Next
Dim medición(5) As Single, media As Single, absol As Single, rel As Single, valor As Single
Dim i As Integer, j As Integer
Dim text As String
j = 0
i = 0
'solicito mediciones hasta 5, rellenando el array y aprovecho la variable i como control
Do Until i = 1 Or j = 5
valor = 0
valor = Application.InputBox("Introduzca medición (máximo " & UBound(medición) & "). Mediciones introducidas: " & j _
& vbCrLf & "Cancelar para salir.")
If valor = 0 Then
i = 1
Else:
j = j + 1
medición(j) = valor
End If
Loop
' Si no hay valores, salgo del sub
If j = 0 Then
MsgBox "No se han introducido valores.Abandonando procedimiento", vbOKOnly
Exit Sub
Else:
'le doy el valor a la variable media total de las mediciones hechas y las meto en la variable text para mas tarde
media = 0
For i = 1 To j
media = media + medición(i)
text = text & "- " & medición(i) & vbCrLf
Next i
End If
'solicito con que medición quiero los errores
error:
valor = 0
valor = Application.InputBox("Introduzca la medición a evaluar. Mediciones disponibles: " & vbCrLf & text)
If valor = 0 Then
MsgBox "No se ha introducido medición o la acción ha sido cancelada. Abandonando procedimiento", vbOKOnly
Exit Sub
Else:
'compruebo si la medición introducida es correcta
For i = 1 To j
If valor = medición(i) Then
'hago los cálculos con la medición elegida
'error absoluto
absol = (media / j) - valor
'error absoluto con cuatro decimales
absol = Application.WorksheetFunction.Round(absol, 4)
'si el error absoluto es negativo, lo cambio a positivo
If absol < 0 Then
absol = Abs(absol)
End If
'error relativo con cuatro decimales
rel = Application.WorksheetFunction.Round((absol / valor), 4)
'muestro los resultados finales
MsgBox "El resultado de los errores con la medición " & valor & " es el siguiente:" _
& vbCrLf & vbCrLf & "- Error absoluto: " & absol & vbCrLf & "- Error relativo: " & rel & _
vbCrLf & "- Error relativo porcentual: " & rel * 100 & "%"
Exit Sub
End If
Next i
MsgBox "La medición " & valor & " introducida no es correcta." & "Los valores disponibles son: " & vbCrLf & text
GoTo error
End If
End Sub

Dos cuestiones a tener en cuenta:

- La medición cero no la puedes contemplar. Si quisieses esa opción habría que cambiar la declaración de las variables y poner más instrucciones de control.

- Si quisieras más mediciones cambia el array de 5 por las que necesites (variable medición) y el bucle Do until (variable j) por este mismo valor.

Un saludo desde Sevilla. No te olvides finalizar la pregunta y puntuarla.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas