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