22. Вивести на екран таблицю значень інтегралів, а також тестове значення інтегралу, абсолютну та відносну похибку.
23. Очікувати натиснення будь-якої клавіші.
24. Перейти до пункту 1.
25. При виборі в підменю “Тестування” пункту ”Тест2” знайти значення визначеного інтегралу за методом Чебишева.
26. Вивести на екран таблицю значень інтегралів, а також тестове значення інтегралу, абсолютну та відносну похибку.
27. Очікувати натиснення будь-якої клавіші.
28. Перейти до пункту 1.
29. При виборі в підменю “Тестування” пункту ”Тест3” знайти значення визначеного інтегралу за методом Гауса.
30. Вивести на екран таблицю значень інтегралів, а також тестове значення інтегралу, абсолютну та відносну похибку.
31. Очікувати натиснення будь-якої клавіші.
32. Перейти до пункту 1.
33. При виборі в підменю “Виведення результатів” пункту ”Читати файл” підпункту “На екран” вивести із масиву на екран таблицю інтегралів.
34. Очікувати натиснення будь-якої клавіші.
35. Перейти до пункту 1.
36. При виборі в підменю “Виведення результатів” пункту ”Читати файл” підпункту “Друк” вивести із масиву на друк таблицю інтегралів.
37. Очікувати натиснення будь-якої клавіші.
38. Перейти до пункту 1.
39. При виборі в підменю “Вихід” вийти із програми.
2.4 Схема алгоритму головної програми
2.5 Опис основних функцій моделювання
Основними функціями при моделюванні заданої системи є:
1) Simpson(int m) – функція чисельного обчислення значення визначеного iнтегралу методом Сімпсона;
2) Chebyshev(int m) – функція чисельного обчислення значення визначеного iнтегралу методом Чебишева;
3) Gaus(int m1) – функція чисельного обчислення значення визначеного iнтегралу методом Гауса;
4) F(float O) – підінтегральна функція.
Функція Simpson
1) Назва функції – Simpson.
2) Заголовок функції - Simpson(int m).
3) Вхідні та вихідні дані.
Таблиця 2.3 - Перелік вхідних даних
Математичний зміст | Іденти-фікатор | Діапазон значень | Тип даних | Приклад використання |
Значення підінтегральної функції | F | 3.4E-38-3.4E+38 | Float | s=s+2*F(a); |
Таблиця 2.4 - Перелік вихідних даних
Математичний зміст | Ідентифікатор | Діапазон значень | Тип даних | Приклад використання |
Значення інтегралу | s | 3.4E-38-3.4E+38 | Float | s=s+2*F(a); |
4)
Логічна схема програмиМатематичний зміст | Іденти-фікатор | Діапазон значень | Тип даних | Приклад використання |
Значення підінтегральної функції | F | 3.4E-38-3.4E+38 | Float | s=s+F(x); |
Таблиця 2.6 - Перелік вихідних даних
Математичний зміст | Ідентифікатор | Діапазон значень | Тип даних | Приклад використання |
Значення інтегралу | s | 3.4E-38-3.4E+38 | Float | s=s+F(x); |
4) Логічна схема програми
1) Назва функції – Gaus.
2) Заголовок функції - Gaus(int m1).
3) Вхідні та вихідні дані.
Таблиця 2.7 - Перелік вхідних даних
Математичний зміст | Іденти-фікатор | Діапазон значень | Тип даних | Приклад використання |
Значення підінтегральної функції | F | 3.4E-38-3.4E+38 | Float | s=s+A[k-1]*F(x+h/2.0+t[k-1]*h/2.0); |
Таблиця 2.8 - Перелік вихідних даних
Математичний зміст | Ідентифікатор | Діапазон значень | Тип даних | Приклад використання |
Значення інтегралу | s | 3.4E-38-3.4E+38 | Float | s=s*h/2.0; |
4) Логічна схема програми
1) Назва функції – F.
2) Заголовок функції - F(int n,Float O).
3) Вхідні та вихідні дані.
Таблиця 2.9 - Перелік вхідних даних
Математичний зміст | Іденти-фікатор | Діапазон значень | Тип даних | Приклад використання |
Параметр К | К | 3.4E-38-3.4E+38 | Float | return sqrt(1-pow(K,2.0)*pow(sin(pow(O,K)),2.0)); |
Таблиця 2.10 - Перелік вихідних даних
Математичний зміст | Ідентифікатор | Діапазон значень | Тип даних | Приклад використання |
Значення підінтегральної функції | F | 3.4E-38-3.4E+38 | Float | F(float O) |
2.6 Структура комплексу програм для дослідження еліптичного інтегралу першого порядку на ЕОМ
Розроблена програма містить наступні функції:
1) main() – головна програма;
2) Simpson(int m) – функція чисельного обчислення значення визначеного iнтегралу методом Сімпсона;
3) Chebyshev(int m) – функція чисельного обчислення значення визначеного iнтегралу методом Чебишева;
4) Gaus(int m) – функція чисельного обчислення значення визначеного iнтегралу методом Гауса;
5) F(int n,float O) – підінтегральна функція;
6) cls1() - функція очищення робочого поля програми;
7) druk() - функцiя виводу результатiв на друк;
8) list() - функцiя виводу результатiв на екран;
9) Vvod() - функцiя введення початкових даних;
10) about() – функцiя виведення вiдомостей про автора;
11) zavdannja() – функцiя виведення завдання.
3 Лістинг програми
* Застосування точного рiвняння Ейлера-Бернулi для великих деформацiй бруса */
#include<conio.h>
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
const dx1=1,dy1=2,dx2=20;
const ct=4;
const ctf=3;
const ctfa=1;
const ctfp=7;
const cr=15;
const Pi=3.14;
float zr=0.52942863,zrS=1.398717474,zrC=1.398717533,zrG=1.398717474,aS=0.0,bS=1.0;
float K=0.5;
char s[20],s0[20],sb[20];
FILE *fp1,*fp2;
int i,j;
float x,e,ds;
float y[7],f[12];
char NameM[9];
void cls1(){ /* Очищення робочого поля програми */
int short i;
for(i=1;i<24;i++){
gotoxy(1,i+1);
textattr(15 + (0 << 4));
cprintf("____________________________________________________");
}
}
void about(){ /* Виведення вiдомостей про автора */
cls1();
gotoxy(dx2,2);
textattr(ct+ (ctfp << 4));
cprintf("+---- Про автора -----------------------+\n"); gotoxy(dx2,3);
cprintf("¦ Автор: ст. гр. 5АС-02 Болоненков А.С. ¦\n"); gotoxy(dx2,4);
cprintf("+---------------------------------------+");
}
void zavdannja(){ /* Виведення допомоги */
/* cls1();*/
gotoxy(dx2,2);
textattr(ct+ (ctfp << 4));
cprintf("+----
Завдання ---+\n"); gotoxy(dx2,3);
cprintf("¦ Застосування точного рiвняння Ейлера-Бернулi для великих ¦\n"); gotoxy(dx2,4);
cprintf("¦деформацiй бруса призводить до елiптичних iнтегралiв. Елiп-¦\n"); gotoxy(dx2,5);
cprintf("¦тичний iнтеграл першого порядку (роду) записуэться у вигля-¦\n"); gotoxy(dx2,6);
cprintf("¦дi: ф¦\n"); gotoxy(dx2,7);
cprintf("¦+- ----------+ ¦\n"); gotoxy(dx2,8);
cprintf("¦¦ / 2 2 K¦\n"); gotoxy(dx2,9);
cprintf("¦ F(K,ф)=¦\/1-K*sin O dO, ¦\n"); gotoxy(dx2,10);
cprintf("¦¦¦\n"); gotoxy(dx2,11);
cprintf("¦ -+¦\n"); gotoxy(dx2,12);
cprintf("¦ 0¦\n"); gotoxy(dx2,13);
cprintf("¦ Дослiдити iнтеграл на ЕОМ при рiзних значеннях ф за допо-¦\n"); gotoxy(dx2,14);
cprintf("¦могою методiв Сiмпсона, Чебишева, Гауса. Результати розра-¦\n"); gotoxy(dx2,15);
cprintf("¦хункiв звести в таблицю. Точнiсть перевiрити, зрiвнюючи з¦\n"); gotoxy(dx2,16);
cprintf("¦табличним значенням. ¦\n"); gotoxy(dx2,17);
cprintf("¦ F(0,5;п/6)=0,52942863. ¦\n"); gotoxy(dx2,18);
cprintf("¦ Зробити висновки. ¦\n"); gotoxy(dx2,19);
cprintf("+-----------------------------------------------------------+");
}
float F(int n,float O){ /* пiдiнтегральна функцiя */
if(n==0) return sqrt(1-pow(K,2.0)*pow(sin(pow(O,K)),2.0));
if(n>=1) return sqrt(2.0*O+1.0);
}
void Simpson(int m){ /* Обчислення iнтегралу методом Сiмпсона */
const n=8;
int i,j,k;
float b0,b9,a,h,s;
cls1();
textattr(ct+ (ctfp << 4));
gotoxy(1,2);
cprintf(" Метод Сiмпсона "); strcpy(NameM,"Сiмпсона");
if(m==0) {
gotoxy(1,3);
cprintf("+-----------------+");gotoxy(1,4);
strcpy(s0,gcvt(K,3,&sb));
cprintf("¦ fi ¦ F(%3s,fi) ¦",s0);gotoxy(1,5);
cprintf("+-----+-----------¦"); gotoxy(1,6);
b0=0.0;
for(i=1;i<=12;i++){
b9=Pi*i/6.0;
a=b0;
h=(b9-b0)/n;
s=F(m,b0)+F(m,b9);
k=1;
for(j=1;j<=n-1;j++){
a=a+h;
if(k!=1) s=s+2*F(m,a); else s=s+4*F(m,a);
k=-k;
}
s=s*h/3; f[i-1]=s;
cprintf("¦%2dп/6¦ %f ¦",i,s); gotoxy(1,6+i);
/*if(m==1)*/
if(i==1){
gotoxy(20,5+i);
ds=zr-s;
e=fabs(ds/zr)*100.0;
cprintf("табл. знач.=%f абс. пох.=%f вiдн. пох.=%f%%",zr,ds,e);
gotoxy(1,6+i);
}
}
cprintf("+-----------------+");
}
else{
b0=aS; b9=bS;
a=b0;
h=(b9-b0)/n;
s=F(m,b0)+F(m,b9);
k=1;
for(j=1;j<=n-1;j++){
a=a+h;
if(k!=1) s=s+2*F(m,a); else s=s+4*F(m,a);
k=-k;
}
s=s*h/3; f[i-1]=s;
cprintf(" - тест"); gotoxy(1,3);