.NET 4.x Организация Циклов (Ряды Тейлора) - C#
Формулировка задачи:
Нужно вычислить и вывести на экран в виде таблицы значения функции, заданной с помощью ряда Тейлора, на интервале от x1 до x2 с шагом dx с точностью е. Таблицу снабдить заголовком и шапкой. Каждая строка таблицы должна содержать значение аргумента, значение функции и количество просуммированных членов ряда.
Формула:
Код примерно наклипал такой, но почему то выводит не так как надо, что я делаю не так, подскажите?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Lab03._3
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Введите координату хn");
string q1 = Console.ReadLine();
double x = double.Parse(q1);
Console.WriteLine("")
Console.WriteLine("Введите координату хk");
string q2 = Console.ReadLine();
double xk = double.Parse(q2);
Console.WriteLine("")
Console.WriteLine("Введите е");
string q3 = Console.ReadLine();
double e = double.Parse(q3);
Console.WriteLine("")
double n = 0;
double y = 0;
double s = 0;
while (x <= xk)
{
if ((x >= -1) & (x <= 1))
do
{
y = (Math.Pow(-1, n) * Math.Pow(x, n + 1))/(n + 1);
s = s + y;
Console.WriteLine("При х = {0} y = {1} n = {2}", x, s, n);
n = n + 1;
}
while (y >= e);
x = x + 1;
s = 0;
n = 0;
}
}
}
}Решение задачи: «.NET 4.x Организация Циклов (Ряды Тейлора)»
textual
Листинг программы
using System;
namespace Lab03._3
{
public class Program
{
public static void Main()
{
double x, xk;
do
{
Console.Clear();
Console.WriteLine("Введите |хn| < 1");
x = double.Parse(Console.ReadLine());
Console.WriteLine("Введите |хk| < 1");
xk = double.Parse(Console.ReadLine());
} while (Math.Abs(x) >= 1 || Math.Abs(xk) >= 1);
if (x > xk)
{
double tmp = x;
x = xk;
xk = tmp;
}
Console.WriteLine("Введите е");
double e = double.Parse(Console.ReadLine());
int n = 0;
double y = 0;
double sum = 0;
double dx = 0.1;
while (x <= xk)
{
do
{
y = (Math.Pow(-1, n) * Math.Pow(x, n + 1)) / (n + 1);
sum = sum + y;
n++;
} while (y >= e);
Console.WriteLine("При х = {0} y = {1} n = {2}", x, sum, n);
x += dx;
sum = 0;
n = 0;
}
Console.ReadKey();
}
}
}