Войти на сайт

или
Регистрация

Навигация


6. Контрольні приклади та аналіз їх реалізації

Приклад 1: Інтегрування функції exp(x).

Приклад 2: Інтегрування функції sin(2*x)+x.


Приклад 3: Інтегрування функції log(x*x).

Дані методи інтегрування пов’язані з використанням наближених формул.

Тому результати, які ми отримуємо не є точними. Виходячи з геометричного

змісту цих методів найменша похибка буде в методі Сімпсона. Параболічні

трапеції, сумування площ яких використовується в методі парабол, є

найбільш наближеними до фігур, які утворює задана функція.


Висновки

У даній курсовій роботі я закріпив знання з дисципліни “Проблемно-орієнтовані мови програмування” і виконав поставлене в курсовій роботі завдання, а також реалізував програмне забезпечення на мові програмування Turbo C.

Даний програмний продукт при потребі може бути вдосконалений та розширений.


Список використаної літератури

1.Бахвалов Н.Б., Жидков Н.П., Коббельков Г.М. Числові методи.-М.:Наука,1987

2.Даниліна Н.І,, Дубровська Н.С., Кваша О.П. Числові методи.-М.:Вища шк.,1976

3.Рублев А.Н. Линейная алгебра. М.: Высшая школа, 1968.

4.Керниган Б., Ритчи Д. Язык программирования Си. - М.: Финансы и статистика, 1992.

5. Прата С. Язык программирования С. — М., СПб., К.: ДиаСофт, 2002.

6. Брєдлі Л., Ейткен П. Освой самостоятельно С за 21 день.-М.:Изд.дом “Вильямс”,2003.

7.Шпак З. Я. “Програмування мовою С”, 2006.


Додатки

Текст програми на мові Turbo C

#include<stdio.h>

#include<conio.h>

#include<math.h>

//Функція задання кольору фону

void Fon(void)

{

textcolor(15); textbackground(BLUE);

return;

}

//Функція задання кольору букв

void Bykvu(void)

{

textcolor(1);

textbackground(15);

return;

}

//Заголовок

void Poc(void)

{

Fon();

clrscr();

printf("\n\n\n\n\n\n\t\t\t╔══════════════════════════╗");

printf("\n\t\t\t║ ║");

printf("\n\t\t\t║ Курсова робота ║");

printf("\n\t\t\t║ на тему: ║");

printf("\n\t\t\t║ Обчислення інтегралу за ║");

printf("\n\t\t\t║ за допомогою формул прямокутників, ║");

printf("\n\t\t\t║ трапецій, Сімпсона. ║");

printf("\n\t\t\t║ ║");

printf("\n\t\t\t╚════════════════════════════════╝");

getch();

clrscr();

return;

}

//Головне меню

void Menu(void)

{

Fon();

clrscr();

Bykvu(); printf("\a\n\n\n\n\t\t╔════════════════════════════════╗");

printf("\n\t\t║ ║");

printf("\n\t\t║\t\t ");

cprintf(" МЕНЮ ");

printf("\t\t ║");

printf("\n\t\t║ ║");

printf("\n\t\t║ ");

cprintf("*1*");

printf(" ");

cprintf("Інтегрування функції");

printf(" --> ");

cprintf("натисніть");

printf(" ");

cprintf("F");

printf(" ║");

printf("\n\t\t║ ║");

printf("\n\t\t║ ");

cprintf("*2*");

printf(" ");

cprintf("Вихід");

printf(" -----------------> ");

cprintf("натисніть");

printf(" ");

cprintf("V");

printf(" ║");

printf("\n\t\t║ ║");

printf("\n\t\t╚═════════════════════════════════╝");

return;

}

//Меню вибору функції

void Vubir_Fun(void)

{

Fon();

clrscr();

Bykvu(); printf("\a\n\n\n\n\t\t╔════════════════════════════════╗");

printf("\n\t\t║ ║");

printf("\n\t\t║ ");

cprintf("Виберіть функцію:");

printf(" ║");

printf("\n\t\t║ ║");

printf("\n\t\t║ ");

cprintf("*");

printf(" ");

cprintf("exp(x)");

printf(" --------------> ");

cprintf("натисніть");

printf(" ");

cprintf("1");

printf(" ");

printf("║");

printf("\n\t\t║ ║");

printf("\n\t\t║ ");

cprintf("*");

printf(" ");

cprintf("sin(2*x)+x");

printf(" ----------> ");

cprintf("натисніть");

printf(" ");

cprintf("2");

printf(" ");

printf("║");

printf("\n\t\t║ ║");

printf("\n\t\t║ ");

cprintf("*");

printf(" ");

cprintf("log(x*x)");

printf(" ------------> ");

cprintf("натисніть");

printf(" ");

cprintf("3");

printf(" ");

printf("║");

printf("\n\t\t║ ║");

printf("\n\t\t║ ");

cprintf("*");

printf(" ");

cprintf("повернення в меню");

printf(" ---> ");

cprintf("натисніть");

printf(" ");

cprintf("4");

printf(" ");

printf("║");

printf("\n\t\t║ ║");

printf("\n\t\t╚═════════════════════════════════╝");

return;

}

