Project in Math24-A1
Project in Math24-A1
Department of Mathematics
3rd Quarter S.Y. 2015-2016
OBJECTIVE
Y
0
SOURCE CODE
using System;
using System.Collections.Generic;
using System.ComponentModel;
using
using
using
using
using
using
using
using
System.Data;
System.Drawing;
System.Linq;
System.Text;
System.Threading.Tasks;
System.Windows.Forms;
info.lundin.math;
ZedGraph;
namespace DECalc
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender,
EventArgs e)
{
try
{
Variables.function = textBox1.Text.ToString();
Variables.r = 0; Variables.c = 0;
Variables.Results = "";
dataGridView1.DataSource = null;
dataGridView1.Rows.Clear();
dataGridView1.Columns.Clear();
double stepsize =
double.Parse(textBox5.Text.ToString());
double xInit =
double.Parse(textBox2.Text.ToString());
double yInit =
double.Parse(textBox3.Text.ToString());
double xEnd =
double.Parse(textBox4.Text.ToString());
Equation eq = new Equation(xInit, yInit,
stepsize, xEnd);
Variables.iterations = Convert.ToInt32(((xEnd
- xInit) / stepsize) + 1);
dataGridView1.Columns.Add("Column1", "x");
dataGridView1.Columns.Add("Column2", "y");
Variables.array = new
double[Variables.iterations, 2];
eq.Run();
for (int i = 0; i < Variables.iterations; i++)
{
dataGridView1.Rows.Add(new object[]
{ Variables.array[i, 0].ToString("0.000000"),
Variables.array[i, 1].ToString("0.0000000000") });
}
}
catch(Exception ex)
{
MessageBox.Show(ex.Message.ToString(),"Error",Messa
geBoxButtons.OK,MessageBoxIcon.Error);
}
}
private void button3_Click(object sender,
EventArgs e)
{
try
{
CreateGraph(zedGraphControl1);
LineItem myCurve =
myPane.AddCurve("Data", list1, Color.Red,
SymbolType.Default);
// Tell ZedGraph to refigure the
// axes since the data have changed
zgc.AxisChange();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message.ToString(),
"Error", MessageBoxButtons.OK,
MessageBoxIcon.Error);
}
}
private void button2_Click(object sender,
EventArgs e)
{
textBox1.Clear();
textBox2.Clear();
textBox3.Clear();
textBox4.Clear();
textBox5.Clear();
dataGridView1.DataSource = null;
dataGridView1.Rows.Clear();
dataGridView1.Columns.Clear();
zedGraphControl1.GraphPane.CurveList.Clear();
zedGraphControl1.GraphPane.GraphObjList.Clear();
PointPairList list1 = new PointPairList();
zedGraphControl1.Refresh();
}
public class Variables
{
public static string Results = "";
public static string function;
public static ExpressionParser myParser;
public static int iterations;
public static double[,] array;// = new
double[iterations, iterations];
public static int r = 0, c = 0;
}
public static class RungeKutta
{
public delegate double SmallRkDelegate(double x,
double y);
static double sixth = 1.0 / 6.0;
public static double rk4(double x, double y, double
dx, SmallRkDelegate f)
{
double halfdx = 0.5 * dx;
double
double
double
double
k1
k2
k3
k4
=
=
=
=
dx
dx
dx
dx
*
*
*
*
f(x, y);
f(x + halfdx, y + k1 * halfdx);
f(x + halfdx, y + k2 * halfdx);
f(x + dx, y + (k3 * dx ));
}
public class Equation
{
double x, y, dx, target;
Variables.array[Variables.r, Variables.c] =
x;
Variables.c++;
Variables.array[Variables.r, Variables.c] =
y;
Variables.r++;
Variables.c = 0;
y = RungeKutta.rk4(x, y, dx, dy_dt);
x += dx;
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message.ToString(),
"Error", MessageBoxButtons.OK,
MessageBoxIcon.Error);
}
}