в) погрешности вычисления суммы членов числового ряда (абсолютную и относительную) по отношению к точному значению суммы членов числового ряда.
Составим блок-схему алгоритма решения задачи (представлена на рисунке слева).
Итак, для решения задачи используем переменные:
М (количество членов вычисляемого числового ряда);
f (вспомогательная переменная, вычисляющая для цикла факториал);
Sum1 (сумма членов числового ряда);
Sum2 (точное значение суммы);
Err1 (абсолютная погрешность);
Err2 (относительная погрешность);
и определимся с типом данных, который они могут содержать. Значения переменных M и k будут короткими целыми (Integer), значение f — длинным целым (Long), а значения переменных Sum1, Sum2, Err1,Err2 — вещественные удвоенной точности [1].
Для ввода значений переменной M, а также вывода результатов используются текстовые поля (объект TextBox). Чтобы сделать поля для вывода неизменяемыми, при определении характеристик поля в строке Enable укажем False [2].
Вычислить сумму ряда с точностью α. Знакочередующийся ряд. Признак Лейбница, ряд Лейбница.
Составим текст программы (приведен с комментариями).
Public Class Form1
Private Sub ButtonOK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonOK.Click
Dim M As Integer ‘ количество членов числового ряда
Dim Sum1 As Double, Sum2 As Double ‘ сумма и точная сумма ряда
Dim Err1 As Double, Err2 As Double ‘ абсолютная и относительная погрешности
Dim k As Integer, f As Long ‘ вспомогат.переменные
‘ для организации цикла и подсчета факториала
‘ количество членов числового ряда вводятся в форме
Sum1 = Sum1 + (k + 1) ^ 3 / f
Sum2 = 15 * 2.718281828495
Err1 = Sum2 — Sum1
Err2 = Err1 / Sum2 * 100
‘ вывод результатов вычислений в поля формы
TextSum1.Text = Format(Sum1, «0.00000»)
TextSum2.Text = Format(Sum2, «0.00000»)
TextErr1.Text = Format(Err1, «0.00000000»)
TextErr2.Text = Format(Err2, «0.00000000»)
Private Sub ButtonCancel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonCancel.Click
На рис.1 представлен вариант реализации формы приложения:
Рисунок 1 — Вычисление суммы ряда
Работа с массивами
Дан двумерный массив (матрица) размером NxN.
1. Определить сумму элементов, значения которых кратны заданному числу F.
2. Найти местоположения (номера индексов) минимальных элементов массива.
Составим блок-схему алгоритма решения задачи
Программа будет содержать несколько «циклов в цикле» в виду того, что организует работы с массивами.
Public Class Form1
описание переменных уровня модуля: массив
Математика без Ху%!ни. Вычисление суммы ряда
Dim Arr(100, 100) As Integer
Dim N As Integer ‘ количество элементов массива
Private Sub ButtonGenerate_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonGenerate.Click
Dim Amin As Integer, Amax As Integer ‘ границы значений элементов массива
Dim i As Integer, j As Integer ‘ вспомогат.переменные
для организации цикла
‘ количество элементов массива и границы значений вводятся в форме
‘ создание массива с помощью генератора случайных чисел
Dim Str1 As String
ListArray.Items.Clear() ‘ количество столбцов в поле вывода массива
For i = 0 To N — 1
For j = 0 To N — 1
Arr(i, j) = Amin + Int(Rnd() * (Amax — Amin))
Str1 = Str1 + Space(3) + Str(Arr(i, j))
Private Sub ButtonOK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonOK.Click
Dim F As Integer ‘ число (вводимое) для поиска кратных элементов массива
Dim Fsum As Long ‘ сумма (искомая) кратных элементов массива
Dim Amin As Integer ‘ значение минимального элемента
Dim i As Integer, j As Integer ‘ вспомогат.переменные
‘ для организации цикла
‘ число для поиска кратных элементов вводится в форме
If F = 0 Then Exit Sub
If N > 0 Then Amin = Arr(0, 0)
For i = 0 To N — 1
For j = 0 To N — 1
If Arr(i, j) / F = Int(Arr(i, j) / F) Then Fsum = Fsum + Arr(i, j)
If Amin > Arr(i, j) Then Amin = Arr(i, j)
‘ вывод результатов вычислений в поля формы
‘ очистка полей для повторных нажатий кнопки «Вычислить»
For i = 0 To N — 1
For j = 0 To N — 1
If Arr(i, j) = Amin Then
ListMin.Items.Add(«элемент (» + Str(i + 1) + «;» + Str(j + 1) + «)»)
Private Sub ButtonCancel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonCancel.Click
На рис.2 представлен вариант реализации формы приложения.
Для вывода суммы элементов, кратных заданному числу и минимальных элементов используются поля Label [2].
Рисунок 2 — Работа с массивами
Источник: studentopedia.ru
Составить программу которая вычисляет сумму ряда
Опубликовано 08.06.2017 по предмету Информатика от Гость >> Оцени ответ
- Алгебра
- Математика
- Русский язык
- Українська мова
- Информатика
- Геометрия
- Химия
- Физика
- Экономика
- Право
- Английский язык
- География
- Биология
- Другие предметы
- Обществознание
- История
- Литература
- Українська література
- Беларуская мова
- Қазақ тiлi
Показать ещё
Источник: www.shkolniku.com
Вычисление суммы бесконечного ряда с заданной точностью.
Козырь О.Ф. Алгоритмизация организационных задач систем управления. Методические указания к выполнению лабораторных работ и домашних заданий. Старый Оскол. СТИ МИСиС, 2013г, — 72с.
Методическое пособие по курсу «Программирование и алгоритмизация».
Лабораторная работа №1. Вычисление суммы бесконечного
ряда с заданной точностью…………………………………………………
Лабораторная работа №2. Решение задач с использованием массивов…
Лабораторная работа №3. Решение задач с использованием структур….
Лабораторная работа №4. Решение задач с использованием функций….
Список рекомендуемой литературы………………………………………..
Настоящий цикл лабораторных работ разработан по дисциплине Программирование и алгоритмизация для студентов очной, очно-заочной и заочной форм обучения специальностей Автоматизация технологических процессов и производств и «Автоматизация электропривода». Лабораторные работы проводятся на ПК с использованием средств TurboС V3.0 или BuilderC++ V5.0 (или V6.0) или любого другого транслятора языка С++.
При подготовке к лабораторной работе необходимо ознакомиться с материалами лекций, начитанных по теме лабораторной работы, а также с предложенной литературой. Список предлагаемой литературы представлен в конце данных методических указаний.
В лабораторных работах даются теоретические сведения по рассматриваемой теме и примеры программ для данного класса задач. Все программы снабжены комментариями и подробными объяснениями. Для выполнения лабораторных работ разработаны тридцать вариантов индивидуальных заданий. Вариант задания выдается преподавателем в начале семестра или перед выполнением каждой лабораторной работы.
Тематика лабораторных работ охватывает основные моменты разработки оптимальных алгоритмов решения поставленных задач и программирования средствами языка С++, помогает студентам освоить приемы работы с массивами, структурами, функциями, файлами и строками. Для закрепления изученного материала и самопроверки студентами полученных знаний в каждой лабораторной работе дается перечень контрольных вопросов.
Общие требования к отчетам по лабораторным работам таков: отчет должен содержать:
— название лабораторной работы,
— текст программы (или несколько текстов программ), снабженный комментариями,
— результаты работы программы.
Лабораторная работа № 1.
ВЫЧИСЛЕНИЕ СУММЫ БЕСКОНЕЧНОГО РЯДА С ЗАДАННОЙ ТОЧНОСТЬЮ.
1. Цель работы: ознакомиться с текстовым редактором С++; освоить простейшие языковые конструкции ввода — вывода данных; приобрести практические навыки составления и отладки программ с простыми переменными; знать основные предопределённые языком типы данных и правила их описания; усвоить арифметические и логические операции; усвоить способы организации циклических вычислений и операторы управления.
2. Указания по подготовке к работе:
Необходимо ознакомиться с основными предопределёнными типами данных (целочисленные типы, вещественные типы, тип char и логический тип (bool)) и операторами управления (условными и цикла), а также операторами ввода-вывода. [см. лекцию 4, 5, 7, 8].
3. Теоретическая часть:
Часто в математических вычислениях возникает необходимость определить сумму бесконечного ряда с заданной точностью. На такие задачи налагается одно жесткое условие: ряд должен быть сходящимся, т.е. абсолютное значение текущего элемента ряда должно быть меньше абсолютного значения его предыдущего элемента.
В подобных случаях удобно пользоваться итерационными циклами, реализуемыми операторами цикла с предварительным и последующим условиями.
В противном случае условие выхода из цикла никогда не будет выполнено и цикл станет бесконечным.
Пример: написать программу вычисления суммы бесконечного ряда с точностью eps=0.001:
Этот ряд сходится при |x| , а так как он знакопеременный, то его предел равен 0 (значения его элементов стремятся к нулю).Для достижения заданной точности требуется суммировать члены ряда, абсолютная величина которых больше eps. Для сходящегося ряда модуль члена ряда C при увеличении n стремится к нулю. При некотором n неравенство
| C | eps перестает выполняться и вычисления прекращаются.
Общий алгоритм решения этой задачи очевиден: требуется задать начальное значение суммы ряда, затем многократно вычислять очередной член ряда и добавлять его к ранее найденной сумме. Вычисления заканчиваются, когда величина очередного члена ряда станет меньше заданной точности. Алгоритм представим в виде блок-схемы (см. рис.1).
Как видно из рис.1. каждый блок имеет один вход и один выход за исключением условного блока (ромб), который имеет два выхода. Выходы могут располагаться или по обе стороны блока, или любой из них по центру. Ошибки в этом нет. Выходы обязательно должны иметь названия: либо «истина» («да», «+»), либо «ложь» («нет», «-«). Это необходимо для однозначного понимания логики алгоритма.
В блок-схеме запрещено указывать команды, операции, функции конкретного языка программирования. Все действия должны быть описаны математически, а если это не возможно, то словесно.
Линии потока, указывающие последовательность выполнения действий, должны располагаться параллельно границам листа (только горизонтально или вертикально), не могут пересекаться друг с другом. Если линии указывают естественный ход выполнения действий (сверху вниз и слева направо), то их можно не обозначать стрелками, а если снизу вверх или справа налево, то стрелками обозначать обязательно.
Блоки, кроме блоков «начало» и «конец» («останов»), можно нумеровать, что также улучшает наглядность схемы.
До выполнения программы предсказать, сколько членов ряда потребуется просуммировать, невозможно. В цикле такого рода есть опасность, что он никогда не завершиться – как из-за возможных ошибок в вычислениях, так и из-за ограниченной области сходимости ряда.
Поэтому для надежности программы нужно предусмотреть аварийный выход из цикла с печатью предупреждающего сообщения по достижении некоторого максимально допустимого количества итераций. В качестве признака сходимости ряда будем использовать булеву переменную flag. В случае, если ряд расходится, значение этой переменной обнулится (примет значение «ложь»). Напомним, что для расходящегося ряда значение суммы его элементов не может быть подсчитано, а, следовательно, результат не должен быть выведен. Однако, в ранних версиях компиляторов языка С++ нет такого типа данных, как булевый, поэтому вместо него можно использовать либо тип int или самый короткий тип char.
int k, const Max = 500; // максимально допустимое количество
float sum = 0., eps = 1.0e-3, s, x;
bool flag = true; // char flag = 1;
printf (“Введите значение х
scanf(“%f”, x); // можно использовать cin…
k = 2; // согласно условию
s = 5*eps; // значение нужно для входа в цикл
// текущего элемента ряда
if ((k-1)%2 = = 0) // определение знака элемента ряда
Источник: csaa.ru