//ввід меж інтегрування

void Megi(void)

{

Fon();

clrscr();

Bykvu();

printf("\n\t\t══════════════════════════\n");

printf("\t\t");

cprintf("Введіть межі інтегрування:");

printf("\n\t\t══════════════════════════\n");

return;

}

//ввід кроків

void Rozb(void)

{

printf("\n\n\t\t═════════════════════════\n");

printf("\t\t");

cprintf("Введіть кількість кроків:");

printf("\n\t\t═════════════════════════\n");

return;

}

//функція exp(w)

double fun1(double w)

{

return exp(w);

}

double fun2(double w)// функція sin(2*w)+w

{

return sin(2*w)+w;

}

// функція log(w*w)

double fun3(double w)

{

return log(w*w);

}

//обчислення за формулою „лівих” прямокутників

double Liv_pram(double (*fun)(double),double x,double h,int n)

{

double s;

int i;

s=fun(x);

for(i=0;i<n-1;i++){

x+=fabs(h);

s+=fun(x);

}

return printf("\n\tФормула лівих прямокутників: %g",(fabs(h)*s));

}

//обчислення за формулою „правих” прямокутників

double Prav_pram(double (*fun)(double),double x,double h,int n)

{

int i;

double s=0;

for(i=0;i<n;i++){

x+=fabs(h);

s+=fun(x);

}

return printf("\n\tФормула правих прямокутників: %g",(fabs(h)*s));

}

//обчислення за формулою трапецій

double Trap(double (*fun)(double),double x,double h,int n)

{

int i;

double s=0,y1;

y1=fun(x);

for(i=0;i<n-1;i++){

x+=fabs(h);

s+=fun(x);

}

x+=fabs(h);

s+=(fun(x)+y1)/2;

return printf("\n\tФормула трапецій:\t\t %g",(fabs(h)*s));

}

//обчислення за формулою Сімпсона

double Simp(double (*fun)(double),double x,double h,int a,int b,int n)

{

double s=0,s1;

int i,c=1;

for(i=0;i<n-1;i++){

x+=fabs(h);

s+=(3+c)*fun(x);

c=-c;

}

s1=fun(a)+fun(b);

return printf("\n\tФормула Сімпсона:\t\t %g",fabs(h)*(s+s1)/3)

}

//повідомлення про помилку

void Pomulka(void)

{

Fon();

clrscr();

Bykvu();

printf("\a\a\a\n\n\n\n\t\t\t╔════════════════════════╗ \n");

printf("\t\t\t║\t\t\t\t ║\n");

printf("\t\t\t║\t\t\t\t ║\n");

printf("\t\t\t║");

printf(" ");

cprintf("Ви допустили помилку !!!");

printf(" ║\n");

printf("\t\t\t║\t\t\t\t ║\n");

printf("\t\t\t║ ");

cprintf(" Натиснули невірну клавішу !!!");

printf(" ║\n");

printf("\t\t\t║\t\t\t\t ║\n");

printf("\t\t\t║\t\t");

cprintf(" ENTER ");

printf(" ║\n");

printf("\t\t\t║\t\t\t\t ║\n");

printf("\t\t\t╚════════════════════════════════╝\n");

getch();

return;

}

//меню закінчення

void Zakin(void)

{

Fon();

clrscr();

Bykvu();

printf("\n\n\n\n\t\t\t╔═══════════════════════════╗ \n");

printf("\t\t\t║\t\t\t\t ║\n");

printf("\t\t\t║");

printf(" ");

cprintf(" Хочите закінчити роботу? ");

printf(" ");

printf("║\n");

printf("\t\t\t║\t\t\t\t ║\n");

printf("\t\t\t║ ");

cprintf("*ТАК*");

printf(" ");

printf(" --------> ");

cprintf("натисніть");

printf(" ");

cprintf("Y");

printf(" ║");

printf("\n\t\t\t║\t\t\t\t ║\n");

printf("\t\t\t║ ");

cprintf("*НІ*");

printf(" ");

printf(" ---------> ");

cprintf("натисніть");

printf(" ");

cprintf("N");

printf(" ║");

printf("\n\t\t\t║\t\t\t\t ║\n");

printf("\t\t\t╚════════════════════════════════╝\n");

return;

}

