Расчет определенного интеграла методом трапеции с заданной точностью - 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) { } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д