Національний університет “Львівська політехніка”
РОЗРАХУНКОВА РОБОТА
З ПРЕДМЕТУ
ТЕОРІЯ ЕЛЕКТРИЧНИХ КІЛ
«Апроксимація функцій та розрахунок перехідних процесів у нелінійних електричних колах»
Задача
Дано:
Математична модель
Будуємо дискретну модель за явним методом Ейлера:
Алгоритм явного методу Ейлера:
t=0;
Задаємося початковими значеннями
Обчислюємо статичну індуктивність
Обчислюємо струм
Записуємо значення
Перевіряємо умову чи час t досяг свого кінцевого значення tEND. Якщо так то виходимо з алгоритму якщо ні то йдемо далі.
Обчислюємо значення потокозчеплення згідно із явною формулою Ейлера на наступному кроці :
Змінюємо крок
Йдем на пункт 3.
Апроксимація кривої намагнічування методом вибраних точок
Нам дана характеристика намагнічування сталі 1413
№
1
2
3
4
5
6
7
8
9
10
11
12
В, Тл
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1.0
1.1
1.2
1.3
Н, А/м
44
56
67
77
90
109
133
166
217
298
444
722
№
13
14
15
16
17
18
19
20
21
22
23
В, Тл
1.4
1.5
1.6
1.7
1.8
1.9
2.0
2.1
2.2
2.3
2.4
Н, А/м
1410
3140
5980
10
100
18
100
33
500
88
300
167
000
246
000
326
000
405
000
Нашим рядом апроксимації являється вираз:
Рівняннями прямих будуть: і
Запишемо систему рівнянь:
де вибрані точки будуть в: В1=0.6; В2=1,1; В3=1,6, відповідно.
Обрахуємо коефіцієнти при прямих:
Тепер знайдемо коефіцієнти а4, а5, а6:
розв’язавши цю систему ми отримаємо:
Остаточне рівняння:
Апроксимація здійснена по підкреслених у таблиці точках
Графічно вона виглядає так:
Перераховуємо криву намагнечення у вебер-амперну характеристику :
Після підстановки отримуємо :
Виконаємо спрощення :
Розраховуємо обернену статичну індуктивність дроселя :
Аналіз перехідних процесів з розв’язанням диференціальних рівнянь явними методом Ейлера.
Текст програми написаний мовою Сі++ :
HEADER_FILE-------------------------------------------------------------------------
//---------------------------------------------------------------------------
#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published: // IDE-managed Components
private: // User declarations
public: // User declarations
__fastcall TForm1(TComponent* Owner);
//Початок.Задані величини----------------------------------------------------
double R,F,f,Umax,l,W,h,T,S;
//Кінець.Задані величини-----------------------------------------------------
//Початок.Змінні інтегрування------------------------------------------------
double psi,i,t,a;
//Кінець.Змінні інтегрування-------------------------------------------------
//Початок.Додаткові величини-------------------------------------------------
double psi1,psi3;
double F1,F2,F3,F4,F5,F6;
double a1,a2,a3,a4,a5,a6;
//Кінець.Додаткові величини--------------------------------------------------
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif
CPP_FILE--------------------------------------------------------------------------------
//---------------------------------------------------------------------------
#include <Math.h>
#include <vcl.h>
#pragma hdrstop
#include <fstream.h>
#include <iostream.h>
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
using namespace std;
fopen("D:\TEK_psi_i_t.dat","w+");
fstream TEK_psi_i_t("D:\TEK_psi_i_t.dat");
//Початок.Задані величини----------------------------------------------------
S=22*pow(10,-4);
F=3;
R=1.2;
f=48;
Umax=156;
l=0.13;
W=130;
h=0.00006;
T=0.02;
//Кінець.Задані величини-----------------------------------------------------
//Початок.Початкові умови----------------------------------------------------
psi=0;i=0;a=0;
//Кінець.Початкові умови-----------------------------------------------------
//Початок.Додаткові величини-------------------------------------------------
psi1=0.6*W*S;
psi3=1.6*W*S;
a1=150;
a2=41200;
a3=-59940;
a4=578.7;
a5=-1589.02;
a6=1102.68;
F1=((a1*l)/(pow(W,2)*S));
F2=((a2*l)/(pow(W,2)*S));
F3=a3;
F4=((a4*l)/(pow(W,2)*S));
F5=((a5*l)/(pow(W,4)*pow(S,3)));
F6=((a6*l)/(pow(W,6)*pow(S,5)));
//Кінець.Додаткові величини--------------------------------------------------
for (t=0;t<=3.5*T;t=t+h)
{
//Початок.Записуємо дані у файл----------------------------------------------
TEK_psi_i_t<<psi<<" "<<i<<" "<<t<<endl;
//Кінець.Записуємо дані у файл-----------------------------------------------
psi=psi+h*(Umax*sin(2*3.14*f*t+F)-R*i);
//Початок.Струм у колі-------------------------------------------------------
if((0<fabs(psi))&&(fabs(psi)<psi1))
{
i=F1*psi;
};
if((psi1<fabs(psi))&&(fabs(psi)<psi3))
{
i=F4*psi+F5*pow(psi,3)+F6*pow(psi,5);
};
if(psi3<fabs(psi))
{
i=F2*psi+F3;
};
//Кінець.Струм у колі--------------------------------------------------------
//Початок.Обернена статична індуктивність дроселя---------------------------
if((0<fabs(psi))&&(fabs(psi)<psi1))
{
a=F1;
};
if((psi1<fabs(psi))&&(fabs(psi)<psi3))
{
a=F4+F5*pow(psi,2)+F6*pow(psi,4);
};
if(psi3<fabs(psi))
{
a=F2+F3/psi;
};
//Кінець.Обернена статична індуктивність дроселя-----------------------------
}
//Початок.Закриваємо файл----------------------------------------------------
TEK_psi_i_t.close();
//Кінець.Закриваємо файл-----------------------------------------------------
}
//---------------------------------------------------------------------------
Графіки залежностей
Графік залежностей і від t:
Графік заложестей ψ від t: