Блок-схема метода Парабол приведена на рисунке
Зарегистрируйся в два клика и получи неограниченный доступ к материалам,а также промокод на новый заказ в Автор24. Это бесплатно.
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 integral
{
public partial class Form1 : Form
{
int kol_razbien=0;
double a = 0;//границы интегрирования
double b = 0;//границы интегрирования
public Form1()
{
InitializeComponent();
}
//проверка корректности границ интеграла
static bool proverka(int numfun, string sa, string sb, ref double a, ref double b)
{
if (!double.TryParse(sa, out a) )
{
MessageBox.Show("Проверьте ввод левой границы");
return false;
}
if (!double.TryParse(sb, out b) )
{
MessageBox.Show("Проверьте ввод правой границы");
return false;
}
if (b=a)
{
MessageBox.Show("b должно быть больше а");
return false;
}
if ((numfun==0) && (a=-1) && (b=-1))
{
MessageBox.Show("функция EXP(x)/(x+1) на данном интервале неопределена (деление на ноль) ");
return false;
}
return true;
}
//вычисление значения функции
double fx( double x, int nfun)
{
switch (nfun)
{
case 0:
return Math.Exp(x)/(x+1) ;
break;
case 1:
return x*(x-1) ;
break;
case 2:
return 3 * Math.Sin(x - 4) + 7;
break;
default:return 0;
}
}
//вычисление методом парабол (симпсона)
double Simpson(double a, double b, int nn, int numf)
{
double dx, c, c1, f,j;
int i;
dx = (b - a) / nn; // шаг по x
c = a;
c1 = a + dx / 2;
f = fx(a, numf) + fx(b, numf) + 4 * fx(c1, numf);
for (i = 1; i = nn - 1; i++)
{
c = c + dx;
c1 = c1 + dx;
f = f + 2 * fx(c, numf) + 4 * fx(c1, numf); // накопление суммы
}
j = (dx / 6) * f; // значение интеграла
return j;
}
private void button1_Click(object sender, EventArgs e)
{
//выбор функции
string namefun="";
int numberf = 0;
if (radioButton1.Checked) {numberf = 0; namefun="EXP(x)/(x+1) |";}
if (radioButton2.Checked){ numberf = 1;namefun="x*(x-1) |";}
if (radioButton3.Checked) {numberf = 2; namefun="3*sin(x-4)+7 |";}
//проверка заполнения полей
if (!proverka(numberf, textBox1.Text, textBox2.Text, ref a, ref b)) return;
kol_razbien=Int32.Parse(comborazb.Text); //считываем количество отрезков
//функция вычисления интеграла
//форматированый вывод результатов
string astr = String.Format("{0,5:0.0}", a);
string bstr = String.Format("{0,5:0.0}", b);
//высчитываем интеграл
string simps = String.Format("{0,12:f6}", Simpson(a, b, kol_razbien, numberf));
string kol_razbienstr = String.Format("{0,10:0}", kol_razbien);
textBox3.Text += namefun + astr + "|" + bstr + "|" + kol_razbienstr + "|" + simps + "|\r\n";
}
private void Form1_Load(object sender, EventArgs e)
{
radioButton1.Checked=true;; //выбираем 1-ю функцию
comborazb.SelectedIndex=0; //устанавливаем количество разбиений
//вывод шапки в поле Memo
textBox3.Text+=" Функция | a | b | Кол.отр
Зарегистрируйся, чтобы продолжить изучение работы
50% курсовой работы недоступно для прочтения
Закажи написание курсовой работы по выбранной теме всего за пару кликов. Персональная работа в кратчайшее время!