Частина тексту файла (без зображень, графіків і формул):
Мета роботи - засвоїти методику та виробити практичні навики застотування вкладених циклів.
Завдання:
Протабулювати функцію y= f(t)= ([(t+() mod 2(]((3)*sin(t)(1;
для 18 значень аргумента на інтервалі [-2(,(]. Функція задана аналітично та у вигляді ряду Фур’є:
.
a1=-1(2
ak=-2((-1)k((k2(1) N=5;
АНАЛІЗ ЗАДАЧІ.
Необхідно перетворити функцію s(t) з урахуванням конкретних значень bk, щоб привести цю функцію до зручного для обчислень вигляду. При описі виводу, чи в ескізі таблиці, передбачити виведення для кожного значення аргументу значень функції f(t) та s(t). Значення М для всіх варіантів обрані таким чином, що не виникає необхідності в поекранному виведенні даних.
РОЗРОБКА СТРУКТУРИ ДАНИХ.
Студент може розглянути (але не обов’язково) можливість використання масивів для зберігання коефіцієнтів ak і bk.
Окрім змінних, вказаних в завданні, необхідно передбачити змінні для зберігання констант, використаних у варіантах завдань для опису функцій f(t) i s(t). Якщо описують функції чи процедури, то необхідно описати їх вхідні та вихідні параметри, їх тип та призначення функції чи процедури.
Позначення
Ім’я
Тип
Призначення, опис
a
a
дійсна
Ліва межа інтервалу
b
b
дійсна
права межа інтервалу
d
d
дійсна
крок
t
t
дійсна
Аргумент функції, час
M
m
ціла
Кількість значень аргмента
ak
ak
дійсна
коефіцієнт
S(t)
S
дійсна
Функція задана аналітично
k
k
ціла
порядок
N
n
ціла
кількість перших членів ряду
F(t)
F(t)
дійсна
Функція задана у вигляді ряду Фур’є
3. РОЗРОБКА АЛГОРИТМУ.
Оскільки кількість членів ряду та точок табулювання є заданою, то для програмування обчислень зручно використати вкладені цикли з параметрами: внутрішній для обчислення суми ряду і зовнішній для зміни аргументу в заданих межах та виведення аргументу і результатів. Для обчислення коефіцієнтів ak і bk, f(t) використовують підпрограми-функції.
Текст програми
program project1; uses crt;
var a,b,d,t, ak,s:real;
m, k,n:integer;
function f(x:real):real;
begin
f:=(x+pi-trunc((x+pi)/(2*pi))*2*pi-pi*pi*pi)*sin(x)-1;
end;
function sk(x:real):real;
begin
sk:=ak*cos(k*x);
end;
begin
writeln('vvedit najmnshe znashennja argymenty');
readln(a);
writeln('vvedit najbilshe znashennja argymenty');
readln(b);
writeln('vvedit kilkist znashenn argymenty'); readln(m);
writeln('vvedit kilkist pershuh cleniv rjadu'); readln(n); ClrScr;
d:=(b-a)/(m-1);
t:=a; write('argyment'); write(' '); write('f(t)'); write(' '); writeln('s(t)');
while t<=b do
begin s:=0;
write(t:8:3); write(' '); write(f(t):8:3); write(' ');
for k:=1 to n do
begin
if (k mod 2=0) and(k<>1) then ak:=-2/(k*k-1);
if (k mod 2=1) and(k<>1) then ak:=2/(k*k-1);
if k=1 then ak:=-1/2 ;
s:=s+sk(t);
end;
writeln(s:8:3); t:=t+d;
end; readln;
end.
ТЕСТУВАННЯ ТА НАЛАГОДЖУВАННЯ.
Висновок:я засвоїв методику та виробив практичні навики застотування вкладених циклів та
ознайомився з:
- Програмною реалізацєю табулювання функцій;
-Обчисленнями суми ряду;
-Правилами запису вкладених циклів;
-Поняттями про періодичну функцію.
А також з правилами запису деяких функцій. Наприклад - x mod a = x(({x(a})(a, де {} ( операція взяття цілої частини.
Міністерство освіти і науки України
Національний університет «Львівська політехніка»
Інститут телекомунікацій, радіоелектроніки та електронної техніки
Кафедра теоретичної радіотехніки та радіовимірювань
ЗВІТ З ЛАБОРАТОРНОЇ РОБОТИ №8 НА ТЕМУ:
«ТАБУЛЮВАННЯ ФУНКЦІЇ, ЗАДАНОЇ РЯДОМ ФУР’Є.»
Підготував:
студент групи РТ-12
Степанчук О.
Прийняв:
Нестор Н. І.
Львів 2010р.