
C#
Составление алгоритма и программы вычисления

Проверено - натуральный логарифм берётся разложением в этот ряд. Только чтобы вычислить логарифм при x=0,5 с хорошей точностью могут потребоваться миллиарды (если не больше!) слагаемых. При увеличении аргумента х количество необходимых слагаемых тоже сильно увеличивается, а точность становится всё хуже и хуже. И ещё заказываемая точность может совершенно не соответствовать реальной (ошибки вычисляются абсолютные, а не относительные, относительные меньше, особенно при больших значениях х, но всё равно нарастают очень уж быстро).
using System;
namespace CSharp_Shell
{ class Program
{ public static void Main()
{ double x, y, ε, e, p, s; int i, n; string c;
while (true) { Console.Write("x ε » ");
var line = Console.ReadLine().Split(" ");
x = double.Parse(line[0]);
ε = double.Parse(line[1]);
y = 1.0 - 1.0 / x; e = 1e300;
s = 0.0; p = 1.0; n = 0;
while (Math.Abs(e) > ε) { n++; p *= y;
e = p / n; s += e; } y = Math.Log(x);
c = String.Format(
"{0:f15} n={1:d} {2:f15} error={3:e2}",
s, n, y, s - y); Console.WriteLine(c); } } } }

using System;
namespace CSharp_Shell
{ class Program
{ public static void Main()
{ double x, y, ε, e, p, s; int i, n; string c;
while (true) { Console.Write("x ε » ");
var line = Console.ReadLine().Split(" ");
x = double.Parse(line[0]);
ε = double.Parse(line[1]);
y = 1.0 - 1.0 / x; e = 1e300;
s = 0.0; p = 1.0; n = 0;
while (Math.Abs(e) > ε) { n++; p *= y;
e = p / n; s += e; } y = Math.Log(x);
c = String.Format(
"{0:f15} n={1:d} {2:f15} error={3:e2}",
s, n, y, s - y); Console.WriteLine(c); } } } }

using System;
namespace ConsoleApp4
{
class Program
{
static void Main(string[] args)
{
double x = 0.56;
double eps = 0.0001;
double curr = 0, prev = 1;
int n;
for (n = 1; Math.Abs(curr - prev) > eps; n++)
{
prev = curr;
curr = prev + Math.Pow(x - 1, n) / (n * Math.Pow(x, n));
}
Console.WriteLine($"x = {x:f6}");
Console.WriteLine($"eps = {eps:f6}");
Console.WriteLine($" f({x:f3}) = {curr:f6}");
Console.WriteLine($"ln({x:f3}) = {Math.Log(x)}");
Console.WriteLine($"n = {n - 2}");
Console.WriteLine($"ln({x}) - f({x}) = {Math.Abs(Math.Abs(Math.Log(x)) - Math.Abs(curr)):f6}");
}
}
}
namespace ConsoleApp4
{
class Program
{
static void Main(string[] args)
{
double x = 0.56;
double eps = 0.0001;
double curr = 0, prev = 1;
int n;
for (n = 1; Math.Abs(curr - prev) > eps; n++)
{
prev = curr;
curr = prev + Math.Pow(x - 1, n) / (n * Math.Pow(x, n));
}
Console.WriteLine($"x = {x:f6}");
Console.WriteLine($"eps = {eps:f6}");
Console.WriteLine($" f({x:f3}) = {curr:f6}");
Console.WriteLine($"ln({x:f3}) = {Math.Log(x)}");
Console.WriteLine($"n = {n - 2}");
Console.WriteLine($"ln({x}) - f({x}) = {Math.Abs(Math.Abs(Math.Log(x)) - Math.Abs(curr)):f6}");
}
}
}
Похожие вопросы
- На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом
- Написать программу на C# вычисления стоимости покупки с учетом скидки.
- Помогите пожалуйста написать две программы и составить к ним алгоритм. Ну никак уже не получается...
- Алгоритм для игры на c#
- Как оптимизировать вычисление числа П? C#
- Как сделать программу на C#?
- С# Разработайте и реализуйте собственный алгоритм, переводящий изображение в градациях серого цвета в цвет.
- Сколько времени займет на С# выполнение этого алгоритма сортировки массива?
- Программа для сложения, вычитания, умножения и деления чисел в двоичной, восьмеричной, шестнадцатеричной системах
- Очень прошу помощи в написании программы на си шарп :)