C#

Задание по C#

Вычислить и вывести на экран в виде таблицы значения функции, заданной с помощью ряда Тейлора, на интервале от xнач до
xкон с шагом dx с точностью е. Таблицу снабдить заголовком и
шапкой. Каждая строка таблицы должна содержать значение аргумента, значение функции и количество просуммированных
членов ряда"
вот на фото мой вариант. Сколько не пробовал неудачно
Oleg Prokofyev
Oleg Prokofyev
95
>Сколько не пробовал неудачно
Покажи, что наваял-то - поправим...
Далелхан Шалданбаев
Далелхан Шалданбаев
88 780
Лучший ответ
Oleg Prokofyev Пока что не очень шарю. Только начал изучать и такое задание. Есть похожий код. Щя покажу
А почему функция перепутана? Вот же разложение гиперболического арктангенса при х є (-1;1), в чём можно сразу удостовериться, загуглив в Википедии:
arth x = x + ⅓·x³ + ⅕·x⁵ + ⅐·x⁷ +..
А та функция что в вопросе - это разложение гиперболического арккотангенса arcth(x) в диапазоне |х|>1. Вот программа её табуляции на отрезке [a;b] с количеством n равномерных интервалов на нём (a, b и n вводятся с экрана):
using System;
namespace CSharp_Shell
{ class Program
{ public static int N;
public static double arcth(double x)
{ double p = 1.0 / x, s = p,
q = 1, e = 1e303, y = p * p;
while (e > 1e-19) { p *= y; q += 2.0;
e = p / q; s += e; } N = (int)(q+1)/2;
return s; }
public static void Main()
{ double a, b, h, x, y; int i, n; string s;
Console.Write("a b n » ");
var line = Console.ReadLine().Split(" ");
a = double.Parse(line[0]);
b = double.Parse(line[1]);
n = int.Parse(line[2]); h = (b - a) / n;
for (i = 0; i <= n; i++)
{ x = a + i * h; y = arcth(x);
s = String.Format(
"{0,12:f8} »{1,20:f16}, {2,11:e4}, {3,10:d}",
x, y, Math.Abs(y /(0.5 * Math.Log((x + 1) / (x - 1)))-1), N); Console.WriteLine(s); } } } }
Печатаются текущий аргумент функции, её вычисленное значение, модуль относительной погрешности и количество просуммируемых слагаемых. При х слабо отличающихся от единицы сходимость плохая, точность не очень хорошая, а количество итераций резко возрастает. При увеличении х всё сразу улучшается, так что точность е можно вообще не задавать, она всегда будет примерно машинной для чисел типа double (или decimal, eсли программу что внизу чуть-чуть изменить). Столбик с ошибками можно убрать, а заголовок и шапку - самостоятельно!. (•‿•)
Ир
Ирина
29 440