Зміст.
Зміст.
1. Завдання.
2. Виведення системи диференціальних рівнянь.
3. Теоретичні відомості
3.1 Модифікований метод Ейлера
3.2 Метод Рунге-Кутта .
4. Програми.
5. Результати виконання програм..
6. Графіки одержаних результатів.
7.Список використаної літератури.
1. Завдання.
Тема № 2
АВТОМАТИЧНИЙ ПОТЕНЦІОМЕТР З МАГНІТНИМ ПІДСИЛЮВАЧЕМ
Схема:
Рівняння ланок :
1.вимірювальна схема
2.електронний підсилювач
3.магнітний підсилювач
4.двигун
5.редуктор
Параметри
10
(m (рад)
4
Un (мв)
70
Cu (г.см.в)
8
C( (г.см.сек/рад)
2
IД (г.см.сек2)
0,02
І (г.см.сек2)
4
кМ
15
Т (сек)
0,04
і
30
2.Виведення системи диференціальних рівнянь
МП - Т + e2 = км e1
ЕП - U = кп ·e2
2х фазний двигун змінного струму
I = CuU — C ω
Редуктор
Вимірювальна схема
е1 = (вх — вих)
Необхідно звести ці рівняння до системи ЗДР I-го порядку
T + e2 = км(вх — вих)
Розв ‘ язуємо відносно = (вх — вих) —
Це перше рівняння системи
У рівняння (3) підставляємо (2) та (4), при цьому з рівняння (4) знаходимо
ω = = i =
I = CuU — C ω ;
I = Cu· кпe2 — C ω· ω
I=Iд+ Iн/ i2 = (1— ) —
=
=
Таблиця ідентифікаторів
I — I1
(m — QM
Un — UN
T — T
Cu — CU KU – вибір експериментів
C ω — CW
Id — ID
In — IN
E2 —Y(1)
(вих — Y(2)
ω — Y(3)
— F(1)
— F(2)
— F(3) II=ID+IN/(I1*I1)
Систему звичайних диф. рівнянь запишемо у вигляді підпрограми
F(1)=KM*UN/(T*QM)*(1-Y(2))-Y(1)/T
F(2)=Y(3)/I1
F(3)= (CU*KU*Y(1)-CW*Y(3))/ І1
3. Теоретичні відомості 3.1 Опис модифікованого метода Ейлера.
В модифікованому методі Ейлера спочатку обчислюється значення функції в наступній точці за звичайним методом Ейлера.
Метод Ейлера є найпростішим методом розв’язування задачі Коші. Він дозволяє інтегрувати ДР першого порядку виду.
(19)
Метод Ейлера базується на розкладі функції в ряд Тейлора в околі точки
(20)
Якщо мале, то, знехтувавши членам розкладу, що містять в собі і т.д. отримаємо
(21)
Похідну знаходимо з рівняння (4), підставивши в нього початкову умову. Таким чином можна знайти наближене значення залежної змінної при малому зміщенні від початкової точки. Цей процес можна продовжувати, використовуючи співвідношення.
,
роблячи як завгодно багато кроків.
Похибка методу має порядок , оскільки відкинуті члени, що містять в другій і вище степенях.
Недолік методу Ейлера - нагромадження похибок, а також збільшення об’ємів обчислень при виборі малого кроку з метою забезпечення заданої точності.
В методі Ейлера на всьому інтервалі тангенс кута нахилу дотичної приймається незмінним і рівним .
Очевидно, що це призводить до похибки, оскільки кути нахилу дотичної в точках та різні. Точність методу можна підвищити, якщо покращити апроксимацію похідної
(22)
Воно використовується для обчислення наближеного значення похідної в кінці інтервалу .
Обчисливши середнє між цим значенням похідної та її значенням на початку інтервалу, знайдемо більш точне значення :
(23)
В обчислювальній практиці використовується також метод Ейлера-Коші з ітераціями: знаходиться грубе початкове наближення (за звичайним методом Ейлера)
будується ітераційний процес
(24)
Ітерації продовжують до тих пір, доки два послідовні наближення не співпадуть з заданою похибкою . Якщо після декількох ітерацій співпадіння нема, то потрібно зменшити крок .
3.2 Опис метода Рунге кутта з автоматичною змiною кроку.
Диференціальне рівняння (ДР), що містить лише одну незалежну змінну і похідні за нею, називають звичайними (ДР). ДР, що містить декілька незалежних змінних і похідні за ними, називають рівняння в частинних похідних.
Порядком ДР називається найвищий порядок похідної (або диференціалу), який входить в рівняння. Звичайне ДР (ЗДР) -го порядку в загальному випадку має незалежну змінну, невідому функцію та її похідні до -го порядку включно:
- незалежна змінна;
- невідома функція (залежна змінна);
- похідні цієї функції.
Диференціальне рівняння -го порядку, розв’язане відносно старшої похідної, може бути записано у вигляді:
Щоб розв’язати ЗДР, необхідно мати значення залежної змінної та (або) її похідних при деяких значення незалежної змінної.
В методі Рунге-Кутта значення функції визначається за формулою
Якщо розкласти функцію в ряд Тейлора і обмежитись членами до включно, то приріст можна записати у вигляді
(1)
Замість того, щоб обчислювати члени ряду за формулою (1) в методі Рунге-Кутта використовують наступні формули.
Похибка на кожному кроці має порядок . Таким чином метод Рунге-Кутта забезпечує високу точність, однак вимагає більшого об’єму обчислень.
Деколи зустрічається інша форма представлення методу Рунге-Кутта 4-го порядку точності.
Методи з автоматичною зміною кроку
Застосовуються в тому випадку, якщо розв’язок потрібно одержати із заданою точністю. При високій точності (похибка ) автоматична зміна кроку забезпечує зменшення загального числа кроків в декілька разів (особливо при розв’язках у вигляді кривих, що сильно відрізняються крутизною).
Метод Рунге-Кутта з автоматичною зміною кроку
Після обчислення з кроком всі обчислення виконуються повторно з кроком . Після цього порівнюються результати, отримані в точці хn+1 з кроком і . Якщо модуль різниці менший , то обчислення продовжуються з кроком , в іншому випадку крок зменшують. Якщо нерівність дуже сильна, то крок збільшують.
Маємо
- значення незалежної змінної в точці
- значення функції в точці
- значення функції в точці , обчислене з кроком
- значення функції в точці , обчислене з кроком
- значення функції , обчислене з кроком
1) Якщо
обчислення повторюються з кроком і т.д., доки не виконається умова .
2) Якщо виконується ця умова, то можливі два варіанти, в залежності від значення K, де K – ознака поділу кроку.
Початкове значенняі залишається таким після першого поділу кроку на два. Надалі, якщо крок ділиться, то K приймає значення одиниці.
а) Якщо , то навіть коли виконалась умова , крок не змінюється, тобто лишається тим самим (обчислення далі проводяться з попереднім кроком).
б) Якщо і виконалась умова , тоді .
В обох випадках а) і б) результат виводиться на друк.
Для розв’язку системи диференціальних рівнянь використовують цей самий метод, за виключенням того, що всі рівняння системи необхідно розв’язувати паралельно.
4.Програми
Модифікований метод Ейлера
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
namespace ConsoleApplication
{
class Program
{
static void Main(string[] args)
{
Metod M = new Metod();
M.Obchusl();
}
}
class Metod
{
const int n = 3;
const double
Qm = 4, Un = 70 / 1000.0, e = 0.00001,
Cu = 8 * e, Cw = 2 * e,
Id = 0.02 * e, Іn = 4.0 * e,
Km = 15, T = 0.04, Kp = 100,
I = 30, Qin = 1, Ii = Id + 2 * e / (I * I);
double h = 0.0001, a, b, t;
int ii, kk;
Double[] f1 = new Double[n];
Double[] f2 = new Double[n];
Double[] y = new Double[n];
Double[] yn1 = new Double[n];
Double[] yn2 = new Double[n];
public void F(Double[] Ff, Double[] Y)
{
Ff[0] = (Km * Un * (1 - y[1])) / (T * Qm) - y[0] / T;
Ff[1] = y[2] / I;
Ff[2] = (Cu * Kp * y[0] - Cw * y[2]) / Ii;
}
public void Obchusl()
{
a = t = 0;
b = 5;
f1[0] = 0; f1[1] = 0; f1[2] = 0;
f2[0] = 0; f2[1] = 0; f2[2] = 0;
y[0] = 0; y[1] = 0; y[2] = 0;
using (StreamWriter sw = File.CreateText("d:\\file.txt"))
do
{
F(f1, y);
for (ii = 0; ii < n; ii++) yn1[ii] = y[ii] + h * f1[ii];
F(f2, yn1);
for (ii = 0; ii < n; ii++) { yn2[ii] = y[ii] + 0.5 * h * (f1[ii] + f2[ii]); y[ii] = yn2[ii]; }
if (kk % 20 == 0)
{
sw.WriteLine(t + "\t" + y[1]);
Console.WriteLine(t + "\t" + y[1]);
}
t += h; kk++;
} while ((b + h / 2) > t);
Console.ReadKey();
}
}
}
Метод Рунге-Кутта зі змінним кроком
using System;
using System.IO;
namespace RKzZminCrok
{
class Program
{
static void Main(string[] args)
{
Metod M = new Metod();
M.Obchusl();
}
}
class Metod
{
const int n = 3;
const double
Qm = 4, Un = 70 / 1000.0, e = 0.00001,
Cu = 8 * e, Cw = 2 * e,
Id = 0.02 * e, Іn = 4.0 * e,
Km = 15, T = 0.04, Kp = 100,
I = 30, Qin = 1, ii = Id + 3 * e / (I * I);
double h = 1, E = 0.0001, delta, a, b, t, k = 20;
int i;
Double[] f = new Double[n];
Double[] y = new Double[n];
Double[] z = new Double[n];
Double[] R = new Double[n];
Double[] D = new Double[n];
Double[] YY = new Double[n];
public void yn(double X, double H)
{
Double[,] K = new Double[5, n];
for (i = 0; i < n; i++) { K[1, i] = f[i]; z[i] = y[i]; y[i] = z[i] + 0.5 * H * K[1, i]; }
X += H / 2; F();
for (i = 0; i < n; i++) { K[2, i] = f[i]; y[i] = z[i] + 0.5 * H * K[2, i]; }
F();
for (i = 0; i < n; i++) { K[3, i] = f[i]; y[i] = z[i] + 0.5 * H * K[3, i]; }
F(); X += H / 2;
for (i = 0; i < n; i++) { K[4, i] = f[i]; y[i] = z[i] + 0.5 * H * K[4, i]; }
for (i = 0; i < n; i++) y[i] = z[i] + H / 6 * (K[1, i] + 2 * (K[2, i] + K[3, i]) + K[4, i]);
}
public void F()
{
f[0] = (Km * Un * (1 - y[1])) / (T * Qm) - y[0] / T;
f[1] = y[2] / I;
f[2] = (Cu * Kp * y[0] - Cw * y[2]) / ii;
}
public void Obchusl()
{
a = t = 0;
b = 5;
f[0] = 1; f[1] = 0; f[2] = 0;
y[0] = 1; y[1] = 0; y[2] = 0;
using (StreamWriter sw = File.CreateText("d:\\R_K_zm.txt"))
do
{
for (i = 0; i < n; i++) YY[i] = y[i];
yn(t, h);
for (i = 0; i < n; i++) R[i] = y[i];
for (i = 0; i < n; i++) y[i] = YY[i];
yn(t, h / 2); yn(t, h / 2);
for (i = 0; i < n; i++) D[i] = y[i];
delta = 0; for (i = 0; i < n; i++) if (Math.Abs(D[i] - R[i]) > delta) delta = Math.Abs(D[i] - R[i]);
int c = 0;
while (delta > E)
{
c = 1;
h = h / 2;
for (i = 0; i < n; i++) R[i] = D[i];
for (i = 0; i < n; i++) y[i] = YY[i];
yn(t, h / 2);
for (i = 0; i < n; i++) D[i] = y[i];
delta = 0; for (i = 0; i < n; i++) if (Math.Abs(D[i] - R[i]) > delta) delta = Math.Abs(D[i] - R[i]);
}
if ((delta < E * 10) && (c == 0)) h *= 2;
for (i = 0; i < n; i++) y[i] = R[i];
sw.WriteLine(t + " \t " + y[1]);
Console.WriteLine(t + "\t " + y[1]);
t = t + h;
k++;
}
while (t < b + h / 2);
Console.ReadKey();
}
}
}
5.Результати виконання програм
Модифікований метод Ейлера
0,01 0,00100210509506244
0,199999999999994 0,449472627518919
0,201999999999994 0,454158403923967
0,301999999999983 0,647751073304768
0,401999999999972 0,774630442359035
0,501999999999961 0,856089751982275
0,60199999999995 0,908146854739119
0,701999999999939 0,941379181230381
0,801999999999928 0,962588980580768
0,901999999999917 0,976124918015338
1,00199999999991 0,984763343876633
1,1019999999999 0,990276237606187
1,20199999999988 0,993794468535816
1,30199999999987 0,996039740727573
1,40199999999986 0,99747263332042
1,50199999999985 0,998387079762034
1,60199999999984 0,998970663135433
1,70199999999983 0,999343095612683
1,80199999999982 0,999580775362343
1,90199999999981 0,999732458329992
2,0019999999998 0,999829259688576
2,10000000000001 0,999890053397881
2,20000000000022 0,999929834043849
2,30000000000043 0,999955221341018
2,40000000000064 0,999971423060269
2,50000000000085 0,999981762707884
2,60000000000106 0,999988361286168
2,70000000000127 0,999992572380879
2,80000000000148 0,999995259826248
2,9000000000017 0,999996974905845
3,00000000000191 0,999998069438984
3,10000000000212 0,999998767950469
3,20000000000233 0,999999213728013
3,00000000000191 0,999998069438984
3,10000000000212 0,999998767950469
3,20000000000233 0,999999213728013
3,30000000000254 0,999999498215273
3,40000000000275 0,999999679769955
3,50000000000296 0,999999795634909
3,60000000000317 0,999999869577853
3,70000000000338 0,999999916766917
3,80000000000359 0,999999946882135
3,90000000000381 0,999999966101128
4,00000000000402 0,999999978366346
4,10000000000378 0,999999986193791
4,20000000000355 0,999999991189124
4,30000000000332 0,999999994377055
4,40000000000308 0,999999996411536
4,50000000000285 0,999999997709906
4,60000000000262 0,999999998538503
4,70000000000238 0,999999999067297
4,80000000000215 0,999999999404766
4,90000000000192 0,999999999620133
5,00000000000169 0,999999999757575
Метод Рунге –Кутта
0,00231966748833656 0,000737678507661258
0,00232014432549477 0,000738273992107199
0,00232109799981117 0,000739465603163427
0,00232300534844399 0,000741851393661862
0,00232682004570961 0,000746633246031776
0,00233444944024086 0,000756238018901665
0,00234970822930336 0,000775611698342631
0,00238022580742836 0,000775616462918157
0,00238022953271866 0,000775621227503596
0,00238023698329926 0,000775630756716462
0,00238025188446045 0,000775649815298482
0,00238028168678284 0,000775687933087676
0,00238034129142761 0,000775764171166666
0,00238046050071716 0,000775916657326985
0,00238069891929626 0,000776221669656462
0,00238117575645447 0,00077683185434653
0,00238212943077087 0,000778052863817296
0,00238403677940369 0,0007804974428507
0,00238785147666931 0,000785396839120102
0,00239548087120056 0,000795236567155005
0,00241073966026306 0,000815079626772673
0,00244125723838806 0,000815084505830962
0,00244126096367836 0,000815089384899132
0,00244126841425896 0,000815099143077325
0,00244128331542015 0,000815118659589495
0,00244131311774254 0,000815157693236966
0,00244137272238731 0,000815235763024432
0,00244149193167686 0,000815391912569391
0,00244173035025597 0,000815704251538886
0,00244220718741417 0,000816329088991969
0,00244316086173058 0,000817579401920764
0,00244506821036339 0,000820082579598973
0,00244888290762901 0,000825099140078937
0,00245651230216026 0,000835173064266485
0,00247177109122276 0,000855483987497022
0,00250228866934776 0,000855488980668128
0,00250229239463806 0,000855493973849083
0,00250229984521866 0,000855503960252711
0,00250231474637985 0,000855523933215247
0,00250234454870224 0,000855563879761438
0,00250240415334702 0,000855643775338285
0,00250252336263657 0,00085580357642978
0,00250276178121567 0,000856123218363446
0,00250323861837387 0,000856762661229271
0,00250419229269028 0,000858042182921251
0,00250609964132309 0,000860603769877369
0,00250991433858871 0,00086573711592526
0,00251754373311996 0,000876044479344688
0,00253280252218246 0,000896821753803558
0,00256332010030746 0,000896826860718554
0,00256332382559776 0,000896831967643368
0,00256333127617836 0,000896842181534579
0,00256334617733955 0,000896862609471777
0,00256337597966194 0,000896903465965283
0,00256343558430672 0,000896985181428728
0,00256355479359627 0,000897148622261282
0,00256379321217537 0,000897475543548516
0,00256427004933357 0,000898129544607302
0,00256522372364998 0,000899438180628585
0,00256713107228279 0,000902057988017583
0,000854495912790298 0,000102309062902412
0,000854555517435074 0,000102337535942896
0,000854674726724625 0,000102394492863732
0,000854913145303726 0,000102508450064315
0,000855389982461929 0,000102736537896596
0,000856343656778336 0,000103193407249365
0,000858251005411148 0,000104109920417776
0,000862065702676773 0,000105954042286738
0,000869695097208023 0,000109686649603626
0,000884953886270523 0,000117329170239545
0,000915471464395523 0,000117331073545564
1,57485771924257 0,987614023003225
1,5748882368207 0,987615726460483
1,57494927197695 0,987619132720881
1,57507134228945 0,98762594262596
1,57531548291445 0,987639551979278
1,57580376416445 0,987666728906691
1,57678032666445 0,987720916029063
1,57873345166445 0,987828626408436
1,58263970166445 0,988041416045894
1,59045220166445 0,988042238391471
1,59046746045351 0,988043060696983
1,59049797803164 0,988044705138343
1,92590142041445 0,994495559764113
1,93371392041445 0,994686686317441
1,94933892041445 0,994688147578759
1,9493999555707 0,994689608555371
1,9495220258832 0,994692529303237
1,9497661665082 0,994698366315035
1,9502544477582 0,994710022423551
2,57458306103945 0,99871787406006
2,57653618603945 0,998729120090916
2,58044243603945 0,998751337497803
2,58825493603945 0,998794693711026
3,94030571728945 0,999944948656313
3,94421196728945 0,999945912814142
3,95202446728945 0,999947790846013
3,96764946728945 0,999951366747885
3,99889946728945 0,999957848931915
4,06139946728945 0,999968498666839
4,18639946728945 0,999982864258847
4,93346977978945 0,999994631275194
4,93542290478945 0,999994678317809
4,93932915478945 0,999994771162583
4,94714165478945 0,999994952484778
4,96276665478945 0,999995298024003
6.Графіки одержаних результатів
Модифікований метод Ейлера
Метод Рунге –Кутта
7.Список використаної літератури.
Корн Г., Корн Т. Справочник по математике для инженеров и научных работников. – М.: Наука, 1974. – 830 с.
Маликов В.Т., Кветный Р.Н. Вычислительные методы и применение ЭВМ: Учеб. пособие. – Киев: Выща шк., Головное изд-во, 1989. – 213 с.
Щуп Т. Решение инженерных задач на ЭВМ. – М.: Мир, 1982. – 235 с.
Каханер Д., Моулер К., Нэш С. Численные методы и программное обеспечение. – М.: Мир, 1998. –570 с.
5. Джон Г. Мэтьюз, Куртис Д. Финк Чисельнные методы. Использование Matlab. Издательский дом «Вильямс» Москва – Санкт-Петербург – Киев, 2001.
6. Коссак О., Тумашова О., Коссак О. Методи наближених обчислень: Навч.посібн. – Львів: Бак, 2003. – 168 с.
МІНІСТЕРСТВО ОСВІТИ І НАУКИ, МОЛОДІ ТА СПОРТУ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ „ЛЬВІВСЬКА ПОЛІТЕХНІКА”
ІКТА
Кафедра ЗІ
Курсова робота
з курсу:
" Комп'ютерні методи дослідження інформаційних процесів і систем "
на тему:
" АВТОМАТИЧНИЙ ПОТЕНЦІОМЕТР З МАГНІТНИМ ПІДСИЛЮВАЧЕМ"
Тема 2, варіант 10
Виконав: ст. гр. ЗІ-21
Сімашко С.В.
Прийняв:
Мороз Л. В.
Львів- 2011