Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Теоретическое введение. Интерполяция – метод аналитического описания зависимости величин по имеющемуся набору значений этих величин






Интерполяция – метод аналитического описания зависимости величин по имеющемуся набору значений этих величин. Схожим по назначению является метод аппроксимации, однако отличием метода интерполяции от аппроксимации является полное совпадение вычисленной зависимости в узлах интерполяции.

Простейшим примером применения интерполяции является следующий: в дискретные моменты времени получены некоторые экспериментальные данные, необходимо по полученным данным определить зависимость измеренных величин (рис. 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).

Полином Лагранжа находится в виде:

(4.1)

где базисные полиномы определяются по формуле:

(4.2)

обладают следующими свойствами:

· являются многочленами степени n

· li(xi)=1

· li(xi)=0 при j≠ i

Отсюда следует, что L(x), как линейная комбинация Li(x), может иметь степень не больше n, и L(xi)=yi

Например:

1. В результате эксперимента получили следующие данные (табл. 4.1):

Аблица 4.1

Ik, mA 0, 1 0, 2 0, 3 0, 35 0, 38 0, 39
Uкэ, В            

2. Вычислить напряжение коллектора при токе коллектора 0, 25mA.

3. Заполняем таблицу 4.2 в соответствии с правилами заполнения полинома Лагранжа.

Таблица 4.2

x0 x1 x2 x3 x4 x5
0, 1 0, 2 0, 3 0, 35 0, 38 0, 39
f(x0) f(x1) f(x2) f(x3) f(x4) f(x5)
           

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

вариант                  
  x     25.6   31.2 18.4 12.9 22.7  
f(x) 5.6 4.2 15.1 16.8 20.7 16.5 11.0    
  x 2, 2 4, 8     3, 7 28.5 3, 9 4, 7  
f(x) 5, 4 2, 9     5, 9   3, 7   2, 8
  x   8, 3 2, 8   5, 8   5, 9    
f(x)   4, 7 2, 9   5, 6   5, 8    
  x 5, 9   3, 8 2, 9 4, 0 2, 5 5, 6    
f(x) 1, 2     8, 3 8, 2 9, 8 4, 4   2, 6
  x 8, 2     4, 7 1, 1 5, 7 8, 1 9, 8 6, 3
f(x)         4, 3   8, 3 5, 6 4, 8
  x 4, 3       6, 7       2, 9
f(x) 6, 8 2, 8     9, 1   4, 5   8, 3
  x 9, 1 2, 9   9, 8   6, 3 6, 8   4, 7
f(x)   3, 8   5, 7 2, 8 4, 8 9, 9    
  x   3, 9     8, 3 2, 9 5, 7    
f(x)   3, 7     4, 7 8, 4   5, 9 5, 7
  x   5, 9   2, 2   4, 7   1, 2  
f(x) 9, 8 5, 8   5, 4       9, 1  
  x 5, 7 5, 6           1, 2  
f(x)   4, 0 5.5   5, 9       2, 3
  x   8, 1 2, 2 5, 9 1, 2        
f(x)   2, 8 5, 4 1, 2 8, 2     1, 5  
  x   2, 9   8, 2 1, 1 0, 11 6, 3 9, 8  
f(x)   3, 8     4, 3   4, 8 5, 7  
  x   3, 9 5, 9 4, 3 6, 8 6, 6 2, 9   9, 8
f(x)   3, 7   9, 1 9, 2 9, 3 8, 3   5, 7
  x 6, 3 5, 9     4, 7 5, 7 4, 6    
f(x) 4, 8 5, 8   2, 9   4, 9   5, 6  
  x 2, 9 5, 6   8, 2       4, 6 2, 2
f(x) 8, 3 4, 0 9, 8 4, 7   8, 1   8, 1 5, 4
  x 4, 7 4, 9 5, 7     3, 8   3, 3  
f(x)   2, 5   3, 9   3, 5 3, 6 3, 7 8, 3
  x       2, 9 2, 5 2, 6 3, 7 5, 7 4, 7
f(x)       8, 3 2, 8 8, 6 5, 9    
  x         5, 7 4, 9 5, 8    
f(x)         4, 7   5, 6    
  x             5, 1   2, 6
f(x)     6, 3 5.6 8, 1 3, 0 4, 0   2, 5
  x     4, 8 2, 2 9, 8   4, 7 3, 9 2, 8
f(x) 2, 5   2, 9 5, 4 5, 7   2, 4 2, 9 2, 1
  x 2, 8 4, 3 8, 3         8, 5 2, 4
f(x) 2, 9 6, 8 4, 7   2, 9   3, 9   3, 8
  x 3, 8 9, 1     8, 3 2, 8 5, 6 2, 9  
f(x) 3, 9 8, 3     4, 7   4, 0 8, 2 6, 3
  x 3, 7 4, 7 2, 8 4, 3     8, 1   4, 8
f(x) 5, 9   5, 7 6, 8     3, 8   2, 9
  x 5, 8     9, 1   2, 5 3, 9   8, 3
f(x) 5, 6     8, 3 5, 9 2, 5 3, 7 5.6 4, 7
  x 4, 0 9, 8 5, 6 4, 7 5, 7 2, 8 5, 1    
f(x) 8, 1 5, 7 5, 9 9, 9 4, 4 5, 4 5, 8 4, 3 6, 8

Контрольные вопросы:

1. Что такое интерполяция и для чего она применяется?

2. Основные методы интерполяции.

3. Что такое сплайн? Какие виды сплайнов вы знаете?

4. Основные виды нелинейностей, встречающиеся в электротехнических задачах.

5. Что такое интерполяционный многочлен Лагранжа?

6. Расскажите о выборе вида интерполяции в конкретных электротехнических задачах.


 






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.