Смекни!
smekni.com

Розвязок інтеграла методом Чебиша Гауса Сімпсона (стр. 2 из 4)

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)

Логічна схема програми


Функція Chebyshev

1) Назва функції – Chebyshev.

2) Заголовок функції - Chebyshev(int m).

3) Вхідні та вихідні дані.

Таблиця 2.5 - Перелік вхідних даних

Математичний зміст
Іденти-фікатор Діапазон значень Тип даних Приклад використання
Значення підінтегральної функції 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) Логічна схема програми


Функція Gaus

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) Логічна схема програми


Функція F

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)

4) Логічна схема програми

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("+---- Про автора -----------------------+&bsol;n"); gotoxy(dx2,3);

cprintf("¦ Автор: ст. гр. 5АС-02 Болоненков А.С. ¦&bsol;n"); gotoxy(dx2,4);

cprintf("+---------------------------------------+");

}

void zavdannja(){ /* Виведення допомоги */

/* cls1();*/

gotoxy(dx2,2);

textattr(ct+ (ctfp << 4));

cprintf("+----

Завдання ---+&bsol;n"); gotoxy(dx2,3);

cprintf("¦ Застосування точного рiвняння Ейлера-Бернулi для великих ¦&bsol;n"); gotoxy(dx2,4);

cprintf("¦деформацiй бруса призводить до елiптичних iнтегралiв. Елiп-¦&bsol;n"); gotoxy(dx2,5);

cprintf("¦тичний iнтеграл першого порядку (роду) записуэться у вигля-¦&bsol;n"); gotoxy(dx2,6);

cprintf("¦дi: ф¦&bsol;n"); gotoxy(dx2,7);

cprintf("¦+- ----------+ ¦&bsol;n"); gotoxy(dx2,8);

cprintf("¦¦ / 2 2 K¦&bsol;n"); gotoxy(dx2,9);

cprintf("¦ F(K,ф)=¦&bsol;/1-K*sin O dO, ¦&bsol;n"); gotoxy(dx2,10);

cprintf("¦¦¦&bsol;n"); gotoxy(dx2,11);

cprintf("¦ -+¦&bsol;n"); gotoxy(dx2,12);

cprintf("¦ 0¦&bsol;n"); gotoxy(dx2,13);

cprintf("¦ Дослiдити iнтеграл на ЕОМ при рiзних значеннях ф за допо-¦&bsol;n"); gotoxy(dx2,14);

cprintf("¦могою методiв Сiмпсона, Чебишева, Гауса. Результати розра-¦&bsol;n"); gotoxy(dx2,15);

cprintf("¦хункiв звести в таблицю. Точнiсть перевiрити, зрiвнюючи з¦&bsol;n"); gotoxy(dx2,16);

cprintf("¦табличним значенням. ¦&bsol;n"); gotoxy(dx2,17);

cprintf("¦ F(0,5;п/6)=0,52942863. ¦&bsol;n"); gotoxy(dx2,18);

cprintf("¦ Зробити висновки. ¦&bsol;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);