Курсовая раота по функану. Расчеты с применением Матлаб.
Работы ЛЮБОЙ сложности в MATLAB, для заказа -- контакты в шапке сайта.
Содержание
1. Аппроксимация функции x(t) = t / exp(t2)
1.1. Аппроксимация функции x(t) = t / exp(t2) рядом Фурье 3
1.2. Аппроксимация функции x(t) = t / exp(t2)
ортогональными полиномами Лежандра 8
2. Аппроксимация кусочно линейной функции x(t)
2.1. Аппроксимация кусочно линейной функции x(t) рядом Фурье 9
2.2. Аппроксимация кусочно линейной функции x(t)
ортогональными полиномами Лежандра 14
Список литературы 16
1. Аппроксимация функции x(t) = t / exp(t2)
Данная функция монотонная, не имеющая разрывов в силу отсутствия у экспоненты нулевых значений.
x(t) определена при всех значениях аргумента: - ∞<t<+∞.
1.1. Аппроксимация функции x(t) = t / exp(t2) рядом Фурье
Примем за интервал разложения в ряд Фурье область -1<t<+1. [1]
Тогда T=2, T/2=1 и функцию можно представить в виде:
(1.1)
где коэффициенты разложения: [2], [3]
(1.2)
T – период сигнала (функции);
ωk=2πk/T – циклическая частота k-ой гармоники;
Ak=(ak2 + bk2)1/2 – амплитуда k-ой гармоники;
Вычислим по формулам (1.2) коэффициенты разложения.
Свободный член: [4]
Коэффициент k-ой гармоники при косинусоиде:
.
Данный интеграл не выражается через элементарные функции.
Аналогично находим коэффициент k-ой гармоники при синусоиде:
.
Данный интеграл не выражается через элементарные функции.
Однако, значения данных коэффициентов можно получить численным интегрированием:
Из данной таблицы видно. что коэффициенты при косинусах с высокой точностью нулевые и в разложении участвуют только слагаемые синусоидальных гармоник. Таким образом, ряд Фурье (1.1) с порядком разложения kmax=n=4 для функции x(t)=t/exp(t2) принимает вид:
.
График данного разложения в сравнении с графиком теоретической функции имеет вид:
Здесь так же оценено (по узловым точкам) среднеквадратическое отклонение аппроксимированных значений от теоретических: δx=0.013253.
Текст программы для расчёта данной аппроксимации:
% Программа расчёта коэф-тов ряда Фурье
% Функции x(t)=t/exp(t^2), пример а)
clear all; clc; close all;
% Диапазон разложения
tmax=1;
tmin=-1;
T=tmax-tmin; % Период
T2=T/2; % Полупериод
kmax=51; % число узловых (расчётных) точек
% Линейка значений t:
t=linspace(tmin,tmax,kmax);
% Рисуем теоретический график функции
x=t./exp(t.^2);
figure(1);
% Рисуем график в 1-м окне
plot(t,x,'b-','LineWidth',2);
hold on;
% Выводим обозначения осей
xlabel('t, s'); ylabel('x(t), mkT');
% Масштабируем оси
axis([tmin tmax min(x) max(x)]);
% Название графика:
title('Furie Approximation for x(t)=t/exp(t^2)');
% Выводим координатную сетку
grid on;
pause(1);
hold off;
% Рисуем сложение гармоник Фурье
% Нулевой член находим, интегрируя методом трапеций:
a0=trapz(t,x)/T;
xf(1:kmax)=a0;
%deltaFc=deltaFc';
% Цикл расчёта Амплитуд гармоник F(k)
for k=1:4
a(k)=trapz(t,x.*cos(pi*k*t/T2))/T2;
b(k)=trapz(t,x.*sin(pi*k*t/T2))/T2;
xf=xf+a(k)*cos(pi*k/T2*t)+b(k)*sin(pi*k/T2*t);
plot(t,x,'b-','LineWidth',2);
hold on;
% Рисуем 2-ой график
plot(t,xf,'.r','LineWidth',2);
% Масштабируем оси
axis([tmin tmax min(xf) max(xf)]);
% Расчёт среднеквадратического отклонения:
dx=sqrt(sum((x-xf).^2))/kmax;
% Выводим координатную сетку
grid on;
% Название графика:
title(strcat('Waves Sum for k=',num2str(k),'; dx=',num2str(dx)));
hold off;
pause(0.5);
%if dd<epsilon
% Выходим из цикла расчёта гармоник
% если достигнута требуемая точность
% break;
%end;
end;
hold on;
plot(t,xf,'k-','LineWidth',3);
hold off;
1.2. Аппроксимация функции x(t) = t / exp(t2) ортогональными полиномами Лежандра
Многочлены Лежандра – система многочленов, для которых условие ортогональности в чистом виде выполняется на отрезке [-1; 1]:
(1.3)
В явном виде порождаются формулой Родрига:
(1.4)
Либо, зная первые в этой системе многочленов:
все последующие можно получить по рекуррентной формуле:
(1.5)
Этот вариант для построения численного алгоритма наиболее приемлемый.
Определив в явном виде полиномы до требуемого порядка разложения n:
(1.6)
Можем вычислить коэффициенты:
(1.6)
где ;
.
Откуда, (1.7)
или для данной функции примера 9а):
(1.7а)
Результаты расчёта значений функции, аппроксимированных полиномами Лежандра до 4-го порядка включительно, представлены на графике ниже. Для сравнения приводится график точных теоретических значений функции, среднее квадратичное отклонение от которого по всем аппроксимированным значениям составляет δx=0.001729.
Текст программы для расчёта аппроксимации полиномами Лежандра:
% Программа расчёта коэф-тов ряда по полиномам Лежандра
% Функции x(t)=t/exp(t^2), пример а)
clear all; clc; close all;
% Диапазон разложения
tmax=1;
tmin=-1;
T=tmax-tmin; % Период
T2=T/2; % Полупериод
kmax=51; % число узловых (расчётных) точек
% Линейка значений t:
t=linspace(tmin,tmax,kmax);
% Рисуем теоретический график функции
x=t./exp(t.^2);
figure(1);
% Рисуем график в 1-м окне
plot(t,x,'b-','LineWidth',2);
hold on;
% Выводим обозначения осей
xlabel('t, s'); ylabel('x(t), mkT');
% Масштабируем оси
axis([tmin tmax min(x) max(x)]);
% Название графика:
title('Legendre Approximation for x(t)=t/exp(t^2)');
% Выводим координатную сетку
grid on;
pause(1);
hold off;
% Рисуем сложение полиномов Лежандра:
% Нулевой член находим, интегрируя методом трапеций:
Lg(1,1:1)=[1];
c(1)=trapz(t,x.*polyval(fliplr(Lg(1,1:1)),t))*(2*0+1)/2;
xLg(1:kmax)=c(1)*polyval(fliplr(Lg(1,1:1)),t);
Lg(2,1:2)=[0 1];
c(2)=trapz(t,x.*polyval(fliplr(Lg(2,1:2)),t))*(2*1+1)/2;
xLg(1:kmax)=xLg(1:kmax)+c(2)*polyval(fliplr(Lg(2,1:2)),t);
% Цикл расчёта Амплитуд гармоник F(k)
for k=2:4
Lg(k+1,2:k+1)=(2*(k-1)+1)/k*Lg(k,1:k);
Lg(k+1,1:k+1)=Lg(k+1,1:k+1)-(k-1)/k*Lg(k-1,1:k+1);
c(k+1)=trapz(t,x.*polyval(fliplr(Lg(k+1,1:k+1)),t))*(2*k+1)/2;
xLg=xLg+c(k+1)*polyval(fliplr(Lg(k+1,1:k+1)),t);
plot(t,x,'b-','LineWidth',2);
hold on;
% Рисуем 2-ой график
plot(t,xLg,'.r','LineWidth',2);
% Масштабируем оси
axis([tmin tmax min(xLg) max(xLg)]);
% Расчёт среднеквадратического отклонения:
dx=sqrt(sum((x-xLg).^2))/kmax;
% Выводим координатную сетку
grid on;
% Название графика:
title(strcat('Waves Sum for k=',num2str(k),'; dx=',num2str(dx)));
hold off;
pause(0.5);
end;
hold on;
plot(t,xLg,'k-','LineWidth',3);
hold off;
2. Аппроксимация кусочно линейной функции x(t)
2.1. Аппроксимация кусочно линейной функции x(t) рядом Фурье
Дана функция: (2.1)
Примем за интервал разложения в ряд Фурье область -1<t<+1. [1]
Тогда период функции T=2, T/2=1 и функцию можно представить в виде (1.1), а коэффициенты разложения определяются по формулам (1.2).
Свободный член:
Коэффициент k-ой гармоники при косинусоиде:
,
где
- интеграл в первом слагаемом:
;
- интеграл во втором слагаемом:
;
Подставляя эти интегралы в выражение для ak получаем:
.
Аналогично находим коэффициент k-ой гармоники при синусоиде:
,
где
- интеграл в первом слагаемом:
;
- интеграл во втором слагаемом:
.
Подставляя эти интегралы в выражение для bk получаем:
.
Таким образом, разложение в ряд Фурье (1.1) принимает вид:
Из данной таблицы видно, что коэффициенты при косинусах с некоторой погрешностью нулевые и в разложении участвуют только слагаемые синусоидальных гармоник. Таким образом, ряд Фурье (1.1) с порядком разложения kmax=n=20 для функции (2.1) можно представить графиком в сравнении с графиком теоретической функции.
Здесь так же оценено (по узловым точкам) среднеквадратическое отклонение аппроксимированных значений от теоретических: δx=0.0084402.
Текст программы для расчёта данной аппроксимации:
% Программа расчёта коэф-тов ряда Фурье
% Функции x(t)=-1-t,t<0; x(t)=1-t пример б)
clear all; clc; close all;
% Диапазон разложения
tmax=1;
tmin=-1;
T=tmax-tmin; % Период
T2=T/2; % Полупериод
kmax=51; % число узловых (расчётных) точек
% Линейка значений t:
t=linspace(tmin,tmax,kmax);
% Рисуем теоретический график функции
x(1:fix(kmax/2)+1)=-1-t(1:fix(kmax/2)+1);
x(fix(kmax/2)+1:kmax)=1-t(fix(kmax/2)+1:kmax);
figure(1);
% Рисуем график в 1-м окне
plot(t,x,'b-','LineWidth',2);
hold on;
% Выводим обозначения осей
xlabel('t, s'); ylabel('x(t), mkT');
% Масштабируем оси
axis([tmin tmax min(x) max(x)]);
% Название графика:
title('Furie Approximation for x(t)=t/exp(t^2)');
% Выводим координатную сетку
grid on;
pause(1);
hold off;
% Рисуем сложение гармоник Фурье
% Нулевой член находим, интегрируя методом трапеций:
a0=trapz(t,x)/T;
xf(1:kmax)=a0;
%deltaFc=deltaFc';
% Цикл расчёта Амплитуд гармоник F(k)
for k=1:20
a(k)=trapz(t,x.*cos(pi*k*t/T2))/T2;
b(k)=trapz(t,x.*sin(pi*k*t/T2))/T2;
xf=xf+a(k)*cos(pi*k/T2*t)+b(k)*sin(pi*k/T2*t);
plot(t,x,'b-','LineWidth',2);
hold on;
% Рисуем 2-ой график
plot(t,xf,'.r','LineWidth',2);
% Масштабируем оси
axis([tmin tmax min(x) max(x)]);
% Расчёт среднеквадратического отклонения:
dx=sqrt(sum((x-xf).^2))/kmax;
% Выводим координатную сетку
grid on;
% Название графика:
title(strcat('Waves Sum for k=',num2str(k),'; dx=',num2str(dx)));
hold off;
pause(0.5);
%if dd<epsilon
% Выходим из цикла расчёта гармоник
% если достигнута требуемая точность
% break;
%end;
end;
hold on;
plot(t,xf,'k-','LineWidth',3);
hold off;
2.2. Аппроксимация кусочно линейной функции x(t) ортогональными полиномами Лежандра
Для функции примера 9б): ,
на интервале -1<t<+1 найдём коэффициенты разложения в ряд по полиномам Лежандра:
(1.7б)
Так, что получим график для аппроксимированной функции .
Текст программы для расчёта данной аппроксимации:
% Программа расчёта коэф-тов ряда по полиномам Лежандра
% Функции x(t)=-1-t,t<0; x(t)=1-t пример б)
clear all; clc; close all;
% Диапазон разложения
tmax=1;
tmin=-1;
T=tmax-tmin; % Период
T2=T/2; % Полупериод
kmax=51; % число узловых (расчётных) точек
% Линейка значений t:
t=linspace(tmin,tmax,kmax);
% Рисуем теоретический график функции
x(1:fix(kmax/2)+1)=-1-t(1:fix(kmax/2)+1);
x(fix(kmax/2)+1:kmax)=1-t(fix(kmax/2)+1:kmax);
figure(1);
% Рисуем график в 1-м окне
plot(t,x,'b-','LineWidth',2);
hold on;
% Выводим обозначения осей
xlabel('t, s'); ylabel('x(t), mkT');
% Масштабируем оси
axis([tmin tmax min(x) max(x)]);
% Название графика:
title('Legendre Approximation for x(t)=t/exp(t^2)');
% Выводим координатную сетку
grid on;
pause(1);
hold off;
% Рисуем сложение полиномов Лежандра:
% Нулевой член находим, интегрируя методом трапеций:
Lg(1,1:1)=[1];
c(1)=trapz(t,x.*polyval(fliplr(Lg(1,1:1)),t))*(2*0+1)/2;
xLg(1:kmax)=c(1)*polyval(fliplr(Lg(1,1:1)),t);
Lg(2,1:2)=[0 1];
c(2)=trapz(t,x.*polyval(fliplr(Lg(2,1:2)),t))*(2*1+1)/2;
xLg(1:kmax)=xLg(1:kmax)+c(2)*polyval(fliplr(Lg(2,1:2)),t);
% Цикл расчёта Амплитуд гармоник F(k)
for k=2:20
Lg(k+1,2:k+1)=(2*(k-1)+1)/k*Lg(k,1:k);
Lg(k+1,1:k+1)=Lg(k+1,1:k+1)-(k-1)/k*Lg(k-1,1:k+1);
c(k+1)=trapz(t,x.*polyval(fliplr(Lg(k+1,1:k+1)),t))*(2*k+1)/2;
xLg=xLg+c(k+1)*polyval(fliplr(Lg(k+1,1:k+1)),t);
plot(t,x,'b-','LineWidth',2);
hold on;
% Рисуем 2-ой график
plot(t,xLg,'.r','LineWidth',2);
% Масштабируем оси
axis([tmin tmax min(xLg) max(xLg)]);
% Расчёт среднеквадратического отклонения:
dx=sqrt(sum((x-xLg).^2))/kmax;
% Выводим координатную сетку
grid on;
% Название графика:
title(strcat('Waves Sum for k=',num2str(k),'; dx=',num2str(dx)));
hold off;
pause(0.5);
end;
hold on;
plot(t,xLg,'k-','LineWidth',3);
hold off;
Список литературы
1. Пискунов Н.С. Дифференциальное и интегральное исчисление, том 2. – М.: «Наука», 1985. – 560 с.
2. Вержбицкий В.М. Основы численных методов.–М.: Высш. шк., 2002.–840с.