en
Visual C#
Versin: 2010
Variograma Experimental
Elaborado por:
1. Introduccin
Como parte del trabajo del Grupo de Programacin CMMSB, publicamos este pequeo manual, en donde, de manera prctica, explicaremos el desarrollo de programas de aplicacin, esto significa un aporte del grupo hacia nuestros amigos estudiantes, informacin que nos ayudar a incrementar nuestras habilidades informticas. En la presente clase se explicar, la creacin de una aplicacin para el clculo de variograma experimental de un conjunto de datos dispuesto en una misma direccin en el espacio que representa una variable, usando el Visual Estudio C# en su versin. La distribucin de esta clase es gratuita y la podemos adquirir en su versin digital en el Circulo Minero Mario Samam Boggio, y tambin quedan todos invitamos a participar de este grupo de estudio.
A continuacin se muestra el siguiente dilogo New Project, seleccionamos el lenguaje Visual C# y seleccionamos el tipo de proyecto que vamos a desarrollar Windows Forms Application (ejecutable .exe); Le ponemos de nombre al proyecto VARIOGRAMA y le damos clic en OK.
Seguidamente nos muestra el siguiente Form , en donde disearemos jalando los objetos del ToolBox y modificaremos sus propiedades (Properties).
Diseo de la aplicacin
Le damos doble clic al Button Generar para crear el mtodo del evento clic del Button dirigindonos al archivo Form1.cs , donde observamos que se gener private void button1_click(object sender, EvenArgs e), en donde escribiremos el cdigo de la operacin para generar nmeros aleatorios y que estos se muestren el en Chart.
Usando el Convert.ToInt32(), para enteros, o Convert.ToDouble(), para variables tipo double, covertiremos los valores ingresados en los TextBox a valores numricos.
Terminaremos de escribir el cdigo dentro del mtodo del buttom1 como se muestra:
private void button1_Click(object sender, EventArgs e) { //Asignacin de variables Ndatos = Convert.ToInt32(textBox1.Text); linf = Convert.ToDouble(textBox2.Text); lsup = Convert.ToDouble(textBox3.Text); //Declaracion del vector N en donde se guardar los aleatorios generados double[] N; N= new double [Ndatos];
//Creamos el objeto random, simplemente Random r = new Random(); for (int cont = 0; cont < Ndatos; cont++) { //Genera los random N[cont] = r.Next((int)linf*1000,(int)lsup*1000)/1000.0; } chart1.Series.Clear(); chart1.Titles.Clear(); // declaracin de serie de datos "Gamma", definicion del tipo de Chart chart1.Series.Add("Gamma"); chart1.Series["Gamma"].ChartType = SeriesChartType.Point; chart1.Titles.Add("VARIOGRAMA EXPERIMENTAL").Font = new Font("Corber", 12, FontStyle.Bold); ; chart1.ChartAreas["ChartArea1"].AxisX.Title = "Distancia h (m)"; chart1.ChartAreas["ChartArea1"].AxisY.Title = "Gamma(h)"; chart1.ChartAreas["ChartArea1"].AxisX.TitleFont = new Font("Corber", 10, FontStyle.Bold); chart1.ChartAreas["ChartArea1"].AxisY.TitleFont = new Font("Corber", 10, FontStyle.Bold);
double[] G; G = new double[Ndatos]; G = Variograma(N, Ndatos); for (int cont = 0; cont < Ndatos; cont++) { chart1.Series["Gamma"].Points.AddXY(cont, G[cont]); richTextBox1.AppendText("G[" +cont+"]=\t"+ Math.Round(G[cont],3) + "\n"); }
chart1.ChartAreas["ChartArea1"].AxisX.Maximum = Ndatos; chart1.ChartAreas["ChartArea1"].AxisX.Minimum = 0; chart1.ChartAreas["ChartArea1"].AxisX.MajorGrid.LineDashStyle = ChartDashStyle.Dash; chart1.ChartAreas["ChartArea1"].AxisY.MajorGrid.LineDashStyle = ChartDashStyle.Dash; chart1.ChartAreas["ChartArea1"].AxisX.LabelStyle.Font = new Font("Arial", 8); chart1.ChartAreas["ChartArea1"].AxisY.LabelStyle.Font = new Font("Arial", 8); }
Mtodo Varigrama para el clculo del Variograma Experimental,el que sera escrito despus del metodo del button1
private double[] Variograma(double[] n, int q) { double sum; int cont, j; double[] G = new double[q]; for (cont = 0; cont <= (q - 1); cont++) { sum = 0.0; for (j = 0; j < (q - cont); j++) { sum = sum + ((n[j] - n[j + cont]) * (n[j] - n[j + cont])); } G[cont] = sum / (2 * (q - cont)); } return G; }
Ahora solo queda probar la aplicacin, presionando F5 podemos iniciar la aplicacin y si todo esta correcto al probar con valores como se muestran en la grfica, se tendra el variograma de nmeros aleatorios de distribucin uniforme como se muestra.
Se observa la independa de los gamma(h) con respecto a la distancia h, la tendencia de los gamma(h) es lineal y coinciden con la varianza de los nmeros aleatorios de distribucin uniforme.