КМДСК

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Кафедра КСА

Інформація про роботу

Рік:
2012
Тип роботи:
Курсова робота
Предмет:
Комп’ютерні методи дослідження систем керування
Варіант:
36

Частина тексту файла (без зображень, графіків і формул):

Міністерство освіти науки молоді та спорту України Національний університет „ Львівська політехніка “ Кафедра КСА Курсова робота з дисципліни “ КОМП’ЮТЕРНІ МЕТОДИ ДОСЛІДЖЕННЯ СИСТЕМ КЕРУВАННЯ ” Варіант 36 Зміст Теоретичні відомості......………………………………………………………………………...………....3 Завдання.................................................................................................................................................................5 Виведення системи диференціальних рівнянь…………………………………….……...…...6 Блок-схема алгоритму…..…………………………………………………………...………………….…8 Програма………………………………………………………………………………………..........................9 Графічні результати перехідних процесів….……………………………….…………………13 Висновок…………………………………………………………………………………………………….….16 Теоретичні відомості 1. Метод Рунге-Кутта Метод Рунге-Кутта об’єднує ціле сімейство методів розв’язування диференціальних рівнянь першого порядку. Найбільш часто використовується метод четвертого порядку, який просто називають“методом Рунге-Кутта”. В методі Рунге-Кутта значенняфункції, як і в методіЕйлера, визначається за формулою  (1) Якщорозкластифункцію в ряд Тейлора і обмежитись членами до включно, то прирістможназаписати у вигляді  (2) Замість того, щоб обчислювати члени ряду за формулою (2) в методі Рунге-Кутта використовують наступні формули.  Це метод четвертого порядку точності. Похибка на кожному кроці має порядок .Таким чином метод Рунге-Кутта забезпечує значно вищу точність ніж метод Ейлера, однак вимагає більшого об’єму обчислень ніж метод Ейлера. Це досить часто дозволяєзбільшитикрок. 2. Поліноміальна апроксимація нелінійних характеристик елементів Метод Кубічних сплайнів У випадку коли ми хочемо виконати апроксимацію функції заданої у вигляді таблиці, дуже часто використовують сплайн-функції, а найбільш поширеним є кубічний сплайн. Він дозволяє виконати апроксимацію функції за двома точками та значеннями похідних в цих точках. Таким чином, така апроксимація забезпечує проходження функції через задані точки з заданим нахилом. Цей підхід виявися дуже практичним, бо дозволяє розбивати табличну функцію на частини і отримувати неперервну і гладку апроксимацію. Гладкість даної апроксимації забезпечується фіксацією першої похідної в усіх заданих точках апроксимації. Формула кубічного сплайну має вигляд  (3) де  - кубічний сплайн;  - табличні значення функції;  - крок сплайну;  - значення похідних в точках апроксимації. Наведемо вирази для коефіцієнтів сплайну  (4) де  - табличні значення аргументу. Крок сплайну слід визначати за формулою . Варіант 36 Метод: Рунге-Кутта (формули г)). Дані параметрів схеми:   Апроксимація залежності  виконується з вибором розрахункової формули  де  - кубічний сплайн. Напруга живлення задана на рисунку, де . Виведення системи диференціальних рівнянь 1. Рівняння струмів і напруг Перший закон Кірхгофа 1: i1=i2+i3; 2: i3=i4; Другий закон Кірхгофа  2. Рівняння елементів схеми  За законом Ома:    3. Диференціальні рівняння системи, записані в нормальній формі Коші  4. Диференціальні рівняння системи в нормальній формі Коші в матричній формі   Блок-схема алгоритму Метод Рунге-Кутта   Програма розв’язування системи диференціальних рівнянь методом Рунге-Кутта з постійним кроком інтегрування Остаточна версія програми: 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; using System.IO; namespace Kursova { public partial class Form1 : Form { const double Umax = 100, R1 = 23, R2 = 3, R3 = 33, Lmin = 0.1, Lmax = 1, L2 = 2, C2 = 2, a = 0.1, T = a, imin = 1, imax = 2, f = 50, n = 3, h = 2 * a / 500; double L1 = Lmax; public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { double t = 0, i1, i3, UC1; double[] Y = new double[3] { 0, 0, 0 }; double[] Y0 = new double[3] { 0, 0, 0 }; double[] F = new double[3]; double[] K1 = new double[3]; double[] K2 = new double[3]; double[] K3 = new double[3]; double[] K4 = new double[3]; DY(ref F, t, Y); StreamWriter sw0 = new StreamWriter("datI1.txt"); StreamWriter sw1 = new StreamWriter("datI3.txt"); StreamWriter sw2 = new StreamWriter("datUC1.txt"); StreamWriter sw3 = new StreamWriter("datU1.txt"); do { for (int i = 0; i < n; i++) { K1[i] = h * F[i]; Y[i] = Y0[i] + K1[i] / 3; } t += h / 3.0; DY(ref F, t, Y); for (int i = 0; i < n; i++) { K2[i] = h * F[i]; Y[i] = Y0[i] - K1[i]/3 + K2[i]; } t += 2*h/3.0; DY(ref F, t, Y); for (int i = 0; i < n; i++) { K3[i] = h * F[i]; Y[i] = Y0[i] + K1[i] - K2[i] + K3[i]; } t += h; DY(ref F, t, Y); for (int i = 0; i < n; i++) { K4[i] = h * F[i]; Y[i]=Y0[i]+(K1[i]+3*K2[i]+3*K3[i]+K4[i])/8.0; Y0[i] = Y[i]; } i1 = Y[0]; i3 = Y[1]; UC1 = Y[2]; sw0.WriteLine(t + " " + i1); sw1.WriteLine(t + " " + i3); sw2.WriteLine(t + " " + UC1); sw3.WriteLine(t + " " + U1); } while (t <= (100 * a)); sw0.Close(); sw1.Close(); sw2.Close(); sw3.Close(); } double U1; void DY(ref double[] F, double t, double[] Y) { U1 = ((t - ((int)(t / a) * a)) * 20 - 10 * a) / a; double H = imax - imin; if (Math.Abs(Y[0]) <= imin) L1 = Lmax; else if (Math.Abs(Y[0]) > imin && Math.Abs(Y[0]) < imax) { double b1 = (2 * (Y[0] - imin) + H) * (imax - Y[0]) * (imax - Y[1]); double b2 = (2 * (imax - Y[0]) + H) * (Y[0] - imin) * (Y[0] - imin); double b3 = (Y[0] - imin) * (imax - Y[0]) * (imax - Y[0]); double b4 = (Y[0] - imax) * (Y[0] - imin) * (Y[0] - imin); L1 = (b1 * Lmax + b2 * Lmin) / H * H * H; } else if (Math.Abs(Y[0]) >= imax) L1 = Lmin; F[0] = (-U1 + Y[0] * R1 + R3 * (Y[0] - Y[1])) / L1; F[1] = (-R3 * (Y[0] - Y[1]) + Y[1] * R1 + Y[2]) / L2; F[2] = Y[1] / C2; } } } Графічні результатиперехідних процесів Графік залежності U1 (t)вхідна величина.  Графік залежності i1 (t)  Графік залежності i3(t)  Графік залежності (t)  Графік залежності (t) вихідна величина  Висновок В даній курсовій роботі я досліджувала RLC-ланку із заданими параметрами. Виконав апроксимацію нелінійної індуктивності котушки методом кубічних сплайнів , написала програму для розв’язування системи диференційних рівнянь методом Рунге-Кутта, побудувала часові графіки залежностей напруг на конденсаторах, вихідної та вхідної напруги.
Антиботан аватар за замовчуванням

09.06.2013 23:06-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!