отчёт 2
.docМИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ
РОССИЙСКОЙ ФЕДЕРАЦИИ
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ
БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ
ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ
«ВЯТСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ»
Лабораторная работа №2
МЕТОДЫ ИНТЕРПОЛЯЦИИ И ЭКСТРАПОЛЯЦИИ
Вариант №5
Студент: гр. УТ – 21 Петухов П.А.
Преподаватель: Чуркин В.В.
Киров
2013 год
1.Задание.
1) В Mathcad’е по заданному из таблицы варианту выполнить кусочно-линейную и сплайн-интерполяции для функции заданной таблицей значений в точках где .
2) Составить алгоритм и написать код для определения параметров и построения графика интерполяционного тригонометрического многочлена. Нанести на график значения функции из таблицы
2.Формулы метода.
Задача тригонометрической интерполяции состоит в построении тригонометрического интерполяционного многочлена наименьшей степени удовлетворяющего условиям
Решением этой задачи является тригонометрический многочлен:
коэффициенты которого вычисляются по следующим формулам:
3.Результаты выполнения задания в Mathcad’e.
4.1 Блок-схема алгоритма
4.2 Таблица идентификаторов
Имя переменной |
Тип переменной |
Диапазон |
Назначение |
||||
Алгоритм |
Программа |
||||||
x[21] |
x[21] |
double |
От ±5.0 × 10−324 до ±1.7 × 10308 |
Объявление вещественного массива |
|||
y[21] |
y[21] |
double |
От ±5.0 × 10−324 до ±1.7 × 10308 |
Объявление вещественного массива |
|||
a[11] |
a[11] |
double |
От ±5.0 × 10−324 до ±1.7 × 10308 |
Объявление вещественного массива |
|||
b[11] |
b[11] |
double |
От ±5.0 × 10−324 до ±1.7 × 10308 |
Объявление вещественного массива |
|||
i |
i |
int |
От -2 147 483 648 до 2 147 483 647 |
Переменная цикла |
|||
k |
k |
int |
От -2 147 483 648 до 2 147 483 647 |
Переменная цикла |
|||
x[i] |
x[i] |
double |
От ±5.0 × 10−324 до ±1.7 × 10308 |
Элементы массива |
|||
y[i] |
y[i] |
double |
От ±5.0 × 10−324 до ±1.7 × 10308 |
Элементы массива |
|||
a[k] |
a[k] |
double |
От ±5.0 × 10−324 до ±1.7 × 10308 |
Элементы массива |
|||
b[k] |
b[k] |
double |
От ±5.0 × 10−324 до ±1.7 × 10308 |
Элементы массива |
|||
p |
p |
float |
От -3.4 × 1038 до 3.4 × 1038 |
Результат вычислений |
|||
x |
x |
float |
От -3.4 × 1038 до 3.4 × 1038 |
Переменная цикла |
5.Исходный код
Файл реализации «Class1.cpp» //---------------------------------------------------------------------------
#pragma hdrstop
#include "Class1.h"
#include "string.h"
#include "strstream.h"
#include "Unit1.h"
#include "Unit2.h"
#include "Unit3.h"
#include<math.h>
//---------------------------------------------------------------------------
#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.