Расчет определенного интеграла методом трапеции с заданной точностью - C#

Узнай цену своей работы

Формулировка задачи:

С математикой не очень дружу. Не могу формулу никак сделать . Форум просматривал но там с заданным количеством отрезком. Интеграл Ln2x. Не могу никак с точностью определиться,сегодня сдавать а я попутно еще бд делаю мозг разрываеться
Листинг программы
  1. private void button1_Click(object sender, EventArgs e)
  2. {
  3. double a, b, n = 1, h, res;
  4. double sum = 0, xi = 0, xi1;
  5. double eps;
  6. double an = 0;
  7.  
  8. if ((textBox1.Text == "") || (textBox2.Text == "") || (Convert.ToDouble(textBox1.Text) < 0)||
  9. (textBox3.Text == ""))
  10. {
  11. MessageBox.Show("Некоректные данные");
  12. }
  13. else
  14. {
  15. a = Convert.ToDouble(textBox1.Text);
  16. b = Convert.ToDouble(textBox2.Text);
  17. eps = Convert.ToDouble(textBox3.Text);
  18. h = (b - a) / n;
  19. do
  20. {
  21. h = (b - a) / n;
  22. for (int i = 0; i < n; i++)
  23. {
  24. xi = a + i * h;
  25. xi1 = a + (i + 1) * h;
  26. sum += (Math.Log(xi) * Math.Log(xi) + Math.Log(xi1) * Math.Log(xi1));
  27. }
  28. n++;
  29. an -= sum;
  30. } while (Math.Abs(an) > eps);
  31. res = sum * h /2;
  32. label2.Text = Convert.ToString(res);
  33. /* chart1.Series[0].ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Spline;
  34. for (int i = 0; i < n; i++)
  35. chart1.Series[0].Points.AddXY(xi, n);*/
  36. }
  37. }

Решение задачи: «Расчет определенного интеграла методом трапеции с заданной точностью»

textual
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Windows.Forms;
  9.  
  10. namespace WindowsFormsApplication1
  11. {
  12.     public partial class Form1 : Form
  13.     {
  14.         public Form1()
  15.         {
  16.             InitializeComponent();
  17.         }
  18.  
  19.         private void Form1_Load(object sender, EventArgs e)
  20.         {
  21.  
  22.         }
  23.  
  24.         private void button1_Click(object sender, EventArgs e)
  25.         {          
  26.          
  27.             double a, b, n = 10, h, res,res1 = 0,res2;
  28.             double x;
  29.             double eps;
  30.             double an = 0;
  31.  
  32.          
  33.            
  34.  
  35.            
  36.            
  37.             if ((textBox1.Text == "") || (textBox2.Text == "") || (Convert.ToDouble(textBox1.Text) < 0)||
  38.                 (textBox3.Text == ""))
  39.             {
  40.                 MessageBox.Show("Некоректные данные");
  41.             }
  42.             else
  43.             {
  44.                 a = Convert.ToDouble(textBox1.Text);
  45.                 b = Convert.ToDouble(textBox2.Text);
  46.                 eps = Convert.ToDouble(textBox3.Text);
  47.                
  48.  
  49.                 do
  50.                 {
  51.                     h = (b - a) / n;
  52.                     x = a;
  53.                     res = 0;
  54.                      while (x+h <= b)
  55.                            {
  56.                              res += h*(Math.Log(x) * Math.Log(x) + Math.Log(x + h) * Math.Log(x + h))/2.0;
  57.                               x += h;
  58.                            }
  59.  
  60.                      res2 = res;
  61.                     n++;
  62.                    
  63.                     an = Math.Abs(res2 - res1);
  64.                     res1 = res;
  65.                 } while (an > eps);
  66.              
  67.                 label2.Text = Convert.ToString(res)  + " h = " + h;
  68.                 chart1.Series[0].ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Spline;
  69.                 for (x= a; x <= b; x += h)
  70.                 {
  71.                     res += h * (Math.Log(x) * Math.Log(x) + Math.Log(x + h) * Math.Log(x + h)) / 2.0;                        
  72.                     chart1.Series[0].Points.AddXY(x, res);
  73.                 }
  74.  
  75.                    
  76.  
  77.             }
  78.         }
  79.  
  80.         private void chart1_Click(object sender, EventArgs e)
  81.         {
  82.  
  83.         }
  84.  
  85.     }
  86.          
  87. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4.4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы