using System; using System.Collections.Generic; using System.Linq; using System.Runtime.Remoting.Messaging; using System.Text; using System.Threading.Tasks; namespace KuzminBolshakovLab5 { // Класс для математических вычислений class SolveClass { // Вычисление косинуса через синус public static double Cos(double x) { return Math.Sin(Math.PI / 2 - x); } public double DriveCos() => Cos(-2); public double DriveTan() => Tan(-2); public double DriveCot() => Cot(-2); public double DriveSec() => Sec(-2); public double DriveLogBase() => LogBase(2,2); public static int Plug1() { return 1; } public static int Plug2() { return 2; } public static int PlugTan() => 2; public static int PlugCot() => 2; public static int PlugSec() => 2; public static int PlugCos() => 2; public static int PlugLogBase() => 2; // Вычисление тангенса public static double Tan(double x) { if (Math.Cos(x) == 0) return double.MinValue; // Тангенс не существует return Math.Sin(x) / Cos(x); } // Вычисление котангенса public static double Cot(double x) { if (Math.Sin(x) == 0) return double.MinValue; // Котангенс не существует return Cos(x) / Math.Sin(x); } // Вычисление секанса public static double Sec(double x) => 1 / Cos(x); // Вычисление логарифма по любому основанию public static double LogBase(double x, double baseValue) { if (x <= 0 || baseValue <= 0 || baseValue == 1) return double.MinValue; // Логарифм не существует return Math.Log(x) / Math.Log(baseValue); } // Решение первого уравнения (левая часть) для x <= 0 public static double SolveLeft(double x) { double part1 = ((Cot(x) / Sec(x)) - Tan(x)) * Math.Sin(x) / Cos(x); //double part1 = ((PlugCot() / PlugSec()) - PlugTan()) * Math.Sin(x) / PlugCos(); //double part2 = (Math.Sin(x) + Cos(x) + Cos(x)) * (Math.Sin(x) + Cos(x) + Cos(x)); double part2 = (Math.Sin(x) + Cos(x) + Cos(x)) * (Math.Sin(x) + Cos(x) + Cos(x)); return part1 * part2; } // Решение второго уравнения (правая часть) для x > 0 public static double SolveRight(double x) { double logBase5 = LogBase(x, 5); if (logBase5 == double.MinValue) return double.MinValue; // Проверка на несуществующие логарифмы double part1 = ((logBase5 * logBase5 * logBase5) * LogBase(x, 10) + LogBase(x, 3)) / Math.Log(x); double part2 = Math.Log(x) * logBase5; return part1 + part2; } // Проверка совместимости системы public static bool SolveSystem(double x, out double leftResult, out double rightResult) { leftResult = double.MinValue; rightResult = double.MinValue; if (x == 0) { Console.WriteLine($"Котангенса от {x} не существует"); return false; } if (x == 1) { Console.WriteLine($"Логарифм от {x} равен 0"); return false; } if (Plug1() <= 0) { leftResult = SolveLeft(x); return leftResult != double.MinValue; // Только левое уравнение имеет смысл } else if (Plug2() > 0) { rightResult = SolveRight(x); return rightResult != double.MinValue; // Только правое уравнение имеет смысл } return false; // В случае других ошибок } } }