Построить график определенного интеграла в chart - C#
Формулировка задачи:
Прошу прощения, но какие-либо наработки отсутствуют т.к уже неделю сижу и получается всяческий бред который сюда стыдно загрузить(( поскольку время сдачи курсовой работы подходит к концу то прошу Вашей помощи! Есть программа по нахождению определенных интегралов, в нее необходимо добавить функцию построения графика, у меня даже не получается нарисовать оси графика и подписать их(( Вот код который делает интегрирование функции: P.s как я понимаю sum2 надо использовать как набор точек по оси X, как вот настроить чтобы этот набор точек был на отрезке от a до b по оси Y
private void tr_Click(object sender, EventArgs e)
{
double a = Convert.ToDouble(niz.Text);
double b = Convert.ToDouble(verh.Text);
double eps = Convert.ToDouble(epsil.Text);
int n = 10;
double sum, sum2 = 0;
do
{
sum = sum2;
sum2 = 0;
double h = (b - a) / n;
double x = a + h;
if (radioButton1.Checked)
{
radioButton1.CheckedChanged += new System.EventHandler(ClearResult);
while (x <= b)
{
sum2 += (f1(x) + f1(x + h)) * h / 2;
x += h;
}
}
n *= 2;
} while (Math.Abs(sum - sum2) > eps);
result.Text = "Ответ: " + sum2.ToString();Решение задачи: «Построить график определенного интеграла в chart»
textual
Листинг программы
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
DrawGraph();
}
public double a, b, h,n, res;
double[] x1 = new double[99999];
double[] x2 = new double[99999];
private void verh_KeyPress(object sender, KeyPressEventArgs e)
{
if (!(Char.IsDigit(e.KeyChar)))
{
if (e.KeyChar != (char)Keys.Back != (e.KeyChar == ','))
{
e.Handled = true;
}
}
}
private void tr_Click(object sender, EventArgs e)
{
int a = Convert.ToInt32(niz.Text);
double b = Convert.ToDouble(verh.Text);
double eps = Convert.ToDouble(epsil.Text);
int n = 10;
int i = 0;
double sum, sum2 = 0;
do
{
sum = sum2;
sum2 = 0;
double h = (b - a) / n;
double x = a + h;
if (radioButton1.Checked)
{
radioButton1.CheckedChanged += new System.EventHandler(ClearResult);
while (x <= b)
{
sum2 += (f1(x) + f1(x + h)) * h / 2;
x += h;
}
}
if (radioButton2.Checked)
{
radioButton2.CheckedChanged += new System.EventHandler(ClearResult);
while (x <= b)
{
sum2 += (f2(x) + f2(x + h)) * h / 2;
x += h;
}
}
if (radioButton3.Checked)
{
radioButton3.CheckedChanged += new System.EventHandler(ClearResult);
while (x <= b)
{
sum2 += (f3(x) + f3(x + h)) * h / 2;
x += h;
}
}
if (radioButton4.Checked)
{
radioButton4.CheckedChanged += new System.EventHandler(ClearResult);
while (x <= b)
{
sum2 += (f4(x) + f4(x + h)) * h / 2;
x += h;
}
}
n *= 2;
i += 1;
x1[i] = x;
x2[i] = sum2;
} while (Math.Abs(sum - sum2) > eps);
result.Text = "Ответ: " + sum2.ToString();
}
private void pr_Click(object sender, EventArgs e)
{
double a = Convert.ToDouble(niz.Text);
double b = Convert.ToDouble(verh.Text);
double eps = Convert.ToDouble(epsil.Text);
int n = 10;
double sum, sum2 = 0;
do
{
sum = sum2;
sum2 = 0;
double h = (b - a) / n;
double x = a + h;
if (radioButton1.Checked)
{
while (x <= b)
{
sum2 += f1(x) * h;
x += h;
}
}
if (radioButton2.Checked)
{
while (x <= b)
{
sum2 += f2(x) * h;
x += h;
}
}
if (radioButton3.Checked)
{
while (x <= b)
{
sum2 += f3(x) * h;
x += h;
}
}
if (radioButton4.Checked)
{
while (x <= b)
{
sum2+= f4(x) * h;
x += h;
}
}
n *= 2;
} while (Math.Abs(sum - sum2) > eps);
result.Text = "Ответ: " + sum2.ToString();
}
#region(FUNC)
double f1(double x)
{
double c = Convert.ToDouble(a1.Text);
double d = Convert.ToDouble(b1.Text);
return c + Math.Sin(x) / d;
}
double f2(double x)
{
double c = Convert.ToDouble(a1.Text);
double d = Convert.ToDouble(b1.Text);
return c + Math.Cos(x) / d;
}
double f3 (double x)
{
double c = Convert.ToDouble(a1.Text);
double d = Convert.ToDouble(b1.Text);
return Math.Sqrt(d * x + c);
}
double f4(double x)
{
double c = Convert.ToDouble(a1.Text);
double d = Convert.ToDouble(b1.Text);
return d * (1 / x) + c;
}
#endregion(FUNC)
private void ClearResult(object sender, EventArgs e)
{
result.Text = null;
}
private void graf_Click(object sender, EventArgs e)
{
DrawGraph();
}
private void DrawGraph()
{
GraphPane pane = zedGraph.GraphPane;
pane.CurveList.Clear();
PointPairList list = new PointPairList();
LineItem myCurve = pane.AddCurve("Sinc", list, Color.Blue, SymbolType.None);
pane.XAxis.Cross = 0.0;
pane.YAxis.Cross = 0.0;
pane.XAxis.Scale.IsSkipFirstLabel = true;
pane.XAxis.Scale.IsSkipLastLabel = true;
pane.XAxis.Scale.IsSkipCrossLabel = true;
pane.YAxis.Scale.IsSkipFirstLabel = true;
pane.YAxis.Scale.IsSkipLastLabel = true;
pane.YAxis.Scale.IsSkipCrossLabel = true;
for (int i = 0; i <99999 ; i++)
{
list.Add(x1[i], x2[i]);
}
zedGraph.AxisChange();
zedGraph.Invalidate();
}
}
}