- •Задание и порядок выполнения работы
- •Задача 3. Составить алгоритм, написать программу, создать консольное приложение для вычисления на пк значения функции, заданной в табл. 4. 2.
- •Вычисление выполнить двумя способами:
- •Запустить на исполнение, проанализировать результат вычисления и сделать выводы.
- •Методические указания по выполнению задания
- •1 Вариант.
- •2 Вариант.
- •Задания на дом для самостоятельного решения.
- •Методические указания по выполнению задачи 5
Методические указания по выполнению задачи 5
Представить функцию в виде ряда с точностью 0,001 при х=0,8.
Как известно из математики функцию y(x) можно разложить в ряд и рассчитать путем сложения первых нескольких n членом ряда. Например, y= a0 + a1 + a2 + a3 + a4 + …+ an + . . .
Функция e-x может быть разложена в ряд Тейлора. Ряд сходящийся и рассчитывается путем сложения n членов ряда. Для организации циклических вычислений необходимо рассчитывать члены ряда, сравнивать их значения с заданной точностью |an|>E и при выполнении условия сравнения производить их суммирование. Цикл завершается, когда |an| E.
Для организации циклического вычисления сначала запишем выражения для n-го и (n +1)-го членов ряда заданной функции:
Для расчета следующего an+1 члена ряда используем рекуррентное соотношение, связывающее его с предыдущим an членом через общий множитель qn.
Тогда an+1 = an qn. Такой подход позволит избежать вычисление факториала и возведения в произвольную степень. Произведем алгебраические преобразования и упростим выражение для qn.
П одставляя n=0 в заданную формулу , получим начальные значения для расчета функции e-x . А именно: n=0, a0=1, s0= a0.
На рис. 4.5 приведёна блок-схема, программа и результаты,
подтверждающие решение задачи.
double x = 0.8, E = 0.01;
double a, s, q, y, d;
int n = 0;
a = 1; s = a;
Console.WriteLine(" Результаты вычислений");
Console.WriteLine();
Console.WriteLine("---------------------------------------------");
Console.WriteLine(" Сумма s | Количество n | Члены ряда a |");
Console.WriteLine("---------------------------------------------");
while (Math.Abs(a) > E)
{
q = -x / (n + 1);
a = q * a;
s = s + a;
n++;
Console.WriteLine("{0,5:E} | {1} | {2,8:E}", s, n,a );
}
Console.WriteLine("---------------------------------------------");
Console.WriteLine(" a ={0:0.######}", a);
Console.WriteLine(" n = " + n);
Console.WriteLine("Сумма S = {0:0.######}", s);
Console.WriteLine();
y = Math.Exp(-x);
Console.WriteLine("Функция y= {0:0.######}", y);
Console.WriteLine();
d = Math.Abs(y - s);
Console.WriteLine("Погрешность вычисления {0:0.######}", d);
Console.ReadKey();
Блок-схема Задачи 5
Как видно для представления функции e-x c точностью вычисления E=0.001 при x=0.8 достаточно сложить первые 6 членов ряда (a0,…a5).
Измените, точность вычисления Е. Проанализируйте результат представления заданной функции. Сделайте выводы, как погрешность вычисления влияет на результат представления функции.