![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Теоретическое введение. Интерполяция – метод аналитического описания зависимости величин по имеющемуся набору значений этих величин
Интерполяция – метод аналитического описания зависимости величин по имеющемуся набору значений этих величин. Схожим по назначению является метод аппроксимации, однако отличием метода интерполяции от аппроксимации является полное совпадение вычисленной зависимости в узлах интерполяции. Простейшим примером применения интерполяции является следующий: в дискретные моменты времени получены некоторые экспериментальные данные, необходимо по полученным данным определить зависимость измеренных величин (рис. 4.1). Рис 4.1 пример интерполяции функции по 3 точкам Основными методами интерполяции являются следующие: 1. Многочлен Лагранжа. 2. Интерполяционная формула Ньютона. 3. Линейная интерполяция. 4. Сплайны. Во многих электротехнических задачах встречаются нелинейные зависимости, которые не позволяют выполнить аналитическое решение. В таких случаях прибегают к численным методам решения задач в совокупности с приближениями. Основные виды нелинейных зависимостей показаны на рис. 4.2 Рис. 4.2.(а) – ВАХ диода Рис. 4.2.(б) – выходная и управляющая характеристики полевого транзистора Рис. 4.2.(в) ВАХ тиристора Рис 4.2 (г) обратная ВАХ диода Рис 4.2 (д) ВАХ входная и выходная биполярного трпнзистора
Рис 4.2 (е) ВАХ симистора В данной лабораторной работе мы используем в расчетах полином Лагранжа. Как показывают расчетные эксперименты, полином Лагранжа имеет малую погрешность при небольших значениях N< 20. При бό льших N погрешность начинает расти, что свидетельствует о том, что метод Лагранжа не сходится (т.е. его погрешность не убывает с ростом N). Полином Лагранжа находится в виде:
где базисные полиномы определяются по формуле:
· являются многочленами степени n · li(xi)=1 · li(xi)=0 при j≠ i Отсюда следует, что L(x), как линейная комбинация Li(x), может иметь степень не больше n, и L(xi)=yi Например: 1. В результате эксперимента получили следующие данные (табл. 4.1): Аблица 4.1
2. Вычислить напряжение коллектора при токе коллектора 0, 25mA. 3. Заполняем таблицу 4.2 в соответствии с правилами заполнения полинома Лагранжа. Таблица 4.2
4. Согласно алгоритму (формула 4.2) поэтапно вычисляем значения полинома при x=0.25
5. Вычисляем значение функции, формула 4.1 6. Или, используя те же формулы, можно получить функцию в аналитической форме:
7. Подставляем в формулу 4.1, упрощаем с использованием функций MathCad, получаем: f(x)=l0(x)*f(x0)+ l1(x)*f(x1)+ l2(x)*f(x2)+ l3(x)*f(x3)+ l4(x)*f(x4)+ l5(x)*f(x5)= =119515.622119*x-1.04020483754e6*x2+4.2445551839e6*x3-8.24267134e6*x4+6157107*x5-5030.3729784 8. Программа: Форма включает в себя компоненты: StringGrid, Edit, Lable, Button. 9. Код программы: int n; double lagx[1000]; double lagfx[1000]; //--------------------------------------------------------------------------- void __fastcall TForm1:: Edit1Change(TObject *Sender) { StringGrid1-> ColCount=StrToInt(Edit1-> Text)+1; //задаем количество столбцов в таблице } //--------------------------------------------------------------------------- void __fastcall TForm1:: FormCreate(TObject *Sender) { StringGrid1-> Cells[0][0]='x'; //название строки StringGrid1-> Cells[0][1]=" f(x)"; } //--------------------------------------------------------------------------- void __fastcall TForm1:: Button1Click(TObject *Sender) { double x, s, s0; n=StrToInt(Edit1-> Text); //количество точек x=StrToFloat(Edit2-> Text); //расчетное значение s=0; for (int i=0; i< n; i++) { lagx[i]=StrToFloat(StringGrid1-> Cells[i+1][0]); lagfx[i]=StrToFloat(StringGrid1-> Cells[i+1][1]); } //считывание значение из таблицы в массив " х" и " f(x)" for (int i=0; i< n; i++) { s0=1; for (int j=0; j< n; j++) { if (i! =j) s0=s0*(x-lagx[j])/(lagx[i]-lagx[j]); //формирование l(x) } s=s+lagfx[i]*s0; //вычисление значения функции } Edit3-> Text=FloatToStr(s); }
Задание на лабораторную работу: Согласно варианту (табл 4.3) написать программу в среде программирования «Borland C». Работа считается выполненной после проверки работоспособности программного кода. Таблица 4.3
Контрольные вопросы: 1. Что такое интерполяция и для чего она применяется? 2. Основные методы интерполяции. 3. Что такое сплайн? Какие виды сплайнов вы знаете? 4. Основные виды нелинейностей, встречающиеся в электротехнических задачах. 5. Что такое интерполяционный многочлен Лагранжа? 6. Расскажите о выборе вида интерполяции в конкретных электротехнических задачах.
|