Расчет определенного интеграла методом трапеции с заданной точностью - C#
Формулировка задачи:
С математикой не очень дружу. Не могу формулу никак сделать . Форум просматривал но там с заданным количеством отрезком. Интеграл Ln2x. Не могу никак с точностью определиться,сегодня сдавать а я попутно еще бд делаю мозг разрываеться
private void button1_Click(object sender, EventArgs e)
{
double a, b, n = 1, h, res;
double sum = 0, xi = 0, xi1;
double eps;
double an = 0;
if ((textBox1.Text == "") || (textBox2.Text == "") || (Convert.ToDouble(textBox1.Text) < 0)||
(textBox3.Text == ""))
{
MessageBox.Show("Некоректные данные");
}
else
{
a = Convert.ToDouble(textBox1.Text);
b = Convert.ToDouble(textBox2.Text);
eps = Convert.ToDouble(textBox3.Text);
h = (b - a) / n;
do
{
h = (b - a) / n;
for (int i = 0; i < n; i++)
{
xi = a + i * h;
xi1 = a + (i + 1) * h;
sum += (Math.Log(xi) * Math.Log(xi) + Math.Log(xi1) * Math.Log(xi1));
}
n++;
an -= sum;
} while (Math.Abs(an) > eps);
res = sum * h /2;
label2.Text = Convert.ToString(res);
/* chart1.Series[0].ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Spline;
for (int i = 0; i < n; i++)
chart1.Series[0].Points.AddXY(xi, n);*/
}
}Решение задачи: «Расчет определенного интеграла методом трапеции с заданной точностью»
textual
Листинг программы
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
double a, b, n = 10, h, res,res1 = 0,res2;
double x;
double eps;
double an = 0;
if ((textBox1.Text == "") || (textBox2.Text == "") || (Convert.ToDouble(textBox1.Text) < 0)||
(textBox3.Text == ""))
{
MessageBox.Show("Некоректные данные");
}
else
{
a = Convert.ToDouble(textBox1.Text);
b = Convert.ToDouble(textBox2.Text);
eps = Convert.ToDouble(textBox3.Text);
do
{
h = (b - a) / n;
x = a;
res = 0;
while (x+h <= b)
{
res += h*(Math.Log(x) * Math.Log(x) + Math.Log(x + h) * Math.Log(x + h))/2.0;
x += h;
}
res2 = res;
n++;
an = Math.Abs(res2 - res1);
res1 = res;
} while (an > eps);
label2.Text = Convert.ToString(res) + " h = " + h;
chart1.Series[0].ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Spline;
for (x= a; x <= b; x += h)
{
res += h * (Math.Log(x) * Math.Log(x) + Math.Log(x + h) * Math.Log(x + h)) / 2.0;
chart1.Series[0].Points.AddXY(x, res);
}
}
}
private void chart1_Click(object sender, EventArgs e)
{
}
}
}