Побудова таблиці значень функції
ЗМІСТ
1. Завдання.
2. Постановка задач
2.1. Аналіз структури вхідних (початкових) даних задач.
2.2 . Визначення порядку підготовки і вводу вхідних даних
2.3. Визначення і опис супровідних діалогів
2.4. Аналіз структури, виду і типу результатів розрахунку
2.5. Розробка словесного алгоритму розв'язання завдання
2.6. Вибір математичних методів розрахунку
2.7. Розробка програмної структури завдання
2.8. Розробка текстових завдань
2.9. Вибір і обґрунтування мови програмування
2.10. Вибір і обґрунтування текстового редактора
3. Схеми алгоритмів
3.1. Таблиця прийнятих позначень змінних і констант
3.2. Схема алгоритму основної програми
3.3. Схема алгоритму розробленої підпрограми
4. Тексти програм
4.1. Текст текстової програми
4.2. Текст основної програми
4.3. Тексти розроблених підпрограм
5. Опис складених програмних модулів
5.1. Опис основної програми
5.2. Описи розроблених підпрограм
6. Роздрук результатів розрахунку
6.1. Роздруки результатів тестування
6.2. Роздрук результатів розрахунку
7. Аналіз результатів розрахунку
8. Перелік використаних літературних джерел
Завдання
Побудувати таблицю значень функції:
де х = 0,5,1…25
t = 0.44 при х>10
t = 0,25 при х=<10
а-сума елементів стовпця матриці С-А+В з максимальним елементом
b- визначник матриці С;
матриця А:
Визначник обчислити з допомогою стандартної підпрограми
Результати рахунку функції напечатати у вигляді двохмірної таблиці.
ПОСТАНОВКА ЗАДАЧІ.
Аналіз структури вхідних (початкових) даних задачі
Вхідними даними згідно завдання є:
- кількість кроків;
-верхня і нижня межа інтегрування;
-значення матриці;
Визначення порядку підготовки і вводу вхідних даних
Для відлагодження програмного забезпечення доцільно:
-значення скалярним величинам присвоювати в самому програмному модулі;
-значення масивів задавати за допомогою оператора масивів array;
Для роботи з програмним забезпеченням доцільно:
-значення скалярних величин вводити в діалоговому режимі за допомогою клавіатури;
-значення величин - масивів вводити в циклі а виведенням повідомлення про номер введеного елемента за допомогою клавіатури.
Вхідні дані по задачі будемо задавати в наступному порядку :
-задання кінцевого значення змінної і;
-задання кількості рівнянь системи ;
-задання матриці.
Аналіз структури, виду і типу результатів розрахунку
В даній роботі слід передбачити дві частини результатів. Перша -додаткові, або проміжні результати - значення параметрів а1 і b1.
Друга - таблиця результатів розрахунку з коренями, впорядкованими за зростанням їх значень.
Проміжні результати будемо виводити по рядках ,в наступному вигляді (по такому формату): а1:8:4, b1:8:4.
На екрані виводиться 8 символів, де 4 після коми.
Кожен символ - цифра від 0 до 9 причому таких рядків буде стільки, скільки значень прийматиме.
Друга частина включає основні результати розрахунку буде виведено:
- значення визначника;
-значення суми елементів стовпця матриці С з макс. елементом;
-таблиця значення функції:
Таблиця матиме такий вигляд:
Зведена таблиця результатів розрахунку:
ХY
Кожен рядок таблиці матиме приблизно такий вигляд:
## ###.##### ###.###### | ###.###### ###.###### | ###.####
де #- цифра від 0 до 9.
Розробка програмної структури завдання
Розроблене згідно завдання програмне забезпечення повинно складатися з таких складових частин:
- основної програми;
- розроблених самостійно підпрограм;
- використаних стандартних підпрограм;
Проаналізувавши словесний алгоритм задачі та бібліотеку стандартних програм приходимо до висновку, що розрахунок визначника розв'язання і друк результуючої таблиці доцільно проводити окремими програмними модулями (підпрограмами).Для розрахунку визначника описаного вище.
І друку результуючої таблиці використаємо стандартні підпрограми. Всі решта операції будемо виконувати в основній програмі.
Основна програма призначена для:
- вводу вхідних даних;
- організації циклічного перебору значень параметра І;
- підготовки даних для розв'язання ЛСАР;
- підготовки даних для друку таблиці.
Основна програма повинна виконувати таке функціональне навантаження:
a) в діалоговому режимі вводити і здійснювати контроль за правильністю вводу вхідних даних;
б) організувати циклічне виконання наступного переліку дій:
-підготовка даних і звертання до підпрограми розв'язку;
-запам'ятовування даних в масиві таблиці;
в) вивід шапки таблиці;
г) підготовка даних і звертання до підпрограми друку таблиці, використаних стандартних підпрограм повинно бути дві, призначені для:
перша - для визначення визначника.
Вибір і обґрунтування мови програмуванняДля розробки програмного забезпечення мною вибрано мову програмування Paskal, оскільки її можливості в цілком достатніми для виконання поставленої задачі. Paskal володіє потужним апаратом організації вводу-виводу а, відповідно, достатніми можливостями для розробки різноманітних діалогів. Крім того, для розробки та відлагодження самої програми доцільно вибрати середовище turbo-Pascal оскільки воно забезпечене відповідним текстовим редактором і потужними можливостями для відлагодження програми. Ще однією причиною вибору мови Paskal в наявність достатньої для виконання роботи бібліотеки стандартних програм.
Схеми алгоритмів
Таблиця прийнятих позначень змінних і констант.
Позначення вПризначення
ЗавданняСхемаПрограма
1234
ВХІДНІ МАСИВИ
NNКількість елементів рядка N
B(i,j)B(i,j)Матриця В
A(i,j)A(i,j)Матриця А
X(i)X(i)Масив хі
Скалярні величини:
ДОПОМІЖНІ
a1, b1a1, b1Проміжна текстова змінна
N$N$Текстова змінна для настройки напрям друку проміжних результатів
j$,i,j,lj$,i,j,lПроміжні змінні (лічильники циклу)
ВИХІДНІ
S$(i)S(i)Масив текстових величин-заголовків результуючої таблиці по стовпцях
Y(i)Y(i)Масив значень результуючої таблиці
ПОЯСНЕННЯ ДО СХЕМИ АЛГОРИТМУ ОСНОВНОЇ ПРОГРАМИ:
- блок 1 - початок програми;
- блок 2.3 - опис функцій користувача;
- блок 3 - виведення повідомлення про атрибути курсової роботи;
- блоки з 4 по 23 - введення вхідних даних в діалоговому режимі та контролю за правильністю їх вводу;
- блок 24 - початок циклу перебору елементів І;
- блок 29 - сума матриць
- блок 30 - максимальний елемент матриці
- блоки з 31 по 35 - підготовка даних і звертання до підпрограми розрахунку визначника методом Гауса
- блоки з 36, 38, Є 48 ,49- запам'ятовування чергового рядка таблиці;
- блок 58 - введення повідомлення про друк результатів;
- блоки з 50 по 59 - підготовка вхідних даних та звернення підпрограми виводу таблиці;
- блоки 60 - організація запиту і при потребі настройка програми на друк результатів на папір з перетворенням на повторне виконання блоків , починаючи з 50 ;
- блок 61- закінчення програми.
ТЕКСТИ ПРОГРАМ
Текст тестової програми
Вивід таблиць. Призначення: Вивід на екран (папір) в табличному вигляді декількох (<=5) змінних, які задані двовимірним масивом. Звертання: GOSUB 3000.
Опис параметрів: Вхідні: N - кількість рядків та стовпців.
Таблиці виводиться 10 позицій. Вихідні: немає. Допоміжні: I%, J%, L%, K%. Використовувані підпрограми і функції: немає. Вимоги до викликаючої програми: у викликаючій програмі необхідно:
-на початку основної програми перед звертання до підпрограми описати двовимірний масив А розміром не менше N х N і одновимірний масив X розміром І;
-перед звертанням до підпрограми змінні N,X повинні бути визначені;
-не використовувати I%, J%, L%, K% для позначення змінних в основній програмі, які не повинні бути зіпсуті в процесі роботи даної підпрограми.
Роздрук результатів розрахунку
Роздруки результатів тестування
Висновок: отже, в результаті проведеного тест програми для обчислення визначника методом Гауса встановлено, що отримані результати відповідають тестовому прикладові ручному з розрахунку.
{ ОСНОВНА ПРОГРАМА. }
{КУРСОВА РОБОТА СТУДЕНТА ГРУПИ ТБ-2
Program student (input,output);
uses
crt, student, printer ;
const
n-3; f-50;
type
mas=аггау[1..3,1..3] of real;
var
i,j,k:integer;
y,b1,al,cmax,t,xl:real;
a,b,c:dvmr;
x:array[l.,50] of real;
begin
writeln('введіть елементи матриці А');
for i:=l to n do
for j:=l to n do{ВВІД МАТРИЦІ А}
begin
writeln ('введіть a[',i,',j,']=');
readln (a[ij])
end;
writeln ('введіть елементи матриці b‘);
for i:=1 to n do
for j:=1 to n do {ВВІД МАТРИЦІ В}
begin
writeln ('введіть b[',і,',',j,']=');
readln (b[i,j])
end;
for i:=1 to n do
for j:=l to n do{СУМА МАТРИЦЬ А, Б }
c[i,j]:=a[i,j]+b[i,j];
cmax:=c[l,l];
for i:=l to n do
for j:=l to n do
if c[i,j]>=cmax then {ЗНАХОДЖЕННЯ МАКСИМАЛЬНОГО ЕЛЕМЕНТУ МАТРИЦІ С}
begin
cmax:=c[i,j];
k:=J
end;
for i:=l to n do
al:=al+c[i,k];
writeln (1st,'ЗНАХОДЖЕННЯ СУМИ ЕЛЕМЕНТІВ СТОВПЦЯ
МАТРИЦІ З М’}
writeln (lst’al=',al:8:4); bl:=det(b,n);
writeln (1st,'ЗНАХОДЖЕННЯ ВИЗНАЧНИКА МАТРИЦІ В');
writeln (lst,'bl=',bl:8:4);
for i:=l to f do begin
writeln ('введіть х[',і,']-');
readln( x[i]) {ВВІД ЕЛЕМЕНТІВ МАСИВУ X}
end;
writeln (1st,'--------------------------------------------------------------------------
writeln (1st,'*----------------x-------------------*---------------------------------у
writeln (1st,'-------------------------------------------------------------------------
for i:-l to f do
begin
if x[i]>10 then t:=0,44 else t:=0,25;
y:-(l+sqr(x[i])*sin(t*x[i]/4))/(l,5+al*bl);writeln (1st,'* ', x[i];8:3 , ' * ',y:8:3,'
writeln (1st, '-----------------------------------------------------------------------
end
end.
Підпрограма: Знаходження визначника матриці методом Гауса
<
Function Det (A: dvmr; N: integer): real;
Var i,j,k: integer;
d,y,w: real;
Begin
if (help_s=’h’) or (help_s=’H’) then begin ClrScr;
writeln (‘***********************************************’);
writeln (‘* Знаходження визначника матриці методом Гауса *’);
writeln (‘*<
writeln (‘*Вхідні дані: *’);
writeln (‘*N- кількість рядків матриці *’);
writeln (‘*A[i,j] - матриця коефіцієнтів. *);
writeln (‘***********************************************’);
readln; Exit;
end;
d:=1;
for i:=1 to N do begin
k:=1; y:=A[i,i];
for j:=i+1 to N begin
w:=A[j,i];
if Abs (w)>Abs(y) then begin
k:j; y:=w;
end;
end;
d:=d*y;
if d=0 then begin det:=0; Exit; end:
if I< >k then begin
d:=-d;
for j:=i to N do begin
w:=A[k,j];
A[k,j]:=A[i,j];
A[i;j]:=w;
End;
end;
for j:=i+1 to N do begin
w:=A[j,i]/y;
for k:=i+1 to N do A[j,k]:=A[j,k]-w*A[i,k];
end;
end;
Знаходження суми елементів стовпця матриці з максимальним елементом а1=20.6000
Знаходження визначника матриці В
b1=243.3330
*Х*Y*
*0.500*0.000*
*1.000*0.000*
*1.500*0.000*
*2.000*0.000*
*2.500*0.000*
*3.000*0.001*
*3.500*0.001*
*4.000*0.001*
*4.500*0.001*
*5.000*0.002*
*5.500*0.002*
*6.000*0.003*
*6.500*0.004*
*7.000*0.004*
*7.500*0.005*
*8.000*0.006*
*8.500*0.007*
*9.000*0.009*
*9.500*0.010*
*10.000*0.012*
*10.500*0.020*
*11.000*0.023*
*11.500*0.025*
*12.000*0.028*
*12.500*0.031*
*13.000*0.034*
*13.500*0.036*
*14.000*0.039*
*14.500*0.042*
*15.000*0.045*
*15.500*0.048*
*16.000*0.050*
*16.500*0.053*
*17.000*0.055*
*17.500*0.057*
*18.000*0.059*
*18.500*0.061*
*19.000*0.063*
*19.500*0.064*
*20.000*0.065*
*20.500*0.065*
*21.000*0.065*
*21.500*0.065*
*22.000*0.064*
*22.500*0.063*
*23.000*0.061*
*23.500*0.058*
*24.000*0.055
*24.500*0.052*
*25.000*0.048*