
Тема: Розробка алгоритму та програмна реалізація обчислення складного математичного виразу.
Обсяг та зміст: Робота містить опис етапів створення консольного застосунку для розв’язання математичної задачі.
Основні результати: У ході виконання роботи було проаналізовано задану математичну формулу та здійснено її декомпозицію на підвирази для оптимізації обчислень. Розроблено детальний алгоритм у вигляді псевдокоду та блок-схеми.
Програмну реалізацію виконано мовою C# з використанням стандартної бібліотеки System.Math. У програмі реалізовано:
- Введення змінних користувачем із консолі.
- Перевірку області допустимих значень (ОДЗ) для логарифмічних функцій та коренів парного степеня.
- Обробку виняткових ситуацій (ділення на нуль, некоректний формат даних).
- Форматований вивід результату.
Програма демонструє практичне застосування базових алгоритмічних структур (лінійних та розгалужених) та методів роботи з типами даних.

using System;
namespace MathFormulaCalculation
{
class Program
{
static void Main(string[] args)
{
// Налаштування для коректного відображення кирилиці в консолі (Windows)
Console.OutputEncoding = System.Text.Encoding.UTF8;
try
{
// 1. Введення даних
Console.WriteLine("--- Обчислення значення виразу Y ---");
Console.Write("Введіть значення x: ");
double x = double.Parse(Console.ReadLine());
Console.Write("Введіть значення a: ");
double a = double.Parse(Console.ReadLine());
Console.Write("Введіть значення alpha (в радіанах): ");
double alpha = double.Parse(Console.ReadLine());
// 2. Обчислення констант
// 1.7 * 10^5 = 170000
double const1 = 1.7 * Math.Pow(10, 5);
// 0.5 * 10^(-1.5)
double const2 = 0.5 * Math.Pow(10, -1.5);
// 3. Обчислення чисельника (внутрішня частина U)
// Формула: U = cos(4*alpha) - ln^2(x+a)*e^x*x^3 - const1*a
// Перевірка області визначення логарифма
if ((x + a) <= 0)
{
Console.WriteLine("Помилка: Вираз під логарифмом (x + a) має бути більше 0.");
return;
}
double lnPart = Math.Log(x + a); // Натуральний логарифм ln
double lnSquared = Math.Pow(lnPart, 2); // ln^2(...)
double U = Math.Cos(4 * alpha)
- (lnSquared * Math.Exp(x) * Math.Pow(x, 3))
- (const1 * a);
// 4. Обчислення знаменника (аргумент тангенса V)
// Формула: V = x(x^3 + 5) + x^(a^2) - a * sqrt(x - const2)
// Перевірка області визначення кореня
if ((x - const2) < 0)
{
Console.WriteLine("Помилка: Вираз під коренем (x - const2) від'ємний.");
return;
}
double V = x * (Math.Pow(x, 3) + 5)
+ Math.Pow(x, Math.Pow(a, 2))
- a * Math.Sqrt(x - const2);
// 5. Фінальне обчислення Y
// Y = корінь кубічний(|U|) / tg(V)
double numerator = Math.Pow(Math.Abs(U), 1.0 / 3.0); // Корінь кубічний з модуля
double denominator = Math.Tan(V);
// Перевірка ділення на нуль (якщо tg(V) = 0)
if (Math.Abs(denominator) < 1e-10)
{
Console.WriteLine("Помилка: Знаменник дорівнює нулю (tg(V) = 0).");
}
else
{
double Y = numerator / denominator;
Console.WriteLine("\n---------------------------");
Console.WriteLine($"Результат Y = {Y:F4}"); // Виведення з точністю 4 знаки
Console.WriteLine("---------------------------");
}
}
catch (FormatException)
{
Console.WriteLine("Помилка: Введіть коректні числові значення.");
}
catch (Exception ex)
{
Console.WriteLine($"Виникла помилка: {ex.Message}");
}
// Затримка екрану
Console.WriteLine("\nНатисніть будь-яку клавішу для виходу...");
Console.ReadKey();
}
}
}
Процес вирішення задачі складається з таких послідовних кроків:
- Ініціалізація та введення:
- Оголошення змінних.
- Введення користувачем значень аргументів x, a та кута α (у радіанах) з клавіатури.
- Перевірка області допустимих значень (ОДЗ):
- Перевірка аргументу логарифма (x+a>0).
- Перевірка підкореневого виразу (x−0.5⋅10−1.5≥0).
- Якщо умови не виконуються — виведення повідомлення про помилку.
- Обчислення проміжних значень:
- Розрахунок виразу U (внутрішня частина чисельника) з використанням функцій косинуса, натурального логарифма та експоненти.
- Розрахунок виразу V (аргумент тангенса в знаменнику) з урахуванням піднесення до степеня та квадратного кореня.
- Фінальне обчислення:
- Знаходження чисельника як кубічного кореня з модуля U (3∣U∣
).
- Знаходження знаменника як тангенса від V (tan(V)).
- Виконання ділення для отримання Y (з перевіркою, щоб знаменник не дорівнював нулю).
- Знаходження чисельника як кубічного кореня з модуля U (3∣U∣
- Виведення результату:
- Форматований вивід значення Y на екран.
