.NET 4.x Расчет ряда с помощью циклов/процедур - C#
Формулировка задачи:
Помогите пожалуйста довести код до ума, нужно организовать его через процедуры/функции и добавить деление на факториал. Скорее всего мои наработки вовсе неверные, поэтому прошу строго не судить. Заранее благодарю всех за помощь.
Значение аргумента x изменяется от a до b с шагом h. Для каждого x найти значения функции Y(x), суммы S(x) и |Y(x)-S(x)| и вывести в виде таблицы. Значения a,b,h и n вводятся с клавиатуры. Работу программы проверить для a=0,1; b=1,0; h=0,1; n выбрать максимально возможным!
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace _3
{
class Program
{
static void Main(string[] args)
{
Console.Write("Введите шаг h = ");
double h = Convert.ToDouble(Console.ReadLine());
Console.Write("Промежуток от - ");
double i = Convert.ToDouble(Console.ReadLine());
Console.Write("до - ");
double b = Convert.ToDouble(Console.ReadLine());
for (i = i; i<=b; )
{
for (double k = 1; k<=b; )
{
double result_s = (Math.Pow(-1, k) * (Math.Pow(2 * i, 2 * k) / 2 * k));
double result_y = (2 * (Math.Pow(Math.Cos(i), 2) - 1));
double result_z = Math.Abs(result_y - result_s);
Console.Write("S({0}) ={1:N3} ", i, result_s);
Console.Write("Y({0}) ={1:N3}|\n ", i, result_y);
Console.WriteLine("|Y({0}) - S({0})|={1:N3}\n", i, i, result_z);
i = i+ h;
k = k + h;
}
}
Console.ReadKey();
}
}
}Решение задачи: «.NET 4.x Расчет ряда с помощью циклов/процедур»
textual
Листинг программы
static int Factorial(int number)
{
if (number <= 1)
return 1;
else
return number * Factorial(number - 1);
}
static double Member(double x, int k)
{
double s = Math.Pow(-1, k) * Math.Pow(2 * x, 2 * k) / Factorial(2 * k);
return s;
}
static double Set(double x)
{
double eps = 0.0001;
int k = 1;
double member = 1;
double set = 0;
while (Math.Abs(member) > eps)
{
member = Member(x, k);
set += member;
k += 1;
}
return set;
}
static double Y(double x)
{
double y = 2 * (Math.Cos(x) * Math.Cos(x) - 1);
return y;
}
static void Main()
{
double a = 0.1;
double b = 1;
double h = 0.1;
for(double x=a;x<=b;x+=h)
Console.WriteLine("x = {0}, S = {1}, Y = {2}", x, Set(x),Y(x));
Console.ReadKey();
}