Автор: Пользователь скрыл имя, 09 Мая 2012 в 16:56, курсовая работа
В задании курсовой работы необходимо произвести интерполяцию заданной функции методом Лагранжа, программа должна быть выполнена в среде QT Creator , а так же в среде Mathcad 13. Основными целями работы является выполнение программы и составление пояснительной записки с приложениями языке С++, при помощи полученных знаний по курсу «информатика», а так же приобретение навыков работы в MathCad 13.
Введение
1 Постановка задачи
2 Интерполяционный метод Лагранжа
3 Описание среды QT Creator
4 Описание программы
5 Математический пакет MathCAD
6 Алгоритм решения задачи в MathCAD
Заключение
Список используемых источников
Приложение А (листинг программы- интерполяция методом Лагранжа)
Приложение Б (Блок схема метода Лагранжа)
Приложение В (Листинг программы в MathCAD )
Результатом каждой из перечисленных функций является вектор, содержащий значения вторых производных от интерполяционной кривой во всех точках, заданных в массиве vx. Для того чтобы исходя из этого вектора построить кривую, нужно воспользоваться встроенной функцией interp(v,vx,vy,x), где vx и vy – массивы экспериментальных точек, v – массив, полученный как результат одной из трех функций, перечисленных выше, x- координата, в которой нужно вычислить значение интерполяционной кривой.
Рисунок 6.2 интерполяция кубическим сплайном
Рисунок 6.3 2D- интерполяция линейным сплайном
Рисунок 6.4 2D- интерполяция параболическим сплайном
Заключение
В курсовой работе я рассмотрела формулу полинома Лагранжа при помощи полученных знаний, из курса “Информатика”.
Основная цель данной курсовой работы - применение математических методов в информатике. Мною рассмотрена формула полинома Лагранжа.
В данной курсовой работе была выполнена интерполяция функции полиномом Лагранжа и составлен алгоритм решения функции на языке программирования С++ , получены навыки работы в среде QT Creator, а также ознакомление с математическим пакетом Mathcad 13. (в пояснительной записке предоставлены листинги показывающие пошаговое создание проектов)
Знания алгоритмов
численных методов могут
Список используемых источников
(обязательное)
Листинг программы - интерполяция функции методом Лагранжа
#include "project.h"
#include "ui_project.h"
#include <QtGui/QWidget>
#include <QPainter>
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <conio.h>
#include<QDebug>
#include <phonon/AudioOutput>
#include <phonon/MediaObject>
project::project(QWidget *parent)
: QWidget(parent), ui(new Ui::project)
{
F[0]=0;
F[1]=0;
F[2]=0;
//N=3;
//H = 3.1415926/16;
ui->setupUi(this);
}
project::~project()
{
delete ui;
}
void project::paintEvent(QPaintEven
{
N = ui->spinBox->value();
H = M_PI * ui->doubleSpinBox->value();
QPainter painter(this);
double x;
int i;
double *a, *b;
painter.setPen(QPen(Qt::black, 3));
painter.drawLine(0,170,600,170
painter.setPen(QPen(Qt::red, 3));
painter.drawLine(25,10,25,330)
for (x=0;x<=H;x=x+M_PI/4)
{
painter.setPen(QPen(Qt::blue, 3));
painter.drawLine(x*70+25,170,
painter.setPen(QPen(Qt::green, 3));
painter.drawText(x*70,180,QStr
}
for (x=-1;x<=1;x=x+0.25)
{
painter.setPen(QPen(Qt::cyan , 3));
painter.drawLine(25,170-x*150,
painter.setPen(QPen(Qt::
painter.drawText(0,180-x*150,Q
}
//printf ("Введите x: "); scanf ("%lf", &x);
a = (double*)malloc((N+1)*sizeof(d
b = (double*)malloc((N+1)*sizeof(d
for (i=0; i<=N; i++) {
a[i]=H*(double)i/(double)N;
b[i]=scx(a[i]);
}
if (F[2] == 1)
{
for (i=0;i<=N;i++)
{
painter.drawEllipse(a[i]*70+25
};
};
if (F[1] == 1)
{
for (x=0;x<H;x=x+0.1)
{
painter.drawLine(x*70+25,170-
};
};
if (F[0] == 1)
{
for (x=0;x<H;x=x+0.1)
{
painter.drawLine(x*70+25,170-
};
};
};
double project::interpol_x(double x,double a[], double b[])
{
int i,j;
double pro;
double s=0.0;
for(i=0; i<=N;i++)
{
pro=1.0;
for(j=0;j<=N;j++)
{
if(i!=j) pro=pro*(x-a[j])/(a[i]-a[j]);
}
s=s+pro*b[i];
}
return s;
}
double project::scx(double x)
{
return cos(x)*sin(x);
};
void project::on_pushButton_1_
{
F[0]=abs(1-F[0]);
update();
}
void project::on_pushButton_2_
{
F[1]=abs(1-F[1]);
update();
}
void project::on_pushButton_3_
{
F[2]=abs(1-F[2]);
update();
Блок схема метода Лагранжа
(обязательное)
Листинг программы в MathCAD
заданная функция
i:= 0.. 6
Задаем шаг для построения графика
Значение каждой из 7 точек с шагом π/16 будет высчитываться по формуле:
Найдем значение функции в каждой из 7точек по формуле:
Значение данной функции и значение по заданной точке:
,
Строим график: зависимость функции f(x) от х, затем задается зависимость функции f(x) и Мi от х и Хi , изобразим на графике
Рисунок
В.1 -График функции
Рисунок В.2 – Графики интерполяций