Описать класс, представляющий нелинейное уравнение - 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);
}
}
}