Автор работы: Пользователь скрыл имя, 22 Ноября 2012 в 22:21, курсовая работа
Элементы важной и интересной области математики- теория приближения функций. Под приближением функции понимают замену по определенному правилу одной функции другой, близкой к исходной в том или ином смысле. Практическая необходимость в такой замене возникает в самых различных ситуациях, когда данную функцию необходимо заменить более простой и удобной для вычислений, восстановить функциональную зависимость по экспериментальным данным, и т.п.
Введение. 3
1. Постановка задачи. .4
2. Краткие сведенья и расчетные формулы…………………………………………………5
3.Текст программы …………………………………………………………………………….7
Список литературы…………………………………………………………………….. … . 10
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ
РОССИЙСКОЙ ФЕДЕРАЦИИ
ФЕДЕРАЛЬНОЕГОСУДАРСТВЕННОЕ
ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ «МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ РАДИОТЕХНИКИ,ЭЛЕКТРОНИКИ И АВТОМАТИКИ»
ФАКУЛЬТЕТ РАДИОТЕХНИЧЕСКИХ СИСТЕМ
КАФЕДРА РАДИОПРИЕМНЫХ УСТРОЙСТВ
КУРСОВАЯ РАБОТА ПО ДИСЦИПЛИНЕ
«ИНФОРМАТИКА»
Тема: Аппроксимация периодических функций методом
Студент: Горин Кирилл Александрович
Группа: . РР-1-10
Руководитель: Петрова Наталья Яковлевна
Оглавление.
Введение. 3
1. Постановка задачи. .4
2. Краткие сведенья и расчетные формулы…………………………………………………5
3.Текст программы …………………………………………………………………………….
Список
литературы……………………………………………………
Аппроксимация (от латинского "approximate" -"приближаться")- приближенное выражение каких-либо математических объектов (например, чисел или функций) через другие более простые, более удобные в пользовании или просто более известные. В научных исследованиях аппроксимация применяется для описания, анализа, обобщения и дальнейшего использования эмпирических результатов.
Элементы важной и интересной области математики- теория приближения функций. Под приближением функции понимают замену по определенному правилу одной функции другой, близкой к исходной в том или ином смысле. Практическая необходимость в такой замене возникает в самых различных ситуациях, когда данную функцию необходимо заменить более простой и удобной для вычислений, восстановить функциональную зависимость по экспериментальным данным, и т.п.
Основоположником теории
аппроксимации функций является
великий русский математик
В качестве приближающих функций выбирают чаще всего алгебраические и тригонометрические многочлены. Так же важное значение имеет метод наилучшего приближения, предложенный Чебышевым. Он возник из решения практических задач, связанных с конструированием прямолинейно направляющих шарнирных механизмов. Такие механизмы в XIX веке использовались в паровых машинах- основных универсальных двигателях того времени- для поддержания прямолинейного движения поршневого штока. К ним относятся параллелограмм Уатта и некоторые его разновидности.
На дальнейшее развитие этой теории оказало влияние открытие, сделанное в конце XIX века немецким математиком Карлом Вейерштрассом. Им была доказана принципиальная возможность приближения произвольной непрерывной функции с любой заданной степенью точности алгебраическим многочленом, что явилось второй причиной применения этих многочленов как универсального средства приближения функций, с заданной сколь угодно малой ошибкой.
Кроме алгебраических многочленов, другим средством приближения функций являются тригонометрические многочлены, значение которых в современной математике, конечно, не исчерпывается указанной ролью.
Постановка задачи
Дана периодическая функция f(x) с периодом Т, заданной амплитудой А, длительностью сигнала t и затуханием сигнала .
A
С помощью разложения функции в ряд Фурье, нужно аппроксимировать заданную функцию на интервале [-П,П].
Для этого необходимо рассмотреть заданную функцию на интервале (-L,L):
-L 0.5 L
Краткие сведенья и расчетные формулы.
При решении различных задач физики и математики, часто бывает необходимо осуществить разложение периодической функции с периодом 2П в тригонометрический ряд, один из таких рядов – это ряд Фурье:
(1).
Если ограничиться конечным числом
слагаемых, то формулу (1) можно представить
к виду:
)
Коэффициенты Фурье , рассчитываются по следующим формулам:
Если рассматривается
)
Где w-циклическая частота равная отношению = .
Текст программы
#include<fstream.h>
#include<math.h>
double ishod(double x); //функция с помощью которой мы вычисляем значение f(x)
double koef_a0 (double(*f)(double)); //функция вычисления коэффициента
double koef_a (int k,double(*f) (double)); //функция вычисления коэффициента
double koef_b (int k); //функция вычисления коэффициента
double aproks (double m,double x); // функция для расчета аппроксимации
const double l=1.5;
double w=acos(-1)/l; //задаем значение циклической частоты
int N=50; // N- количество разбиений при расчете интегралов
void main(void)
{
double x=-l,eps,y,y1;
int m,i=0;
cout<<"m=,eps="<<endl;
cin>>m>>eps;
ofstream f1,f2;
f1.open("C:\\ak11.txt");
while(x<=1)
{
y1=ishod(x);
f1<<x<<' '<<y1<<endl;
x+=0.01;
}
f1.close();
f2.open("C:\\ak2.txt");
x=-l;
while (x<=l)
{
y=aproks(m,x);
f2<<x<<" "<<y<<endl;
x+=eps;
}
f2.close();
}
double koef_a0(double (*rt)(double))
{
double x=-l,h=2*l/N,s=0;
for(int i=0;i<N;i++)
s+=rt(x+i*h);
return s*h/l;
}
double aproks(double m, double x)
{
double ak,bk,a0,s=0;
for(int k=1;k<=m;k++)
{
ak=koef_a(k,ishod);
bk=koef_b(k);
s+=ak*cos(k*w*x)+bk*sin(k*w*x)
}
a0=koef_a0(ishod);
return a0/2+s;
}
double koef_a(int k,double(*f)(double))
{
double x=-l,h=2*l/N,s=0;
for(int i=0;i<N;i++)
s+=f(x+i*h)*cos(k*w*(x+i*h));
return s*h/l;
}
double koef_b(int k)
{
double x=-l,h=2*l/N,s=0,y;
for(int i=0;i<N;i++)
{
y=ishod(x+i*h);
s+=y*sin(k*w*(x+i*h));
}
return s*h/l;
}
double ishod(double x)
{
double y;
if (x>-l && x<=0.5)
y=1.5;
else if (x>0.5 && x<l)
y=-1.5*(x-0.5)+1.5;
else if (x==-1.5)
y=0;
return y;
}
Рассчитав параметры x и у и сохранив их в текстовом файле в виде таблицы значений , расположенном по адресу: C:\\ak11.txt (для построения графика заданной функции) ,а также C:\\ak2.txt (для наложения на заданную функцию аппроксимации).
Используя программу Matlab построим наш график с помощью функции
function vizov
graph23('D:\ak11.txt','b')
hold on
graph23('D:\ak2.txt','r')
function graph23(fname,color)
[f,er]=fopen(fname,'rt');
if f~=-1
s=[];
while(~feof(f))
m=str2num(fgetl(f));
s=[s;m];
end;
plot(s(:,1),s(:,2),color);
else
disp(er)
end
В ходе работы точность аппроксимации можно было изменять с помощью количества разбиений N,чем больше значение N,тем точнее аппроксимация.
Все расчеты проведены средствами пакета Matlab 7.11.0(R2010b) и
Microsoft Visual C++6.0
1.Павловская Т.А. С/С++ « Программирование на языке
высокого уровня». ……………………………
2. У. Топп, У. форд «Структура данных в С++»………………………. 2006г.
3.Харви Дейтл и Пол Дейтл «Как программировать на С++»………...2009г.
4.Стэнли Б. Липпман. «Язык программирования С++»……………….2007г.
Информация о работе Аппроксимация периодических функций методом разложения в ряд Фурье