МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА”
ЛАБОРАТОРНА РОБОТА № 1
з курсу “ Моделювання процесів та елементів систем керування ”
ПОЛІНОМІАЛЬНА АПРОКСИМАЦІЯ НЕЛІНІЙНИХ ХАРАКТЕРИСТИК ЕЛЕМЕНТІВ
Львів – 2017
1. Мета роботи.
Вивчити методи наближення нелінійних характеристик елементів систем керування поліноміальними функціями, а саме: поліномами Лагранжа, Тейлора та кубічними сплайнами; навчитися записувати програми у вигляді універсальних процедур для апроксимації нелінійних характеристик.
2. Завдання.
Завдання для лабораторної роботи дають із зазначенням номера апроксимуючої функції та варіанта чисельних значень координат вузлів апроксимації. В даній роботі необхідно виконати апроксимацію кривої намаґнечування. Крива намаґнечування задається двома точками, що відділяють лінійні зони від нелінійної (рис. 1). Координати цих точок позначені А(і1, 1), В(і2, 2). Для того, щоб виконати апроксимацію ділянки АВ поліномом, необхідні ще значення похідних в точках А, В. Для першої точки (А) похідна визначається безпосередньо за значеннями функції і аргументу у вузлі
m1 = i1/1, (18)
а для другої точки (В) похідна m2 задана. Тоді рівняння лінійної ділянки ОА визначається рівнянням прямої, що проходить через початок координат
i() = m1 (19)
Рівняння ділянки ВС описує зону насичення феромаґнетного осердя яку також можна вважати лінійною, тому
i() = m2 + i0, (20)
де вільний член і0 визначаємо за формулою
i0 = i2 - m22 . (21)
Таким чином, криву намаґнечування апроксимуємо виразом з вибором розрахункової формули, в якій є два рівняння прямої і одна нелінійна функція
(22)
3. Остаточна версія програми.
#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;
void __fastcall TForm1::Button1Click(TObject *Sender)
{
using namespace std;
//Для розв'язку поставленої залачі, необхідно знайти коефіцієнти
//апроксимаційного полінома a0 + a1*fi + a2*pow(fi,2) + a3*pow(fi,3).
//Використаємо метод вибраних точок.
//Для цього необхідно мати систему із чотирьох рівнянь.
//Для її побудови використаємо значення функції, які задані в точках
//fi1 та fi2, а також похідні функції у цих точках.
//Початок. Загальний вигляд функції------------------------------------------
//i(fi) = a0 + a1*fi + a2*pow(fi,2) + a3*pow(fi,3).
//Кінець. Загальний вигляд функції-------------------------------------------
//Початок. Загальний вигляд системи рівнянь----------------------------------
//a0 + a1*fi1 + a2*pow(fi1,2) + a3*pow(fi1,3) = i1.
//a0 + a1*fi2 + a2*pow(fi2,2) + a3*pow(fi2,3) = i2.
//0 + a1 + 2*a2*fi1 + 3*a3*pow(fi1,2) = m1.
//0 + a1 + 2*a2*fi2 + 3*a3*pow(fi2,2) = m2.
//Кінець. Загальний вигляд функції-------------------------------------------
//Початок. Матриця коефіцієнтів----------------------------------------------
//a0--a1----a2--------------a3--------------------------------------------------
//1 + fi1 + pow(fi1,2) + pow(fi1,3) = i1.
//1 + fi2 + pow(fi2,2) + pow(fi2,3) = i2.
//0 + 1 + 2*fi1 + 3*pow(fi1,2) = m1.
//0 + 1 + 2*fi2 + 3*pow(fi2,2) = m2.
//Кінець. Матриця коефіцієнтів-----------------------------------------------
//Кінець. Загальний вигляд функції-------------------------------------------
//Початок. Параметри системи-------------------------------------------------
i1 = 0.8;
i2 = 15;
fi1 = 0.4;
fi2 = 1.2;
m1 = i1/fi1;
m2 = 40;
i0 = i2 - m2*fi2;
//Число кроків табулювання---------------------------------------------------
N = 1000;
//Крок табулювання-----------------------------------------------------------
h = (1.1*fi2)/N;
//Матриця коефіцієнтів-------------------------------------------------------
A[1][1] = 1;
A[1][2] = fi1;
A[1][3] = pow(fi1,2);
A[1][4] = pow(fi1,3);
A[2][1] = 1;
A[2][2] = fi2;
A[2][3] = pow(fi2,2);
A...