Главная

Популярная публикация

Научная публикация

Случайная публикация

Обратная связь

ТОР 5 статей:

Методические подходы к анализу финансового состояния предприятия

Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века

Ценовые и неценовые факторы

Характеристика шлифовальных кругов и ее маркировка

Служебные части речи. Предлог. Союз. Частицы

КАТЕГОРИИ:






Обчислити інтеграл методом прямокутників, трапецій, парабол, трьох восьмих, Монте-Карло оцінити абсолютну та відносну похибку обчислення

А) заданий інтеграл обчислити наближено та точно

B) заданий інтеграл обчислити наближено

1. 2. 3.

Текст програми:

using System;

using System.Windows.Forms;

 

namespace Numerical_Methods_Lab2

{

public partial class Form1: Form

{

double[] x = new double[2];

double[] y = new double[2];

int n = 10;

public Form1()

{

InitializeComponent();

label5.Text = "";

}

private void button1_Click(object sender, EventArgs e)

{

n = Convert.ToInt32(textBox5.Text);

x[0] = Convert.ToDouble(textBox1.Text);

x[1] = Convert.ToDouble(textBox2.Text);

y[0] = Convert.ToDouble(textBox3.Text);

y[1] = Convert.ToDouble(textBox4.Text);

if (radioButton1.Checked)

{

label5.Text = "Метод прямокутників: " + Rectangle_M(n).ToString("0.0000000");

label5.Text += "\r\nМетод трапецій: " + Trapeze_Method(n).ToString("0.0000000");

label5.Text += "\r\nМетод парабол: " + Simpson_M(n).ToString("0.0000000");

label5.Text += "\r\nМетод трьох-восьмих: " + TV_Method(n).ToString("0.0000000");

label5.Text += "\r\nМетод Монте-Карло: " + Monte_Carlo_Method(true).ToString("0.0000000");

}

if (radioButton2.Checked)

label5.Text = "Метод Монте-Карло: " + Monte_Carlo_Method(false).ToString("0.0000000");

if (radioButton3.Checked)

{

x[0] = 1;

label5.Text = "Метод прямокутників: " + Rectangle_M(n).ToString();

label5.Text += "\r\nМетод трапецій: " + Trapeze_Method(n).ToString();

label5.Text += "\r\nМетод парабол: " + Simpson_M(n).ToString();

label5.Text += "\r\nМетод трьох-восьмих: " + TV_Method(n).ToString();

}

}

public double Rectangle_M(int n)

{

double s = 0;

double h = (x[1] - x[0]) / n;

for (int i = 0; i < n; i++)

s += Func(x[0] + h * i);

return s * h;

}

public double Trapeze_Method(int n)

{

double h = (x[1] - x[0]) / n;

double s = 0;

for (int i = 1; i < n; i++)

s += Func(x[0] + h * i);

return h * ((Func(x[0]) + Func(x[1])) / 2 + s);

}

public double Simpson_M(int n)

{

double h = (x[1] - x[0]) / n;

double s = 0;

int p = 4;

for (int i = 1; i < n; i++)

{

s += p * Func(x[0] + h * i);

p = 6 - p;

}

return h / 3 * (Func(x[0]) + Func(x[1]) + s);

}

public double TV_Method(int n)

{

double s = 0;

double h = (x[1] - x[0]) / (3.0 * n);

for (int i = 1; i < 3 * n; i++)

{

if (i % 3 > 0)

s += 3 * Func(x[0] + i * h);

else

s += 2 * Func(x[0] + i * h);

}

s += Func(x[0]) + Func(x[1]);

s *= 3.0 / 8 * h;

return s;

}

public double Monte_Carlo_Method(bool ss)

{

Random rn = new Random();

double s = 0, xx, yy, z;

int n = 1000000;

int k1 = 0, k2 = 0;

 

double h = (x[1] - x[0]) / (3 * n);

if (ss)

{

for (int i = 0; i < n; i++)

{

xx = (double)rn.Next((int)x[0], (int)x[1]);

yy = (double)rn.Next()/ (double)Int32.MaxValue * 100 - 50;

if ((Func(xx) >= 0) && (yy >= 0) && (yy <= Func(xx)))

k1++;

if ((Func(xx) < 0) && (yy < 0) && (yy > Func(xx)))

k2++;

}

return s = (x[1] - x[0]) * 100 * (double)k1 / n - (x[1] - x[0]) *100 * (double)k2/ n;

}

else

{

for (int i = 0; i < n; i++)

{

xx = (double)rn.Next() / (double)Int32.MaxValue * x[1] + x[0];

yy = (double)rn.Next() / (double)Int32.MaxValue * y[1] + y[0];

z = (double)rn.Next() / (double)Int32.MaxValue * 100 - 50;

if ((Func(xx, yy) >= 0) && (z >= 0) && (z <= Func(xx, yy)))

k1++;

if ((Func(xx, yy) < 0) && (z < 0) && (z > Func(xx, yy)))

k2++;

}

return s = (x[1] - x[0]) * (y[1] - y[0]) * 100 * (double)k1 / n - (x[1] - x[0]) * (y[1] - y[0]) * 100 * (double)k2 / n;

}

}

 

public double Func(double x, double y = 1)

{

if (radioButton1.Checked || radioButton2.Checked)

return y * Math.Tan(x / 26);

else

return (Math.Exp(-26 * x * x) - Math.Exp(-52 * x * x)) / (x * x);

}

}

}

 

 

Результат виконання програми:

Висновок: Під час виконання цієї лабораторної роботи я вивчив методи наближених обчислень визначених інтегралів.

 

<== предыдущая лекция | следующая лекция ==>
27 страница. – А оружие, Ларки? «Колебатель Земли»? | Цвет: зразы коричневые; соус: темно-коричневый, блестящий_____________________________


Не нашли, что искали? Воспользуйтесь поиском:

vikidalka.ru - 2015-2024 год. Все права принадлежат их авторам! Нарушение авторских прав | Нарушение персональных данных