4. Результат работы программы
…
x = -3.6 y = -0.161865
x = -3.4 y = -0.185016
…
x = -2.2 y = -0.373639
…
Задание II. Для x = 0.47 найти сумму ряда
с точностью до члена ряда, меньшего (по абсолютной величине) eps = 0.0001, используя оператор цикла с предусловием. Сравнить полученную сумму со значением функции для контроля .
Решение
1. Математическая модель. Обозначим через p1 последовательные произведения нечетных чисел. Через р2 – последовательные произведения четных чисел.
В C#есть функция Math.Arcsin х, поэтому для вычисления контрольной функции воспользуемся соотношением: у = Math.Asin(x).
Аргументы: x – переменная вещественного типа, -1 < x < 1.
Результаты: summa – сумма членов ряда вещественного типа;
y – значение контрольной функции (вещественного типа).
Промежуточные величины:
eps – константа, с которой сравнивается абсолютная величина текущего члена ряда: члены ряда представляют собой убывающую последовательность, поэтому согласно условию вычисление суммы членов ряда будет продолжаться до тех пор пока абсолютное значение текущего члена ряда не окажется меньше eps;
p1 – последовательные произведения нечетных чисел, вещественного типа;
р2 – последовательные произведения четных чисел, вещественного типа;
p – частное, получаемое при делении p1 на p2, вещественного типа;
n – номер члена ряда, целого типа; u – текущий член ряда, вычисляемый по формуле , вещ. типа;
2. Алгоритм
|
3. Программа
|
|
using System;
namespace ConsoleApp2
{
class Program
{
static void Main(string[] args)
{// описание и инициализация заданной точности
double eps = 0.0001;
// описание переменных, ввод х, начальные
// установки
double x, u, p1, p2, p;
Console.WriteLine("Введите значение x: ");
x=Convert.ToDouble(Console.ReadLine());
int n = 1;
double summa = 0;
u = x;
p1 = 1;
p2 = 2;
// организация вычисления суммы членов ряда
while (Math.Abs(u) > eps)
{
summa += u;
p = p1 / p2;
u = p * Math.Pow(x, 2 * n + 1) / (2 * n + 1);
n++;
p1 = p1 * (2 * n - 1);
p2 = p2 * 2 * n;
}
// вычисление значения контрольной функции
double y = Math.Asin(x);
// вывод результатов
Console.WriteLine(" Сумма данного ряда при x = " + x + ", c точностью 0.0001, S = " + summa+"\n");
Console.WriteLine("Значение контрольной функции, у = " +y);
Console.ReadKey();
}
}
}
|
Do'stlaringiz bilan baham: |