МВ до ЛР ПАМіКГ 11-12 (1 сем) (заочн)

Методичні вказівки до лабораторних робіт з дисципліни “Програмування, алгоритмічні мови і комп’ютерна графіка” для студентів спеціальності “Автоматика і автоматизація на транспорті”
Вступ
Дисципліни “Комп’ютерна техніка і організація обчислювальних робіт” та “Програмування і алгоритмічні мови” (ПАМ) є складовими комплексного навчального курсу “Комп’ютерні технології”. Метою дисципліни ПАМ є вивчення алгоритмізації і програмування задач науково-технічного характеру для ОС Windows сучасною об’єктно-орієнтованою мовою системи візуального програмування із застосуванням чисельних методів.
Лабораторна робота № 13 SEQ Lab \* MERGEFORMAT 14115 Чисельне інтегрування
Мета роботи: Навчитись застосовувати в програмуванні практичних задач оператори розгалуження і циклу.
13 SEQ пп.розд. \r 1 \* MERGEFORMAT 14115. Методичні поради до створення програми
Складемо програму, яка на заданому користувачем відрізку 13 EMBED Equation.DSMT4 1415 обчислює із заданою допустимою похибкою ( визначений інтеграл від вибраної ним зі списку функції y(x). Для обчислення інтеграла скористаємось інтуїтивно зрозумілим методом прямокутників, який використовується для геометричної інтерпретації визначеного інтеграла як площі, охопленої графіком функції.
Загальний інтервал інтегрування 13 EMBED Equation.DSMT4 1415 при обчисленні методом прямокутників розбивають на n елементарних інтервалів дискретизації dx. Довжина кожного елементарного інтервалу дискретизації dx=(b-a)/n. Границями елементарних інтервалів є точки x0, x1, x2,xn, де x0 = a, xn = b. На кожному з елементарних інтервалів площа трапецієподібної фігури, обмеженої графіком функції y(x), замінюється площею елементарного прямокутника, внаслідок чого приблизне значення інтеграла можна обчислити за формулою13 EMBED Equation.DSMT4 1415.
Похибка обчислення (n залежить від кількості прямокутників n. Наперед невідомо, яку кількість прямокутників n потрібно взяти, щоб одержати результат Sn із задовільною похибкою (n
·(. Тому користуються ітераційним методом, виконуючи обчислення декілька разів, поступово збільшуючи n і контролюючи поточну похибку (n. Під поточною похибкою будемо розуміти абсолютне значення різниці між поточним Sn і попереднім Sp результатом (а не точним, який невідомий). Обчислення зупиняють або після досягнення заданої точності (
·n
·
·), або після того, як кількість прямокутників досягне надто великого значення nmax. Остання умова виключає можливість нескінченного ітераційного процесу через неможливість досягнення заданої точності або через непомічені помилки в програмі.
Результатами обчислення будемо вважати значення інтеграла Sn, результуючу похибку (n і кількість елементарних прямокутників n, при якій ця похибка досягнута.
Вікно програми показане на рис. 5.1.

Рис. 5.1. Вікно програми для обчислення визначеного інтеграла
Основна частина тексту програми приведена нижче.
namespace WindAppIntegral
{
public partial class Form1 : Form
{
double a, b, eps;
double S, en;
int n;

public Form1()
{
InitializeComponent();

·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
(" Інтеграл від функції {0} в межах від {1} до {2}"
+ " із заданою допустимою похибкою {3} обчислений "
+ " з такими результатами: значення інтеграла {4:f5} ,"
+ " похибка {5:f5}, кількість елементарних інтервалів {6}\n",
listBox1.SelectedItem, a, b, eps, S, en, n));
}

private void button1_Click(object sender, EventArgs e)
{
try
{
InpData(out a, out b, out eps);
}
catch
{
MessageBox.Show("Помилка запису числа", "Увага!");
return;
}
CalcIntegral(a, b, eps, out S, out en, out n);
OutResult(a, b, eps, S, en, n);
}
}
}
Основна обчислювально-керуюча процедура Button1_Click викликає зовнішні по відношенню до неї методи InpData, CalcIntegral, OutResult. У цій програмі для створення списку функцій скористаємось компонентом ListBox. Список функцій 13 EMBED Equation.DSMT4 1415; 13 EMBED Equation.DSMT4 1415; 13 EMBED Equation.DSMT4 1415; 13 EMBED Equation.DSMT4 1415; 13 EMBED Equation.DSMT4 1415; 13 EMBED Equation.DSMT4 1415; запишемо як значення властивості Items компонента ListBox, скориставшись редактором цієї властивості, який викликається кнопкою з трьома крапками в полі значення властивості. Пошук і обчислення вибраної користувачем функції реалізований оператором вибору switch в функції Fy однієї змінної х. Процедура CalcIntegral написана у повній відповідності до схеми алгоритму на рис. 5.2.

Риc. 5.2 Схема алгоритму процедури обчислення інтегралу
13 SEQ пп.розд. \* MERGEFORMAT 14215. Порядок виконання роботи
Запустити Visual Studio. В меню обрати File/New/Project.
У вікні New Project вибрати Visual C#, Windows Application.
Відкоригувати шлях до файлів проекту (кнопка Browse). Якщо після корекції шляху до проекту поставити позначку біля надпису “Create directory for solution”, то буде автоматично створений каталог для файлів проекту.
Розмістити на формі програми, яка створюється, необхідні компоненти (рис. 5.1).
Відповідно до вищенаведеного, створити текст програми, яка обчислює визначений інтеграл методом прямокутників.
Виконати програму для всіх вказаних в тексті програми функцій на довільному відрізку 13 EMBED Equation.DSMT4 1415 з довільною похибкою. Результати занести до звіту з лабораторних робіт.
13 SEQ пп.розд. \* MERGEFORMAT 14315. Зміст звіту
Номер, тема і мета лабораторної роботи.
Постановка задачі.
Малюнок вікна програми.
Схема алгоритму процедури обчислення інтегралу (рис. 5.2).
Текст програми.
Результати виконання програми.
Висновок про відповідність виконаної роботи завданню.
13 SEQ пп.розд. \* MERGEFORMAT 14415. Контрольні запитання
Призначення компонента Form.
Призначення компонента Button.
Призначення компонента TextBox.
Призначення компонента Label.
Оператор switch.
Цикл for.
Цикл while.
Створення методу-функції.
13 MACROBUTTON MTEditEquationSection2 Equation Section 213 SEQ MTEqn \r \h \* MERGEFORMAT 1513 SEQ MTSec \r 2 \h \* MERGEFORMAT 1515Лабораторна робота № 13 SEQ Lab \* MERGEFORMAT 14215 Статистична обробка одновимірного масиву
Мета роботи: Навчитись створювати, обробляти і виводити на екран одновимірний масив числових даних.
13 SEQ пп.розд. \r 1 \* MERGEFORMAT 14115. Методичні поради до створення програми
У програмі мова йтиме про створення масиву цілих випадкових чисел і його статистичну обробку. Для масиву із n рівномірно розподілених в заданому діапазоні [k,m] цілих випадкових чисел будемо розраховувати статистичні параметри розподілення. В створюваній програмі користувач задаватиме границі k і m інтервалу випадкових цілих чисел і їх кількість n. Програма обчислюватиме середньоарифметичне значення Sa масиву чисел і середньоквадратичне відхилення Skv від середнього значення. У процесі статистичної обробки n-елементного масиву X випадкових чисел середнє значення Sa і середньоквадратичне відхилення Skv чисел масиву
·xi від середнього значення будемо обчислювати за такими формулами:
13 EMBED Equation.DSMT4 1415, 13 MACROBUTTON MTPlaceRef \* MERGEFORMAT 13 SEQ MTEqn \h \* MERGEFORMAT 15(13 SEQ MTSec \c \* Arabic \* MERGEFORMAT 14215.13 SEQ MTEqn \c \* Arabic \* MERGEFORMAT 14115)15
13 EMBED Equation.DSMT4 1415. 13 MACROBUTTON MTPlaceRef \* MERGEFORMAT 13 SEQ MTEqn \h \* MERGEFORMAT 15(13 SEQ MTSec \c \* Arabic \* MERGEFORMAT 14215.13 SEQ MTEqn \c \* Arabic \* MERGEFORMAT 14215)15
Програма буде також обчислювати статистичне розподілення ймовірності pj випадкових чисел в масиві. Розподілення ймовірності pj визначає ймовірність появи кожного числового значення j в заданому діапазоні значень [k,m]. Статистична (експериментальна) ймовірність обчислюється за формулою: 13 EMBED Equation.DSMT4 1415, де nj – кількість появ числа j серед загальної кількості n чисел в масиві. При 13 EMBED Equation.DSMT4 1415 статистичне розподілення наближається до теоретичного.
Вікно програми показане на рис. 7.1.

Рис. 7.1. Вікно програми статистичної обробки масиву
Основна частина тексту програми приведена нижче.
namespace StatParamMas
{
public partial class Form1 : Form
{
int k, m, n;
double Sa, Skv;

public Form1()
{
InitializeComponent();
numericUpDown1.Value = -5;
numericUpDown2.Value = 5;
numericUpDown3.Value = 200;
}

private void button1_Click(object sender, EventArgs e)
{
InpData ( out k, out m, out n);
int[] V1 = new int[n];
double[] V2 = new double[m - k];
FillMasV1( k, m, n, V1);
OutMasV1(V1);
CalcSaSkv(out Sa, out Skv, V1);
OutSaSkv(Sa, Skv);
CalcMasV2(k, V1, V2);
OutMasV2(V2); //k,
}

private void buttonExit_Click(object sender, EventArgs e)
{
Close();
}

private void InpData (out int k, out int m, out int n)
{
k = Convert.ToInt32(numericUpDown1.Value);
m = Convert.ToInt32(numericUpDown2.Value);
n = Convert.ToInt32(numericUpDown3.Value);
}

private void FillMasV1(int k, int m, int n, int[] V1)
{
Random rnd = new Random();
for (int i = 0; i < n; i++)
V1[i] = rnd. Next(k,m);
}

private void OutMasV1(int[] V1)
{
textBox3.Clear();
int i = 0;
foreach( int x in V1)
textBox3.AppendText
(string.Format(" {0} {1} \n" , i++, x));
}

private void CalcSaSkv(out double Sa, out double Skv, int[] V1)
{
int S=0;
for (int i = 0; i < V1.Length; i++) S = S + V1[i];
Sa = (double) S / n;
S = 0;
foreach (int x in V1) Sа = S + (x-Sa)*(x-Sa);
Skv = Math.Sqrt((double)(S / n));
}

private void OutSaSkv(double Sa, double Skv)
{
textBox1.Text = Convert.ToString(Sa);
textBox2.Text = Convert.ToString(Skv);
}

private void CalcMasV2(int k, int[] V1, double[] V2)
{
int q = k;
int S;
for (int j = 0; j < V2.Length; j++)
{
S = 0;
foreach (int x in V1) if (x == q) S += 1;
V2[j] = (double) S / n;
q += 1;
}
}

private void OutMasV2(double[] V2)
{
textBox4.Clear();
//int L = k;
for (int j = 0; j < V2.Length; j++)
textBox4.AppendText
(string.Format(" {0} {1:f5} \n", k+j, V2[j]));
}
}
}
Застосовані масиви V1 і V2. Масив V1 – це заданий масив n цілих випадкових чисел з інтервалу [k,m). Зверніть увагу на відкритість інтервалу з правої сторони. Це означає, що число b не є елементом масиву. V2 – це масив ймовірностей pj появи чисел від k до m в масиві V1. Кількість елементів в масиві V2 дорівнює k=(m-k). Алгоритм програми видний з тексту методу-процедури button1_Click, в якій
вводяться значення полів-змінних програми k, m, n,
створюються масиви V1, V2,
заповнюється випадковими числами масив V1,
виводиться масив V1 на екран,
обчислюються величини Sa і Skv,
виводяться на екран величини Sa і Skv,
обчислюється масив ймовірностей V2,
виводиться на екран масив V2.
13 SEQ пп.розд. \* MERGEFORMAT 14215. Порядок виконання роботи

Запустити Visual Studio. В меню обрати File/New/Project.
У вікні New Project вибрати Visual C#, Windows Application.
Відкоригувати шлях до файлів проекту (кнопка Browse). Якщо після корекції шляху до проекту поставити позначку біля надпису “Create directory for solution”, то буде автоматично створений каталог для файлів проекту.
Розмістити на формі програми, яка створюється, необхідні компоненти (рис. 7.1).
Відповідно до вищенаведеного, створити текст програми, яка створює масив цілих випадкових чисел, обчислює його середнє арифметичне та середньоквадратичне відхилення.
Виконати програму для 10-и елементного одновимірного масиву на довільному інтервалу 13 EMBED Equation.DSMT4 1415. Результати занести до звіту з лабораторних робіт.
Перевірити результат обчислення програми. Для цього власноручно за виразами 13 GOTOBUTTON ZEqnNum839665 \* MERGEFORMAT 13 REF ZEqnNum839665 \! \* MERGEFORMAT 14(2.1)1515, 13 GOTOBUTTON ZEqnNum741292 \* MERGEFORMAT 13 REF ZEqnNum741292 \! \* MERGEFORMAT 14(2.2)1515 обчислити 13 EMBED Equation.DSMT4 1415 та 13 EMBED Equation.DSMT4 1415 для вказаного вище 10-и елементного масиву.
Порівняти результати обчислення.
13 SEQ пп.розд. \* MERGEFORMAT 14315. Зміст звіту
Номер, тема і мета лабораторної роботи.
Постановка задачі.
Малюнок вікна програми.
Текст програми.
Результати виконання програми та їх перевірка.
Висновок про відповідність виконаної роботи завданню.
13 SEQ пп.розд. \* MERGEFORMAT 14415. Контрольні запитання
Цикл for.
Оператор foreach.
Об’ява змінної одновимірного масиву.
Клас Random.
Створення методу-процедури.
Зміст
13 TOC \h \z \t "Дназв.п.розд.;1" 1413 LINK \l "_Toc303696422" 14Лабораторна робота № 1 Чисельне інтегрування 13 PAGEREF _Toc303696422 \h 1411515
13 LINK \l "_Toc303696423" 1413 MACROBUTTON MTEditEquationSection2 Equation Section 213 SEQ MTEqn \r \h \* MERGEFORMAT 1513 SEQ MTSec \r 2 \h \* MERGEFORMAT 1515Лабораторна робота № 2 Статистична обробка одновимірного масиву 13 PAGEREF _Toc303696423 \h 1461515
13 LINK \l "_Toc303696424" 14Перелік літератури 13 PAGEREF _Toc303696424 \h 14111515
15Перелік літератури
Основна
13 SEQ Літ.джерело \* ARABIC 14115. Павловская Т. А. C#. Программирование на языке высокого уровня. Питер, 2007. -432 с.
13 SEQ Літ.джерело \* ARABIC 14215. Фаронов В. В. Программирование на языке С#. Питер, 2007. -240 с.
13 SEQ Літ.джерело \* ARABIC 14315. Эндрю Троелсен. C# и платформа NET. Питер, 2007. -796 с.
Додаткова
13 SEQ Літ.джерело \* ARABIC 14415. Агуров П. В. C#. Сборник рецептов. БХВ-Петербург,2007. -432 с.
13 SEQ Літ.джерело \* ARABIC 14515. Абрамян М. Э. Visual C# на примерах. БХВ-Петербург,2008. -496 с.








13PAGE 14715


13PAGE 14815




Root EntryEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation Native

Приложенные файлы

  • doc 1385067
    Размер файла: 174 kB Загрузок: 0

Добавить комментарий