Будем теперь рассматривать бесконечную сумму вида . Это выражение называется функциональным рядом. При различных значениях из функционального ряда получаются различные числовые ряды . Числовой ряд может быть сходящимся или расходящимся. Совокупность значений , при которой функциональный ряд сходится, называется его областью сходимости.
Числовой ряд называется сходящимся, если сумма n первых его членов при имеет предел, в противном случае, ряд называется расходящимся. Ряд может сходиться лишь при условии, что общий член ряда при неограниченном увеличении его номера стремится к нулю: . Это необходимый признак сходимости для всякого ряда.
В случае бесконечной суммы будем вычислять ее с заданной точностью Cчитается, что требуемая точность достигается, если вычислена сумма нескольких первых слагаемых и очередное слагаемое оказалось по модулю меньше чем е, то есть это слагаемое на результат практически не влияет. Тогда его и все последующие слагаемые можно не учитывать.
Пример. Написать программу для подсчета суммы с заданной точностью ().
Указание по решению задачи. Рассмотрим, что представляет из себя заданный ряд: . Как видим, общий член ряда с увеличением значения i стремится к нулю. Поэтому данную сумму можно вычислить, но только с определенной точностью . Заметим также, что последовательность слагаемых можно выразить с помощью рекуррентного соотношения , , а всю сумму - с помощью рекуррентного соотношения . (Данные рекуррентные соотношения выведите самостоятельно.)
using System;namespace Hello{ class Program { static void Main() { Console.Write("Задайте точность вычислений е: "); double e=double.Parse(Console.ReadLine()); double a=-1, s=0; for (int i=2; Math.Abs(a)>=e; ++i) { s+=a; a/=-i; } Console.WriteLine("s={0:f2}",s); } }}
Лекция 8. Массивы
Массив - набор элементов одного и того же типа, объединенных общим именем. Массивы в С# можно использовать по аналогии с тем, как они используются в других языках программирования. Однако С#-массивы имеют существенные отличия: они относятся к ссылочным типам данных, более того - реализованы как объекты. Фактически имя массива является ссылкой на область кучи (динамической памяти), в которой последовательно размещается набор элементов определенного типа. Выделение памяти под элементы происходит на этапе инициализации массива. А за освобождением памяти следит система сборки мусора - неиспользуемые массивы автоматически утилизируются данной системой.
Рассмотрим различные типы массивов.
8.1 Одномерные массивы
Одномерный массив - это фиксированное количество элементов одного и того же типа, объединенных общим именем, где каждый элемент имеет свой номер. Нумерация элементов массива в С# начинается с нуля, то есть, если массив состоит из 10 элементов, то его элементы будут иметь следующие номера: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9.
Одномерный массив в С# реализуется как объект, поэтому его создание представляет собой двухступенчатый процесс. Сначала объявляется ссылочная переменная на массив, затем выделяется память под требуемое количество элементов базового типа, и ссылочной переменной присваивается адрес нулевого элемента в массиве. Базовый тип определяет тип данных каждого элемента массива. Количество элементов, которые будут храниться в массиве, определяется размер массива.
В общем случае процесс объявления переменной типа массив, и выделение необходимого объема памяти может быть разделено. Кроме того на этапе объявления массива можно произвести его инициализацию. Поэтому для объявления одномерного массива может использоваться одна из следующих форм записи:
Форма записи
Пояснения
базовый_тип [] имя__массива; Например:
int [] a;
Описана ссылка на одномерный массив, которая в дальнейшем может быть использована:
для адресации на уже существующий массив;
передачи массива в метод в качестве параметра
отсроченного выделения памяти под элементы массива.
базовый_тип [] имя__массива = new базовый_тип [размер]; Например:
int []a=new int [10];
Объявлен одномерный массив заданного типа и выделена память под одномерный массив указанной размерности. Адрес данной области памяти записан в ссылочную переменную. Элементы массива равны нулю.
Замечание. Надо отметить, что в C# элементам массива присваиваются начальные значения по умолчанию в зависимости от базового типа. Для арифметических типов - нули, для ссылочных типов - null, для символов - пробел.
базовый_тип [] имя__массива={список инициализации}; Например:
int []a={0, 1, 2, 3};
Выделена память под одномерный массив, размерность которого соответствует количеству элементов в списке инициализации. Адрес этой области памяти записан в ссылочную переменную. Значение элементов массива соответствует списку инициализации.
Обращения к элементам массива происходи с помощью индекса, для этого нужно указать имя массива и в квадратных скобках его номер. Например, a[0], b[10], c[i].
Так как массив представляет собой набор элементов, объединенных общим именем, то обработка массива обычно производится в цикле. Рассмотрим несколько простых примеров работы с одномерными массивами.