Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
MetodichkaC_14ch1.doc
Скачиваний:
51
Добавлен:
26.03.2016
Размер:
1.61 Mб
Скачать
  1. Организация циклов

Для примера рассмотрим программу вычисления значения функции ch х (гиперболический косинус) с точностью ε=10-6 помощью бесконечного ряда Тейлора по формуле:

Этот ряд сходится при | х|<. Для достижения заданной точности требуется суммировать члены ряда, абсолютная величина которых больше ε. Для сходящегося ряда модуль члена ряда Сn при увеличении n стремится к нулю. При некотором n неравенство | Сn |>ε перестает выполняться и вычисления прекращаются. Алгоритм решения задачи выглядит так: задать начальное значение суммы ряда, а затем многократно вычислять очередной член ряда и добавлять его к ранее найденной сумме. Вычисления заканчиваются, когда абсолютная величина очередного члена ряда станет меньше заданной точности.

Для надежности программы необходимо предусмотреть аварийный выход из цикла с печатью предупреждающего сообщения по достижении некоторого максимально допустимого количества итераций. Для выхода из цикла применяется оператор break.

Для уменьшения количества выполняемых действий следует воспользоваться рекуррентной формулой получения последующего члена ряда через предыдущий:

,

где Т — некоторый множитель. Подставив в эту формулу Сn и Сn+1, получим выражение для вычисления T:

В листинге приведен текст программы с комментариями:

using System;

namespace ConsoleApplication1

{

class Class1

{

static void Main()

{

double e=1e-6;

const int MaxIter=500; //ограничитель количества итераций

Console.WriteLine("Введите аргумент:");

string buf=Console.ReadLine();

double x=Convert.ToDouble(buf);

bool done=true; //признак достижения точности

double ch=1,y=ch;

for(int n=0;Math.Abs(ch)>e;n++)

{

ch*=x*x/(2*n+1)/(2*n+2);

y+=ch; //добавления члена ряда к сумме

if(n>MaxIter)

{

done=false;

break;

}

}

if (done)

Console.WriteLine("Сумма ряда = "+y);

else

Console.WriteLine("Ряд расходится");

}

}

}

Задание 5.1

Вычислить и вывести на экран в виде таблицы значения функции, заданной графически (см. Графики), на интервале от хнач до хкои с шагом dx. Интервал и шаг задать таким образом, чтобы проверить все ветви программы Таблицу снабдить заголовком и шапкой.

Задание 5.2

Вычислить и вывести на экран в виде таблицы значения функции, заданной с помощью ряда Тейлора, на интервале от хнач до хкон с шагом dx с точностью ε. Таблицу снабдить заголовком и шапкой. Каждая строка таблицы должна содержать значение аргумента, значение функции и количество просуммированных членов ряда.

  1. .

  2. .

  3. .

  4. .

  5. .

  6. .

  7. .

  8. .

  9. .

  10. .

  1. Обработка одномерных массивов

6.1. Массивы

Массив - ограниченная совокупность однотипных величин. Элементы массива имеют одно и то же имя и различаются порядковым номером (индексом). Это позволяет компактно записывать множество операций с помощью циклов.

Массив относится к ссылочным типам данных, то есть располагается в динамической области памяти, поэтому создание массива начинается с выделения памяти под его элементы. Элементами массива могут быть величины как значимых, так и ссылочных типов (в том числе массивы). Массив значимых типов хранит значения, массив ссылочных типов — ссылки на элементы. Всем элементам при создании массива присваиваются значения по умолчанию: нули для значимых типов и null — для ссылочных.

Например:

int[ ] w = new int[10]; // массив из 10 целых чисел

string[ ] z = new string[100]; // массив из 100 строк

Количество элементов в массиве (размерность) не является частью его типа, это количество задается при выделении памяти и не может быть изменено впоследствии. Размерность может задаваться не только константой, но и выражением. Результат вычисления этого выражения должен быть неотрицательным, а его тип должен иметь неявное преобразование к int, uint, long или ulong.

Пример размерности массива, заданной выражением:

short n= 10;

string[] z= new string[n + 1];

Элементы массива нумеруются с нуля, поэтому максимальный номер элемента всегда на единицу меньше размерности (например, в описанном выше массиве w элементы имеют индексы от 0 до 9). Для обращения к элементу массива после имени массива указывается номер элемента в квадратных скобках, например:

w[4] z[1]

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]