Описать класс, представляющий нелинейное уравнение - C#
Формулировка задачи:
Описать класс, представляющий нелинейное уравнение вида ах - cos(x) = 0. Опи¬сать метод, вычисляющий решение этого уравнения на заданном интервале ме¬тодом деления пополам (см. раздел «Цикл с параметром for») и выбрасывающий исключение в случае отсутствия корня. Описать свойства для получения состоя¬ния объекта.Написать программу, демонстрирующую все разработанные элементы класса.
Код:
Не могу понять что выводить на экран и соответствует ли программа условию... Помогите плиз
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace PracticTimurTwo { class Fun { public double arg; public void Arg() { } public void Arg(double arg) { this.arg = arg; } const double e = 0.001; public void Bin(double a, double b) { while (Math.Abs(b - a) > e) { double c = (a + b) / 2; if ((Math.Cos(a)/arg)*(Math.Cos(c)/arg) < 0) b = c; else a = c; } Console.Write("x = {0}", Math.Abs(b - a)); } } class Program { static void Main(string[] args) { try { Console.WriteLine("Исходное уравнение: ax - cos(x) = 0"); Fun f = new Fun(); Console.Write("Введите аргумент а: "); f.arg = double.Parse(Console.ReadLine()); f.Bin(10, 100); Console.ReadKey(); } catch { Console.WriteLine("Error!!!"); } } } }
Решение задачи: «Описать класс, представляющий нелинейное уравнение»
textual
Листинг программы
using System; namespace App3 { class CNonLinearEquation { public double arg; public CNonLinearEquation (double A) { this.arg = A;} // точность вычислен const double e = 10e-5; private double f( double x) { return arg * x - Math.Cos(x); } public void Solve(double a, double b) { if (f(a) * f(b) > 0) Console.WriteLine("Корней нет"); else { double c = (a + b) / 2; while (Math.Abs(b - a) >= e) { if (f(a) * f(c) < 0) b = c; else a = c; c = (a + b) / 2; } Console.WriteLine("x = {0}", c); } } } class Program { public static void Main(string[] args) { Console.WriteLine("Исходное уравнение: ax - cos(x) = 0"); Console.Write("Введите аргумент а: "); double catch_a = Double.Parse(Console.ReadLine()); // 1 Console.Write("Введите начало интервала: "); double catch_S = Double.Parse(Console.ReadLine()); // 6 Console.Write("Введите конец интервала: "); double catch_E = Double.Parse(Console.ReadLine()); // 10 CNonLinearEquation eq = new CNonLinearEquation(catch_a); eq.Solve(catch_S,catch_E); // Корней нет eq.arg = 5; eq.Solve(-1,1.0); Console.Write("Press any key to continue . . . "); Console.ReadKey(true); } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д