C#

Найдите минимум методом дихотомии

Найдите минимум методом дихотомии. Сделать нужно с помощью exel либо c#. Картинка прилагается
Как известно, C# - язык довольно тухлый, а на C++ было бы примерно так:
#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;
double f(double x)
{ return 1. - x * x * exp(-x); }
int main()
{
int i = 0;
double a = 0., b = 5., c = b - a, e = 1e-5, ep = e / 2, x;
while (c > e)
{
++i;
x = (a + b) * 0.5;
if (f(x + ep) < f(x - ep)) a = x;
else b = x;
c = b - a;
cout << setw(2) << i << ") " << setprecision(12)
<< fixed << setw(16) << a << setw(16) << b
<< setw(16) << c << endl;
}
system("pause > nul");
return 0;
}
Первые два столбца - это диапазоны [a, b] на i-ом итерационном шаге, а третий столбец - ширина диапазона. Как видно, в методе дихотомии с заданной точностью ε=1e-5 нужно 19 итераций.
Теперь на C#:
using System;
namespace CSharp_Shell
{ class Program
{ double f(double x)
{ return 1.0 - x * x * Math.Exp(-x); }
void Main()
{ double a=0.0, b=5.0, c=5.0, x,
e=1e-5, ep = e/2.0; int i = 0; while (c > e)
{
i++; x = (a + b) * 0.5;
if (f(x + ep) < f(x - ep)) a = x; else b = x;
c = b - a;
Console.WriteLine(i+") "+a+" "+b+" "+c);
} } } }
Вывод вот только можно сделать покрасивее, а то (на правом скрине !) как-то не очень, хотя и те же результаты!. ʘ‿ʘ
Константин Chukhmanov
Константин Chukhmanov
29 440
Лучший ответ
Ринат Тляумбетов Спасибо огромное)