Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Подбельский Фомин_Программирование на языке СИ_...doc
Скачиваний:
356
Добавлен:
10.08.2019
Размер:
53.81 Mб
Скачать

Варианты заданий по итерационным методам и рядам

Пример выполнения задания.

Вычислить табл. 10.3 из 11 значений заданной функции f(x) = -sh(x) на интервале [a,b], где а = 1, b = 5. Столбцы табл. 10.2 следующие:

1 - значение хi;

2 - значение f1(x), вычисленное с использованием библиотечных функций и компилятора;

3 - значение f2(x), вычисленное с помощью явного разложения в ряд или итерационного процесса (до достижения "машинного нуля");

4 - значение "машинного нуля" относительно f(xi), т.е. точность вычислений;

5 - количество итераций или количество членов ряда в разложении функции.

С применением библиотечных функций можно записать: у = sqrt(x) * sinh(x).

Для вычисления приближенного значения воспользуемся формулой Ньютона:

В качестве начального приближения возьмем у0=х. В качестве условия окончания процесса используем равенство:

yn+1 == уп.

Для вычисления гиперболического синуса sh(x) используем ряд Тейлора:

Условием окончания вычислений гиперболического синуса пусть будет "неизменность" накопленной суммы после добавления очередного члена ряда.

Точность результатов будем оценивать как разность между значением функции, вычисленным с помощью библиотечных функций, и значением, полученным с помощью приведенных формул.

Числом итераций будем считать максимальное из двух значений - количество итераций по формуле Ньютона и количество членов, использованных в разложении sh(x) в ряд.

Используемые переменные:

yt - значение sh(x), полученное с помощью библиотечных функций;

ус - значение sh(x), вычисленное с помощью явного разложения в ряд sh(x) и по формуле Ньютона для ;

а - точность подсчета;

sq - текущее значение приближения при вычислении ;

sq0 - предыдущее значение приближения для ;

sh - текущее значение члена ряда при вычислении функции у = sh(x);

sum - сумма ряда, подсчитанная при разложении функции у = sh(x);

sm - предыдущее значение суммы ряда sum;

shn - счетчик элементов ряда разложения функции у = sh(x);

sqn - счетчик итераций при вычислении функции у = sqrt(x);

х - значения хi, в которых производятся вычисления значений sh(x).

Псевдокод программы:

Цикл для х от 1 до 5 при изменении х с шагом 0.4.

Вычислить yt - "табличное" значение sqrt(x)*sinh(x) в точке х.

Найти значение функции у= в точке х, т.е. sq.

Найти значение функцииy=sh(x) в точке х, т.е. sum.

Вычислить для х значение ус = sq*sum.

Оценить точность вычислений.

Конец-цикла.

Вывести результаты.

Текст программы:

Результаты:

10.3. Работа со строками. Указатели, динамические одномерные массивы

Порядок выполнения задания (общая схема алгоритма):

1. Запросить у пользователя максимально возможную по условиям задачи длину LenMax строки.

2. Создать динамический символьный массив данного размера (LenMax).

3. Запросить у пользователя исходную строку и записать ее в массив, созданный в п. 2.

4. Если длина введенной строки меньше LenMax, изменить количество памяти, выделенной под массив в п.2. (уменьшить размер массива).

5. Выполнить действия, необходимые для решения задачи.

6. В процессе решения создать динамический массив нужной длины, содержащий результирующую строку, либо несколько массивов (в зависимости от условий задачи).

7. Освободить память, выделенную под все созданные во время работы динамические массивы, за исключением массива (массивов), содержащего результирующую строку (строки).

8. Напечатать (вывести на дисплей) результирующую строку (строки).

Примечание. Если введенная пользователем исходная строка содержит символы, не являющиеся допустимыми, выдать сообщение об ошибке и первый недопустимый символ. Прекратить решение задачи.

В соответствии с целями практикума в конкретных условиях при выполнении заданий данного §10.3 могут быть введены следующие ограничения:

• Не применять индексированных переменных для доступа к элементам массивов-строк, а использовать разыменование указателей.

• Не использовать стандартные (библиотечные) функции str...( ) для работы со строками, а явно выполнять все действия по конкатенации, копированию, сравнению и пр.