//головна функція

int main(void)

{

int aa,bb,nn;

int vubir1;

double hh,xx;

clrscr();

Poc();

l2: Menu();

switch (getch())

{

case 'F': case 'f': {

{

l1: Vubir_Fun();

vubir1=getch();

fflush(stdin);

if (vubir1>52) {

Pomulka();

goto l1;

}

if(vubir1==52) goto l2;

l4: Megi();

printf("\t\ta=");

scanf("%d",&aa);

printf("\t\tb=");

scanf("%d",&bb);

if(vubir1==51)

if((aa<0)||(bb<0)){

printf("\t\tМежі мають бути додатні.Введіть нові.");

getch();

goto l4;

}

Rozb();

printf("\t\tn=");

scanf("%d",&nn);

hh=(double(aa-bb))/double(nn);

if(aa>bb) xx=bb;else xx=aa;

switch (vubir1)

{

case 49: {

Liv_pram(fun1,xx,hh,nn);

Prav_pram(fun1,xx,hh,nn);

Trap(fun1,xx,hh,nn);

Simp(fun1,xx,hh,aa,bb,nn);

getch();

break;

}

case 50: {

Liv_pram(fun2,xx,hh,nn);

Prav_pram(fun2,xx,hh,nn);

Trap(fun2,xx,hh,nn);

Simp(fun2,xx,hh,aa,bb,nn);

getch();

break;

}

case 51: {

Liv_pram(fun3,xx,hh,nn);

Prav_pram(fun3,xx,hh,nn);

Trap(fun3,xx,hh,nn);

Simp(fun3,xx,hh,aa,bb,nn);

getch();

break;

}

}

}

l3: Zakin();

switch (getch())

{

case 'N': case 'n': goto l2;

case 'Y': case 'y':return 0;

default:

Pomulka();

goto l3;

}

}

case 'V': case 'v': return 0;

default:

Pomulka();

goto l2;

}

}


Информация о работе «Обчислення визначених інтегралів за формулами прямокутників, трапецій та Сімпсона»
Раздел: Математика
Количество знаков с пробелами: 32265
Количество таблиц: 1
Количество изображений: 11

Похожие работы

Скачать
13276
1
4

... інченно зменьшується. Таким чином, при достатньо великому обидві ці формули відтворюють шукане значення з довільним рівнем точності. Параболічне інтерполювання. Для наближеного обчислення інтеграла можно спробувати замінити функцію « близьким» до неї многочленом (3) і покласти Можно сказати, що тут – при обрахуванні площі – дана « крива» замінюється на « параболу - го порядку» ...

Скачать
21512
1
14

... міняють оператор інтегрування на оператор сумування. Виникаюча при такій заміні похибка називається похибкою квадратурної формули. Задача чисельного інтегрування функцій полягає в обчисленні визначеного інтеграла за значеннями інтегруємої функції в ряді точок відрізка інтегрування. Функцію  заміняємо інтерполюємою функцією , а потім приблизно припускаємо [4]:  (1.2) Функція  повинна бути ...

Скачать
19981
2
3

... 2001): 2.68069545714219 Крок: 0.2 Інтеграл Чебишева 5-го порядку: 2.68069545714209 Загальна похибка: 0,00000000010 Точне розв’язання (Mathcad 2001): 2.68069545714219 Крок: 0.1 Висновки В даній курсовій роботі було проведене дослідження чисельних методів вирішення визначеного інтегралу виду I=, по методу Чебишева. Алгоритм методу є досить простим. Для його реалізації потрібно мати ...

Скачать
15523
4
13

... і похідну інтеграла F¢(x)=r(x)f(x). Краще скористатись інтерполяційним поліномом Ерміта. 4. Опис обчислювального алгоритму При реалізаціі алгоритму обчислення визначеного інтеграла зі змінними границями інтегрування використовуються процедури та функцiї, для того щоб скоротити витрати машинного часу при обчислюваннi, та для компактностi программи. Программа для знаходження ...

0 комментариев


Наверх