Частина тексту файла (без зображень, графіків і формул):
Мета роботи - засвоїти методику та виробити практичні навики застотування вкладених циклів.
ПОСТАНОВКА ЗАДАЧІ.
Необхідно перетворити функцію s(t) з урахуванням конкретних значень bk, щоб привести цю функцію до зручного для обчислень вигляду. При описі виводу, чи в ескізі таблиці, передбачити виведення для кожного значення аргументу значень функції f(t) та s(t). Значення М для всіх варіантів обрані таким чином, що не виникає необхідності в поекранному виведенні даних.
РОЗРОБКА СТРУКТУРИ ДАНИХ.
Студент може розглянути (але не обов’язково) можливість використання масивів для зберігання коефіцієнтів ak і bk.
Окрім змінних, вказаних в завданні, необхідно передбачити змінні для зберігання констант, використаних у варіантах завдань для опису функцій f(t) i s(t). Якщо описують функції чи процедури, то необхідно описати їх вхідні та вихідні параметри, їх тип та призначення функції чи процедури.
Позначення
Ім’я
Тип
Призначення, опис
a
a
дійсна
Ліва межа інтервалу
b
b
дійсна
права межа інтервалу
d
d
дійсна
крок
t
t
дійсна
Аргумент функції, час
M
m
ціла
Кількість значень аргмента
bk
bk
дійсна
коефіцієнт
S(t)
S
дійсна
Функція задана аналітично
k
k
ціла
порядок
N
n
ціла
кількість перших членів ряду
F(t)
F(t)
дійсна
Функція задана у вигляді ряду Фур’є
3. РОЗРОБКА АЛГОРИТМУ.
Оскільки кількість членів ряду та точок табулювання є заданою, то для програмування обчислень зручно використати вкладені цикли з параметрами: внутрішній для обчислення суми ряду і зовнішній для зміни аргументу в заданих межах та виведення аргументу і результатів. Для обчислення коефіцієнтів ak і bk, f(t) використовують підпрограми-функції.
4. Текст програми
program project1; uses crt;
var a,b,d,t, Bk,s:real;
m, k,n,g:integer;
function f(x:real):real;
begin
f:=abs(x+pi-trunc((x+pi)/(2*pi))*2*pi)-pi*pi*pi;
end;
function sk(x:real):real;
begin
sk:=bk*sin(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
write(t:8:3); write(' '); write(f(t):8:3); write(' ');
s:=0;
for k:=1 to n do
begin if (k+1) mod 2=0 then
g:=1 else g:=-1;
bk:=2*g/k;
s:=s+sk(t);
end;
writeln(s:8:3);
t:=t+d;
end;
readln;
end.
6.ТЕСТУВАННЯ ТА НАЛАГОДЖУВАННЯ.
Висновок: я засвоїв методику та виробив практичні навики застотування вкладених циклів та
ознайомився з:
- Програмною реалізацєю табулювання функцій;
-Обчисленнями суми ряду;
-Правилами запису вкладених циклів;
-Поняттями про періодичну функцію.
А також з правилами запису деяких функцій. Наприклад - x mod a = x(({x(a})(a, де {} ( операція взяття цілої частини.
Міністерство освіти і науки України
НУ «Львівська Політехніка»
Кафедра інформатики.
ЗВІТ
до лабораторної роботи №8
на тему:
«ТАБУЛЮВАННЯ ФУНКЦІЇ, ЗАДАНОЇ РЯДОМ ФУР’Є»
Підготував
студент гр. РТ-11
Васильчук
Богдан
Львів 2008