8(495)909-90-01
8(964)644-46-00
pro@sio.su
Главная
Системы видеонаблюдения
Охранная сигнализация
Пожарная сигнализация
Система пожаротушения
Система контроля удаленного доступа
Оповещение и эвакуация
Контроль периметра
Система домофонии
Парковочные системы
Проектирование слаботочных сетей
Аварийный
контроль
Раздел: Документация

0 ... 118 119 120 121 122 123 124 ... 365

Рис. 7.1. Семейство кривых Напишите файл-программу для вычисления суммы

10 1

Алгоритм вычисления суммы использует накопление результата, т. е. сначала сумма равна нулю, затем в переменную k заносится единица, вычисляется l/kl (т. е. 1/1!), добавляется к S и результат снова заносится в S. Далее к

увеличивается на единицу, и процесс продолжается, пока последним слагаемым не станет 1/10!. Файл-программа FORdem2, приведенная в листинге 7.2, вычисляет искомую сумму.

Примечание

Если шаг цикла равен 1, то его можно не указывать.

Листинг 7.2. Файл-программа FORdem2 для вычисления суммы

-.......-......................................................—................................................................. —......

% ФАЙЛ-ПРОГРАММА ДЛЯ ВЫЧИСЛЕНИЯ СУММЫ % 1/1! + 1/2! + ... + 1/10!

% обнуление S для накопления суммы


% накопление суммы в цикле с шагом 1 for к = 1:10

S = S + 1/factorial(к);

end

% вывод результата в командное окно S

Наберите файл-программу в редакторе М-файлов, сохраните в текущем каталоге в файле FORdem2.m и выполните се. Результат отображается в командном окне. т. к. в последней строке файл-программы содержится s без точки с запятой для отображения значения переменной s в командное окно

s =

1.7183

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

Первые две строки с комментариями не случайно отделены пустой строкой от остального текста программы. Именно они выводятся на экран, когда пользователь при помощи команды help из командной строки получает информацию о назначении файл-программы FORdem2

» help FORdem2 ФАЙЛ-ПРОГРАММА ДЛЯ ВЫЧИСЛЕНИЯ СУММЫ 1/1! + 1/2! + ... + 1/10!

При написании файл-программ и файл-функций не пренебрегайте комментариями, особенно если вы планируете продолжить работу с ними!

Важно понять, что все переменные, использующиеся в файл-программе, становятся доступными в рабочей среде (см. окно Workspace). Они являются так называемыми глобальными переменными. Например, для получения значения к после выполнения FORdem2 следует просто набрать к в командной строке и нажать <Enler>. Результат очевиден, т. к. последний раз цикл for выполнялся как раз для к, равного десяти. С другой стороны, в файл-программе могут использоваться все переменные, введенные в рабочей среде, т. е. переменные всех файл-программ и рабочей среды являются общими. Это может послужить источником ошибок, поскольку файл-программа изменяет содержимое одноименных переменных рабочей среды, которые могли быть инициализированы из командной строки или в другой файл-программе.


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

Для вычисления данной суммы в файл-программе FORdem2, приведенной в листинге 7.2, требуется изменить строку внутри цикла for на

S = S + х."к/factorial(к);

Перед запуском программы следует определить переменную х в командной строке. Вычисление, например, 5(1.5), производится из командной строки при помощи следующих команд:

» х = 1.5;

» FORdem2 S =

3.4817

В качестве х может быть вектор или матрица, поскольку в файл-программе FORdem2 при накоплении суммы использованы поэлементные операции.

Перед запуском F0Rdem2 нужно обязательно присвоить переменной х некоторое значение, а для вычисления суммы, например из пятнадцати слагаемых, придется внести изменения в текст файл-программы. Гораздо лучше написать универсальную файл-функцию, у которой в качестве входных аргументов будут значение х и верхний предел суммы, а выходным — значение суммы S(jc). Использование конструкций языка программирования, в

частности, циклов, в файл-функциях производится так же, как и в файл-программах.

Создавая файл-функцию, внесите некоторое усовершенствование в алгоритм. При вычислении к-го слагаемого ak -xk jk\ требуется возвести х в

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

соседними слагаемыми. Предположим, что уже вычислено а5 =х5/5\, тогда очевидно, что а$ =а4 -х/6, а для произвольного к справедливо рекуррентное соотношение: ак =a/t 1 xfk , связывающее текущее и предыдущее слагаемые, в котором формально Oq = 1. Достаточно часто такой подход позволяет эффективно вычислять суммы, возникающие в практических



0 ... 118 119 120 121 122 123 124 ... 365