private void Metodo_Euler(bool guia) { //Inicializo variables con parámetros de entrada double a = Convert.ToDouble(tbA.Text); double b = Convert.ToDouble(tbB.Text); double x0 = Convert.ToDouble(tbX0.Text); int n = Convert.ToInt32(tbN.Text); string fx = tbFx.Text; double k = Convert.ToDouble(tbT.Text ?? "0"); //Instancio objeto euler EULER euler = new EULER(a, b, x0, n, fx, k); //Calculo tabla de puntos euler.Calcular(); //chResultado.Series.Clear(); //Creo serie para los valores calculados var serieEuler = new Series { Name = "EULER", Color = System.Drawing.Color.Green, IsVisibleInLegend = true, IsXValueIndexed = false, ChartType = SeriesChartType.Line, }; //Agrego serie al gráfico this.chResultado.Series.Add(serieEuler); //Seteo intervalo del eje t con el h calculado this.chResultado.ChartAreas[0].AxisX.Interval = euler.h; this.chResultado.ChartAreas[0].AxisY.IntervalAutoMode = IntervalAutoMode.VariableCount; this.chResultado.ChartAreas[0].RecalculateAxesScale(); var i = 0; //Recorro resultados y agrego valores a la serie y muestro en consola foreach (var p in euler.resultado) { serieEuler.Points.AddXY(p.x, p.fx); Console.Write(String.Format("t{0}: {1} ", i, p.x)); Console.Write(String.Format("x({0}): {1}\n", i, p.fx)); i++; } Console.WriteLine("==============================="); chResultado.Invalidate(); //Si se requiere una guia de la función, uso el mismo metodo pero con n=100000 if (guia) { var euler_m = new EULER_MEJORADO(a, b, x0, 10000, fx, k); euler_m.Calcular(); var series2 = new Series { Name = "FUNCION", Color = System.Drawing.Color.Red, IsVisibleInLegend = true, IsXValueIndexed = false, ChartType = SeriesChartType.Line }; this.chResultado.Series.Add(series2); foreach (var p in euler_m.resultado) { series2.Points.AddXY(p.x, p.fx); } } }
private void Metodo_Euler_Mejorado(bool guia) { double a = Convert.ToDouble(tbA.Text); double b = Convert.ToDouble(tbB.Text); double x0 = Convert.ToDouble(tbX0.Text); int n = Convert.ToInt32(tbN.Text); string fx = tbFx.Text; double k = Convert.ToDouble(tbT.Text ?? "0"); EULER_MEJORADO euler = new EULER_MEJORADO(a, b, x0, n, fx, k); euler.Calcular(); //chResultado.Series.Clear(); var series1 = new Series { Name = "EULER MEJORADO", Color = System.Drawing.Color.Blue, IsVisibleInLegend = true, IsXValueIndexed = false, ChartType = SeriesChartType.Line, }; this.chResultado.Series.Add(series1); this.chResultado.ChartAreas[0].AxisX.Interval = euler.h; this.chResultado.ChartAreas[0].RecalculateAxesScale(); var i = 0; foreach (var p in euler.resultado) { series1.Points.AddXY(p.x, p.fx); Console.Write(String.Format("t{0}: {1} ", i, p.x)); Console.Write(String.Format("x({0}): {1}\n", i, p.fx)); i++; } Console.WriteLine("==============================="); chResultado.Invalidate(); if (guia) { euler = new EULER_MEJORADO(a, b, x0, 10000, fx, k); euler.Calcular(); var series2 = new Series { Name = "FUNCION", Color = System.Drawing.Color.Red, IsVisibleInLegend = true, IsXValueIndexed = false, ChartType = SeriesChartType.Line }; this.chResultado.Series.Add(series2); foreach (var p in euler.resultado) { series2.Points.AddXY(p.x, p.fx); } } }