DevioLab CRYPTO TRADING AUTOMATION
LIVE
AUTOMATED CRYPTO TRADING • BINANCE
Автоматизуйте свій криптопортфель
Торгові боти DevioLab аналізують крипторинок, автоматично відкривають і закривають позиції та керують вашим портфелем на Binance 24/7.
CRYPTO 80 Bots
BINANCE Spot Trading
TRADING 24 / 7
Спробувати DevioLab
deviolab.com

КМДСК

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

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

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

Рік:
2013
Тип роботи:
Курсова робота
Предмет:
Комп’ютерні методи дослідження систем керування
Варіант:
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:03

Коментарі

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

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

Нічого не вибрано
0%

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

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

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

Admin

26.02.2023 12:38

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