Buenas, quisiera que me ayudaran para este programa que estoy realizando.
Bueno, estoy realizando un programa para un maestro de probabilidad y estadística, y el encargo fue, realizar un programa que calcule las medias de tendencia central.
Comencé a realizar el código el martes pero me encontré con un problema en la media geométrica, el cual es la raíz cuadra e-nesima osea la n ^ √ , no se como ponerla en el código.
Bueno les dejo lo que tengo, la media aritmética esta correcta, el problema lo ayo en la media geométrica....
El programa lo estoy haciendo en Windows Visual Studio 2008, estoy utilizando Botones, texbox y listbox.
Pd: y si de paso saben hacer la media armónica se los agradeceré.
Public Class Media_de_tendencias_central
Dim d As Double = 0
Dim c As Double = 0
Dim suma As Double = 0.0
Dim multi As Double = 0.0
Dim numero As String
// MEDIA ARITMÉTICA //
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim num As Double
num = TextBox1.Text
suma = suma + num
d = d + 1
numero = numero & num & " + "
ListBox1.Items.Add(TextBox1.Text)
TextBox1.Text = ""
TextBox1.Focus()
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
ListBox1.Sorted = True
End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
Dim aritmetica As Double
aritmetica = suma / d
TextBox2.Text = aritmetica
End Sub
// MEDIA GEOMÉTRICA //
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
Dim num2 As Double
num2 = TextBox3.Text
multi = multi * num2
c = c + 1
numero = numero & num2 & " * "
ListBox2.Items.Add(TextBox3.Text)
TextBox3.Text = ""
TextBox3.Focus()
End Sub
Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
ListBox2.Sorted = True
End Sub
Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click
Dim geometrica As Double
geometrica = Math.Sqrt(multi ^ 1 / c)
TextBox4.Text = geometrica
End Sub
End Class
y así es como se ve el form
(https://k61.kn3.net/A/C/E/D/8/4/7B9.png)
espero y me puedan ayudar.
Con este vídeo te debería servir: https://www.youtube.com/watch?v=1_VNR-o48wM (https://www.youtube.com/watch?v=1_VNR-o48wM)
En cuanto a la desviación armónica ahora mismo no te puedo ayudar. Suerte.
Un saludo.
Envíame las formulas Matemáticas bien expresadas y separadas para ver si puedo ayudarte, la Matemática no es mi fuerte pero voy a ver que puedo hacer.
Primero, cuida tu redacción, esto no tiene sentido:
Cita de: Ahinoam en 2 Junio 2016, 21:50 PM
la raíz cuadra e-nesima
Ahora, la raiz n-ésima es como dices:
[latex]\sqrt[n]{x}=x^{1/n}[/latex]
Ya a partir de ahí puedes trabajar, claro está que tienes que tener cuidado con el trabajo de fracciones y el uso de la aritmética de punto flotante de tu PC, pues puedes producir errores de cálculo, más aun trabajando con datos de probabilidades y estadísticos.
Espero esto te pueda ayudar. Cualquier otra cosa, dilo!
Salu2s
hola
para poner esto:
n ^ √
en código vb.net es así:
n ^ Math.Sqrt(x)
Por ejemplo esto :
25 ^ √12
Se podría así:
25 ^ Math.Sqrt(12)
y devuelve esto:
69599,5195898361
Espero sirva..
Creo que está todo bien, si eso comentais y corrijo.
(https://4.bp.blogspot.com/-4uDedC39jmQ/V15HsvUB8UI/AAAAAAAAAYM/a9Xnfhb8EtcCfE2OLSIJHv_B1euazYsLwCLcB/s320/Med.tend.central.jpg)
Option Strict On
Public Class Form1
Dim lstValorMedAritmetica As New List(Of Double) 'Variable para los valores de la media aritmética
Dim indice As Integer
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim myFont As New Font("Arial", 10, FontStyle.Bold)
RadioButton1.Checked = True
RadioButton1.Text = "Media Aritmética"
RadioButton2.Text = "Media Armónica"
RadioButton3.Text = "Media Geométrica"
RadioButton4.Text = "Moda"
RadioButton5.Text = "Mediana "
RadioButton1.Font = myFont
RadioButton2.Font = myFont
RadioButton3.Font = myFont
RadioButton4.Font = myFont
RadioButton5.Font = myFont
Me.Text = "Medidas de centralizaciónl"
Me.MaximizeBox = False
btAgregar.Text = "<< Agregar"
btCalcMed.Text = "Calcular"
txtValue.TextAlign = HorizontalAlignment.Right
End Sub
Private Sub btAgregar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btAgregar.Click
Try
'Si no hay nada en la lista borra el listbox y el resultado anterior
If lstValorMedAritmetica.Count = 0 Then
ListBox1.Items.Clear()
txtResultMedArit.Text = ""
End If
'Añade un valor a la lista
lstValorMedAritmetica.Add(CDbl(txtValue.Text))
'Añade un valor a listbox
ListBox1.Items.Add(txtValue.Text)
btCalcMed.Enabled = True
Catch ex As Exception
MessageBox.Show("Valor no válido", _
"Atención", _
MessageBoxButtons.OK, _
MessageBoxIcon.Exclamation)
End Try
End Sub
Private Sub btCalcMed_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btCalcMed.Click
'Calcula la media aritmética
If RadioButton1.Checked = True Then
txtResultMedArit.Text =
CStr(modEstadisticFunctions.MediaAritmetica(lstValorMedAritmetica).ToString("0.00"))
End If
'Calcula la media armónica
If RadioButton2.Checked = True Then
txtResultMedArit.Text =
CStr(modEstadisticFunctions.MediaArmonica(lstValorMedAritmetica).ToString("0.00"))
End If
'Calcula Media Geométrica
If RadioButton3.Checked = True Then
txtResultMedArit.Text =
CStr(modEstadisticFunctions.MediaGeometrica(lstValorMedAritmetica).ToString("0.00"))
End If
'Calcula moda
If RadioButton4.Checked = True Then
txtResultMedArit.Text = CStr(
modEstadisticFunctions.Moda(lstValorMedAritmetica))
End If
'Calcula mediana
If RadioButton5.Checked = True Then
txtResultMedArit.Text =
modEstadisticFunctions.Mediana(lstValorMedAritmetica)
End If
lstValorMedAritmetica.Clear()
btCalcMed.Enabled = False
End Sub
Private Sub txtArtimetica_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtValue.Click
txtValue.SelectAll()
End Sub
End Class
Module modEstadisticFunctions
''' <summary>
''' Función para calcular la media aritmética
''' </summary>
''' <param name="dblValue">Variable array List</param>
''' <returns></returns>
''' <remarks></remarks>
Public Function MediaAritmetica(ByVal dblValue As List(Of Double)) As Double
Try
Dim Valor As Double
Dim md As Double
For I As Integer = 0 To dblValue.Count - 1
Valor += +dblValue(I)
Next
md = Valor / dblValue.Count
Return md
Catch ex As Exception
MessageBox.Show("Valor no válido", _
"Atención", _
MessageBoxButtons.OK, _
MessageBoxIcon.Exclamation)
Return Nothing
End Try
End Function
''' <summary>
''' Función para calcular la media armónica
''' </summary>
''' <param name="dblValue">Variable array List</param>
''' <returns></returns>
''' <remarks></remarks>
Public Function MediaArmonica(ByVal dblValue As List(Of Double)) As Double
Try
Dim Valor As Double
Dim md As Double
For I As Integer = 0 To dblValue.Count - 1
Valor += +(1 / dblValue(I))
Next
md = dblValue.Count / Valor
Return md
Catch ex As Exception
MessageBox.Show("Valor no válido", _
"Atención", _
MessageBoxButtons.OK, _
MessageBoxIcon.Exclamation)
Return Nothing
End Try
End Function
''' <summary>
''' Función para calcular la media geométrica
''' </summary>
''' <param name="dblValue">Variable array List</param>
''' <returns></returns>
''' <remarks></remarks>
Public Function MediaGeometrica(ByVal dblValue As List(Of Double)) As Double
Try
Dim Valor As Double = 1
Dim md As Double
For I As Integer = 0 To dblValue.Count - 1
Valor = Valor * dblValue(I)
Next
md = Valor ^ (1 / dblValue.Count)
Return md
Catch ex As Exception
MessageBox.Show("Valor no válido", _
"Atención", _
MessageBoxButtons.OK, _
MessageBoxIcon.Exclamation)
Return Nothing
End Try
End Function
''' <summary>
''' Función para calcular la Moda
''' </summary>
''' <param name="dblValue">Variable array List</param>
''' <returns></returns>
''' <remarks></remarks>
Public Function Moda(ByVal dblValue As List(Of Double)) As Double
Try
Return dblValue.Max() 'Obtiene el número mayor
Catch ex As Exception
MessageBox.Show("Valor no válido", _
"Atención", _
MessageBoxButtons.OK, _
MessageBoxIcon.Exclamation)
Return Nothing
End Try
End Function
''' <summary>
''' Función para calcular la Mediana
''' </summary>
''' <param name="dblValue">Variable array List</param>
''' <returns></returns>
''' <remarks></remarks>
Public Function Mediana(ByVal dblValue As List(Of Double)) As String
Try
Dim par As Double
Dim Madn As String = Nothing
dblValue.Sort()
If (dblValue.Count / 2) = CInt(dblValue.Count / 2) Then
par = CDbl(True)
Else
par = CDbl(False)
End If
Select Case par
Case CDbl(True) : Madn = String.Format("{0}-{1}",
CStr(dblValue(CInt((dblValue.Count / 2) - 1))),
CStr(dblValue(CInt(dblValue.Count / 2))))
Case CDbl(False) : Madn = String.Format("{0}",
CStr(dblValue(CInt(Conversion.Int(dblValue.Count / 2)))))
End Select
Return Madn
Catch ex As Exception
MessageBox.Show("Valor no válido", _
"Atención", _
MessageBoxButtons.OK, _
MessageBoxIcon.Exclamation)
Return Nothing
End Try
End Function
End Module
Faltaría la media aritmética ponderada, pero no la he puesto porque requiere hacerlo aparte y añadir más código. Ya que se necesitan dos datos, los valores y los coeficientes de importancia.
Error corregido
Había un error en el cálculo de la mediana. Se me olvidó ordenar la lista de valores.
He añadido dblValue.Sort()
Mis disculpas :-\
S2s