Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
210700_МУ_ПР_ЯП.doc
Скачиваний:
3
Добавлен:
01.07.2025
Размер:
539 Кб
Скачать
☆

Практическая работа 6 Методы вычислений.

Реализация алгоритмов вычислительной математики на языках программирования в визуальной среде DELPHI. Метод наименьших квадратов. Гармонический анализ

Цель работы:

Изучение методов обработки экспериментальных данных

Ознакомиться с численными алгоритмами метода наименьших квадратов, с ортогональными на дискретной сетке узлов системами функций (тригонометрический базис). Реализовать алгоритмы построения тригонометрических полиномов для аппроксимации периодических на произвольном отрезке дискретных сигналов.

  1. Применить учебную программу построения коэффициентов тригонометрического полинома для аппроксимации периодических сигналов, заданных на дискретных сетках периода [0..T]. Построить график полученного решения.

  2. Построить графики спектральных характеристик сигнала, используя процедуры построения графиков предыдущей лабораторной работы.

Образец выполнения задания:

Пусть функция f(t) задана на равномерной сетке отрезка [x0,x0 + T] и продолжена периодическим образом на всю ось. Следовательно, ее можно представить в виде тригонометрического полинома (как частичной суммы ряда Фурье), приближенно представляющего функцию:

Коэффициенты полинома вычисляются по формулам:

где h = T / N, xj = x0+j h, yj = f( xj), ( j=1..N) – значения функции на равномерной сетке. Для учета периодичности наложим на функцию дополнительно условие yN=(y0 + yN )/2.

Установим на форму компоненты, как на рисунке

Назначим событию OnClick кнопки Button1 операторы вычисления коэффициентов и опишем переменные и процедуры в разделе implementation как в приведенном ниже модуле (шрифт – жирный курсив). Сохраним проект в отдельной папке и отладив на конкретной функции f(x)=x, заданной на отрезке [-, ], применим эту программу для вычисления коэффициентов функций (по вариантам—индивидуально), затем используя предыдущую лабораторную работу, добавим к программе построение графика АЧХ, то есть величин коэффициентов в зависимости от их номеров.

unit trig;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls;

type

TForm1 = class(TForm)

Button1: TButton;

ListBox1: TListBox;

procedure Button1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.dfm}

const

N=50; {число узлов}

T=2*Pi; {период}

x0=-Pi;

h=T/N; {шаг сетки}

m=20;{число коэффициентов}

type

koeff=array[0..m] of real;

dann=array[0..N] of real;

var

Y:dann;

a,b:koeff;

function f(t:real):real;

begin

f:=t;

end;

procedure Trig(m,N:integer;Y:dann;var a,b:koeff);

var

j,k:integer;

p,q:real;

x:real;

begin

for k:=0 to m do

begin

p:=0;q:=0;

for j:=1 to N do

begin

x:=x0+j*h;

p:=p+Y[j]*cos(2*Pi*x*k/T);

q:=q+Y[j]*sin(2*Pi*x*k/T);

end;

a[k]:=p*2/N;

b[k]:=q*2/N;

end;

end;

procedure TForm1.Button1Click(Sender: TObject);

var

j:integer;

s1,s2,s3:string;

begin

for j:=0 to N do

Y[j]:=f(x0+j*h);

Y[N]:=(Y[0]+Y[N])/2;

Trig(m,N,Y,a,b);

for j:=0 to m do

begin

str(j:2,s1);

str(a[j]:8:4,s2);

str(b[j]:8:4,s3);

listbox1.Items.Add(s1+s2+s3);

end;

end;

end.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]