Пример 2
В листинге 2 представлена программа, которая вычисляет значение числа pi c точностью, задаваемой пользователем во время работы программы. В основе алгоритма вычисления лежит тот факт, что сумма ряда 1-1/3+1/5-1/7+1/9+…. приближается к значению pi/4 при достаточно большом количестве членов ряда. Каждый член ряда с номером n вычисляется по формуле:1/(2*n-1) и умножается на минус один, если n четное (определить, является ли n четным, можно проверкой остатка от деления n на 2). Вычисление заканчивается тогда, когда значение очередного члена ряда становиться меньше, чем заданная точность вычисления.
Для создания программы использовалась среда разработки NetBeans IDE 8.0. На рисунке 4 показан состав проекта программы.
Рисунок 4 – Состав проекта программы
Создание проекта в NetBeans: Файл -> Создать проект -> Java -> Приложение Java.
Компиляция, сборка и выполнение проекта: Выполнить -> Запустить проект.
На рисунке 5 показан результат выполнения программы.
Листинг 2
package primer2;
import java.util.Scanner;
public class Primer2 {
public static void main(String[] args) {
{ double pi, t; // вычисляемое значение ПИ, точность вычисления
Int n; //номер члена ряда
double elem; //значение члена ряда
pi = 0; n = 1;
Scanner in = new Scanner(System.in);
System.out.print("Укажите точность вычисления числа ПИ: ");
t = in.nextDouble();
elem = 1;
while(elem >= t)
{ elem = 1./(2*n-1);
if (n % 2 == 0) pi -= elem;
else pi += elem;
n++;
}
pi *= 4;
System.out.printf("ПИ равно %.4f\n",pi);
System.out.println("Проссумировано " + n + " членов ряда");
}
}
}
Рисунок 5 – Результат выполнения программы
Задание 3
Создать программу на языке C#, реализующую циклический алгоритм решения задачи индивидуального варианта.
Индивидуальные варианты:
1.
21 – 26
Пример 3
В листинге 3 представлена программа вычисления:
Исходные данные
x - аргумент функции
e0 - точность вычисления.
Для решения используем переменные:
y - накопленная сумма
p - числитель добавляемого слагаемого (накапливаемое произведение)
k - не накапливаемая величина (увеличение на 2)
m - знаменатель - накапливаемое значение
Начальные значения k=1; p=x; y=0; m=1
При переходе к следующей итерации цикла переменные меняются по формуле:
y=y+p/k; k=k+2; p=-p*x*x; m=m*k*(k-1);
Для создания программы использовалась среда разработки MS Visual C# 2010 Express. На рисунке 6 показан состав проекта программы.
Рисунок 6 – Состав проекта программы
Создание проекта в MS Visual C# 2010 Express: Файл -> Создать проект -> Консольное приложение.
Компиляция, сборка и выполнение проекта: Отладка -> Начать отладку (F5).
На рисунке 7 показан результат выполнения программы.
Листинг 3
using System;
namespace Primer3
{
class Program
{
static void Main(string[] args)
{
double x, p, y, e0;
int k, m;
string st;
Console.WriteLine("введите аргумент x");
st = Console.ReadLine();
x = Convert.ToDouble(st);
Console.WriteLine("введите точность");
st = Console.ReadLine();
e0 = Convert.ToDouble(st);
y = 0.0;
p = x;
k = 1;
m = 1;
do
{ y += p / m;
k = k + 2; // не накапливается
p = -p * x * x;
m = m * k * (k - 1); // накапливается
} while (Math.Abs(p / m / y) > e0);
st = Convert.ToString(y);
Console.WriteLine("y=" + st);
Console.ReadKey();
}
}
}
Рисунок 7 – Результат выполнения программы