- •1.1.2 Структура функцій програми
- •1.1.3 Правила синтаксису
- •1.1.4. Типи даних
- •1.1.5. Функції введення та виведення даних
- •1.2 Приклад програми Умова задачі
- •Особливості використання функцій вводу та виводу
- •1.3 Технологія виконання лабораторної роботи
- •1.4. Варіанти завдань
- •1.5 Контрольні запитання
- •Розгалужені обчислювальні процеси Лабораторна робота 2
- •2.1 Теоретичні відомості
- •2.1.1. Вибір із двох альтернатив
- •2.1.2. Вкладеність конструкцій вибору
- •2.1.3. Операторний блок
- •2.1.4. Поліваріантний вибір
- •2.2. Приклади програм
- •2.3. Варіанти завдань
- •2.4 Контрольні запитання
- •Циклічні обчислювальні процеси Лабораторна робота 3
- •3.1 Теоретичні відомості
- •3.1.1. Цикл із передумовою
- •3.1.2. Цикл із постумовою
- •3.1.3. Цикл із лічильником
- •3.1.4. Переривання та продовження циклу
- •3.2. Приклад алгоритму та програми
- •3.3. Варіанти завдань
- •3.4 Контрольні запитання
- •Цикли з розгалуженням Лабораторна робота 4
- •4.1 Теоретичні відомості
- •4.1.1. Рекурентні співвідношення
- •4.1.2. Функції користувача
- •4.2. Приклад алгоритму та програми
- •Алгоритм задачі
- •Код програми
- •4.3. Варіанти завдань
- •4.4 Контрольні запитання
- •Рекурсивні функції Лабораторна робота 5
- •5.1 Теоретичні відомості
- •5.2. Приклад алгоритму та програми
- •5.3. Варіанти завдань
- •6.1.2. Оголошення та ініціалізація
- •6.1.3. Операції над покажчиками
- •6.1.4. Методи розв’язанні нелінійних рівнянь
- •6.2. Приклад алгоритму та програми
- •6.3. Варіанти завдань
- •6.4 Контрольні запитання
- •Одновимірні масиви Лабораторна робота 7
- •7.1 Теоретичні відомості
- •7.2. Приклад алгоритму та програми
- •Алгоритм програми
- •Код програми
- •7.3. Варіанти завдань
- •7.4 Контрольні запитання
- •Багатовимірні масиви Лабораторна робота 8
- •8.1 Теоретичні відомості
- •8.1.1. Оголошення багатовимірних масивів. Доступ до елементів
- •8.1.2. Базові операції обробки двовимірних масивів
- •8.2. Приклад алгоритму та програми
- •8.3. Варіанти завдань
- •9.1.2. Деякі функції обробки рядків
- •9.2. Приклад алгоритму та програми
- •9.3. Варіанти завдань
- •9.4 Контрольні запитання
- •Структури та масиви структур Лабораторна робота 10
- •10.1 Теоретичні відомості
- •10.2. Приклад алгоритму та програми
- •Алгоритм задачі
- •Приклад коду
- •10.3. Варіанти завдань
- •10.4 Контрольні запитання
4.2. Приклад алгоритму та програми
Обчислити значення у, розвинувши функцію ех у ряд Тейлора, де x змінюється від -5 до 5 з кроком 1.
Алгоритм задачі
1. Увести початкове, кінцеве значення аргументу функції та його крок зміни.
2. Повторювати дії:
2.1. Задати поточне значення аргументу функції, що дорівнює початковому значенню;
2.2. Якщо поточне значення аргументу не більше за кінцеве, то виконати такі дії:
2.2.1. Якщо аргумент функції знаходиться в межах від -2 до +2, то визначити значення функції за стандартною функцією та за формулою ряду Тейлора, виконавши дії:
2.2.1.1. Визначити початкову суму ряду, що дорівнює 1;
2.2.1.2. Задати точність розрахунків поточного елемента ряду;
2.2.1.3. Задати початкову кількість елементів ряду, що дорівнює 1.
2.2.1.4. Поки значення поточного елемента ряду більше за значення точності розрахунків повторювати такі дії:
-
визначити значення елемента ряду;
-
додати значення елемента ряду до суми;
-
перейти до наступного елемента ряду.
2.2.2. Визначити похибку.
2.2.3. Якщо аргумент функції менший за -2, то визначити значення функції за формулою ряду Тейлора, стандартною функцією та похибку.
2.2.4. Якщо функцію не визначено при заданих значеннях аргументу, то задати значення 1 для ознаки невизначеності функції, вивести відповідне повідомлення, інакше вивести значення функції та похибку.
2.3. Змінити поточне значення аргументу функції.
2.4. Перейти до дій п. 2.2.
3. Кінець повторень
Код програми
// |e^x - e^x/2, if -2 ≤ x ≤ 2
// Y={
// |e^(x+3)+1, if x < -2
// x between -5, 5, step 1
//e^x=1 + x / 1! + x2 / 2! + x3 / 3! + ...
#include <stdio.h> //підключення бібліотек уведення-виведення
#include <conio.h>
#include <math.h> //підключення бібліотек математичних функцій
float y, //вираз за формулою Тейлора
st, //значення стандартної функції exp()
x, //аргумент функції
xn, xk, //початкове, кінцеве значення аргументу
xs, err, //крок зміни аргументу та похибка
t; //точність розрахунків
bool flag=true; // прапорець для визначення можливості //розрахунку функції
//////// обчислення експоненти за формулою Тейлора /////////
double expon(float a)
{ //e^a=1 + a^1 / 1! + a^2 / 2! + a^3 / 3! + ...
//параметр a - аргумент функції e^a
float sum=1; //сума членів ряду
int i=1; //знаменник елемента ряду
float member=1; //поточний елемент ряду
while (member>t) //поки поточний елемент перевищує
{ //точність розрахунків
member*= a/i; //поточний елемент за
// формулою Тейлора
sum+=member; //накопичення суми
i++;
} //перехід до нового елемента ряду
return sum; //повернення значення експоненти з функції
}
/////////////////// основна функція //////////////////////
int main (void)
{
puts("lab4: calculation exponention function");
printf("\n input xn, xk, xs (-5 5 1)\n");
scanf("%f%f%f", &xn, &xk, &xs);
printf("\n input t \n");
scanf("%f", &t);
puts("===================================================");
printf(" x y standart error \n");
puts("===================================================");
for ( x=xn;x<=xk;x+=xs) //цикл перебору значень аргументів функції
{ if (x>=-2&&x<=2) //перевірка умов вибору
{ //розрахункової функції
y=expon(x)-expon(x/2); //визначення функції за
// формулою Тейлора
st=exp(x)-exp(x/2); //визначення функції за
//стандартною формулою
err=fabs(st - y); //розбіжності між точним і
//наближеним значеннями функції
}
else if (x<-2)
{
y=expon(x+3)+1;
st=exp(x+3)+1;
err=fabs(st-y);
}
else if (x>2) flag =false; // функцію не визначено
if ( flag) //якщо функцію визначено, то вивести
// її значення
printf (" %f %f %f %f \n", x, y, st, err);
else printf (" %f not define \n", x ); //функцію не визначено
}
getch();
}
Рис. 4.1. Результати роботи програми ex4.1