Лабораторна робота № 1

Інформація про навчальний заклад

ВУЗ:
Інші
Інститут:
Не вказано
Факультет:
КН
Кафедра:
Кафедра СКС

Інформація про роботу

Рік:
2011
Тип роботи:
Лабораторна робота
Предмет:
Алгоритми та методи обчислень

Частина тексту файла (без зображень, графіків і формул):

Міністерство освіти та науки України НТУУ “КПІ” Факультет прикладної математики Кафедра “СКС” Лабораторна робота № 1 з дисципліни „Алгоритми та методи обчислення” Київ 2011 ОБЧИСЛЕННЯ ЗНАЧЕНЬ ФУНКЦІЇ Мета роботи – дослідити особливості наближення функцій за допомогою рядів, виконати аналіз похибок наближення. Варіант 14 14 cosx [-31.3; -4.9]   Метод обчислення:  де   (k = 1, 2, …, n – 1) і   Файл main.cpp: /************************************************************************ *file: main.cpp *author: Stelmakh Georgiy, KB-93 *written: 16/09/2011 *last modified: 16/09/2011 ************************************************************************/ #include <cstdlib> #include <iostream> #include <math.h> using namespace std; int sign; // Positive or Negative X indicator //Ranges double a = - 31.3; double b = - 4.9; double x; int k, n_len; double tmp, U; //Determinating X sign void SignX(){ sign = 1; double pi = 3.1415926535897932384626433832795; if( x < 0 ){ x = -x; } while( x > pi * 2 ){ x -= pi * 2; } if( x >= pi ){ x -= pi; sign = -1; } } //1st TASK void FirstCos(){ tmp = 0; double eps = 1E-2; U = 1; k = 1; x = ( b - a ) / 2; printf( "1st task: x := %4.1f cos( x ) := %4.6f\n\n", x, cos( x ) ); printf( "%-10s%-10s%-15s%-20s%-20s", "EPS", "| n", "| cos(x[i])", "| Absolute error", "| Remainder term" ); printf( "\n------------------------------------------------------------------------\n" ); double real = x; SignX(); while( eps > 1E-14 ){ while( abs( U ) > eps ){ tmp += U; U *= - x * x / ( 2 * k * ( 2 * k - 1 ) ); k++; } // Storing n count for eps = 10^(-8) if( eps == 1E-8 ){ n_len = k - 1; } printf( "%.0e%5s", eps, "|" ); printf( "%2d%8s ", k - 1, "|" ); printf( "%f%7s", sign * tmp, "| " ); printf( "%.5e%7s ", abs( sign * tmp - cos( real ) ), "|" ); printf( "%.5e\n", abs( U ) ); eps /= 1E3; // Changing by 10^(-3) } printf( "\n" ); } //2nd TASK void SecondCos(){ printf( "2nd task:\n\n" ); printf( "%-7s%-15s%-14s%-20s%-20s", "x[i]", "| cos(x[i])", "| f", "| Absolute error", "| Remainder term" ); printf( "\n----------------------------------------------------------------------------\n" ); for( int i = 0; i <= 10; i++ ){ double h = ( b - a ) / 10; x = a + h * i; double Xi = x; printf( "%-.2f%2s", x, " " ); printf( "%9f%7s", cos( x ), " " ); SignX(); tmp = 0; U = 1; for( int n = 1; n <= n_len ; n++ ){ tmp += U; U *= - x * x / ( 2 * n * ( 2 * n - 1 ) ); } printf( "%9f%7s", sign * tmp, " " ); printf( "%.5e%7s ", abs( sign * tmp - cos( Xi ) ), " " ); printf( "%.5e\n", abs( U ) ); } printf( "\n" ); } int main(){ //1st TASK FirstCos(); //2nd TASK SecondCos(); system( "pause" ); return 0; } Вхідні дані та результат: / Графік залежності абсолютної похибки від X: /
Антиботан аватар за замовчуванням

28.03.2013 01:03-

Коментарі

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

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!