отчёт 2. Лабораторная работа 2 методы интерполяции и экстраполяции вариант 5 Студент гр. Ут 21 Петухов П. А
Скачать 241 Kb.
|
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ «ВЯТСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ» Лабораторная работа №2 МЕТОДЫ ИНТЕРПОЛЯЦИИ И ЭКСТРАПОЛЯЦИИ Вариант №5 Студент: гр. УТ – 21 Петухов П.А. Преподаватель: Чуркин В.В. Киров 2013 год 1.Задание. 1) В Mathcad’е по заданному из таблицы варианту выполнить кусочно-линейную и сплайн-интерполяции для функции заданной таблицей значений в точках где . 2) Составить алгоритм и написать код для определения параметров и построения графика интерполяционного тригонометрического многочлена. Нанести на график значения функции из таблицы 2.Формулы метода. Задача тригонометрической интерполяции состоит в построении тригонометрического интерполяционного многочлена наименьшей степени удовлетворяющего условиям Решением этой задачи является тригонометрический многочлен: коэффициенты которого вычисляются по следующим формулам: 3.Результаты выполнения задания в Mathcad’e. 4.1 Блок-схема алгоритма 4.2 Таблица идентификаторов
5.Исходный код Файл реализации «Class1.cpp» //--------------------------------------------------------------------------- #pragma hdrstop #include "Class1.h" #include "string.h" #include "strstream.h" #include "Unit1.h" #include "Unit2.h" #include "Unit3.h" #include //--------------------------------------------------------------------------- #pragma package(smart_init) double y[21]={1.0, 1.05, 90.6, 520.4, 1714.7, 2915.0, 2439.2, 1020.6, 230.7, 32.17, 3.29, 0.3, 0.03, 0.004, 0.001, 0.0003, 0.0006, 0.002, 0.01, 0.09, 0.9}; void Class1::aboutme() { Application->MessageBox("Данное приложение выполнено студентом ВятГУ Факультета АВТ группы УТ-21 Петуховым Павлом", "О создателе" ); } void Class1::koord() { Form1->StringGrid1->Cells[0][0]="i"; Form1-> StringGrid1->Cells[0][1]="x[i]"; Form1->StringGrid1->Cells[0][2]="y[i]"; for(int i=0;i<21;i++){ Form1-> StringGrid1->Cells[i+1][0]=IntToStr(i); x[i]=2*M_PI*i/21; Form1->StringGrid1->Cells[i+1][1]=FloatToStrF(x[i],ffFixed,2,2); Form1->StringGrid1->Cells[i+1][2]=FloatToStrF(y[i],ffFixed,2,2);} } void Class1::koeef() { for(int k=0;k<=10;k++){ Form1->StringGrid2->Cells[0][0]="k"; Form1->StringGrid2->Cells[0][1]="a[k]"; Form1-> StringGrid2->Cells[0][2]="b[k]"; Form1->StringGrid2->Cells[k+1][0]=IntToStr(k); a[k]=b[k]=0; for(int i=0;i<21;i++){ a[k]+=StrToFloat(Form1->StringGrid1->Cells[i+1][2])*cos(k*x[i]); b[k]+=StrToFloat(Form1->StringGrid1->Cells[i+1][2])*sin(k*x[i]);} a[k]/=21; Form1->StringGrid2->Cells[k+1][1]=FloatToStrF(a[k],ffFixed,5,5); b[k]/=21; Form1->StringGrid2->Cells[k+1][2]=FloatToStrF(b[k],ffFixed,5,5);} } void Class1::tablica() { Form1->Series1->Clear(); Form1->Series2->Clear(); for(int i=0;i<21;i++){ Form1-> Series1->AddXY(x[i],StrToFloat(Form1->StringGrid1->Cells[i+1][2]),"",clBlack); } for(float x=0;x<2*M_PI;x+=0.001){ float p=a[0]; for(int k=1;k<11;k++) p+=2*(a[k]*cos(k*x)+b[k]*sin(k*x)); Form1-> Series2->AddXY(x,p,"",clBlack);} } void Class1::helpf() { Form3->Show(); //обращение к форме} 6.Результаты выполнения работы в виде значений коэффициентов интерполирующего полинома и графика полученного полинома с нанесенными на график исходными данными 7.Библиографический список В.В.ЧУРКИН ЧИСЛЕННЫЕ МЕТОДЫ (с алгоритмами и программами в среде C++Builder) Учебно-методическое пособие. 2013. |