Суммирование и произведение рядов

Лабораторная работа №2

Программирование в Mathcad

 

Цель работы: Изучить язык программирования Mathcad, научиться решать задачи, используя программирование.

 

Теоретическая часть

В пакете Mathcad существует богатый набор средств для решения различных математических задач, встроено огромное количество функций из различных разделов математики. Однако написать функции для всех практических задач, которые могут стоять перед пользователями пакета, невозможно. Для расширения возможностей разработчики пакета встроили достаточно простой и оригинальный язык программирования. В любом месте документа Mathcad можно вставить код программы на встроенном языке программирования. Это можно сделать при помощи «горячих клавиш» или команд из панели инструментов Programming (Программирование).

Порядок выполнения работы

 

Панель Программирование

Для визуализации панели программирования необходимо нажать на кнопку из панели математических инструментов или подать команду View \ Toolbars \ Programming. На данной панели имеется десять команд.

 

Щелчок по одной из этих команд создает в текущей позиции заготовку для соответствующей программной конструкции. При частом использовании команд программирования удобнее запомнить комбинации «горячих клавиш» и команды генерировать при помощи клавиатуры.

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

Приведем значение «горячих клавиш», использующих при программировании на Mathcad.

 

Команда Горячая клавиша Команда Горячая клавиша
Add Line ] {
if } otherwise CTR+Shift+]
for Ctrl+Shift+’ while Ctrl+]
break Ctrl+Shift+[ continue Ctrl+[
return Ctrl+Shift+\ On error Ctrl+’

 

Рассмотрим все команды из панели программирования Mathcad.

 

Оператор Add Line

 

1. Add Line – добавляет строку в текущую позицию программы. При вводе данной команды появляется или расширяется на одну строку вертикальная линия, объединяющая отдельные операторы в блок с одним входом и одним выходом, который выполняется как один оператор.

Позиция, куда вставится строка, определяется положением курсора. Чтоб вставить новую строку в середину программы, нужно выделить (пробелами) строку перед позицией, куда будет вставлена пустая строка. Удалить лишнюю строку можно с помощью кнопки backspace на клавиатуре.

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

2. ← – оператор присваивания значения локальной переменной. При выходе из блока программы значения локальных переменных оказываются недоступны для других участков Mathcad файла.

В Mathcad имеются два оператора присваивания: для глобальных переменных (обозначается двумя символами «:=») и для локальных переменных «←». Глобальные переменные доступны в любом месте программы после объявления данной переменной, а локальные – только в текущем блоке.

Для пояснения действия локального и глобального оператора присваивания рассмотрим пример простейшей программы на Mathcad.

Напишем программу для решения квадратного уравнения ax 2 +bx+c=0.

В программе при помощи операторов глобального присваивания задаются значения глобальных переменных a, b и c.

Для сравнения введем еще локальную переменную k и присвоим ей значение 4.

Далее вычисляем значение корней квадратного уравнения при помощи программы, состоящей из одного блока операторов. В программе применяются три оператора локального присваивания и возвращается значения вектора x, состоящего из двух чисел. После выполнения программы выводим значение всех переменных, используемых в программе. При этом значение всех локальных переменных D, x и k, заданных вне блока, программа не видит, поэтому вместо знака= выводится оператор глобального присваивания «:=». В этом случае значение переменной не выводится, а вместо него отображается красный прямоугольный маркер.

Начало программы.

 

 

Конец программы.

 

Оператор if

 

Оператор if предназначен для организации разветвляющихся вычислительных процессов. Чтобы ввести оператор if  в программу, необходимо мышкой щелкнуть по кнопке if из панели программирования или использовать горячую клавишу –}. При этом в программу вставляется заготовка для оператора if: if .

Общий вид простого оператора if:

D if L,

L – логическое выражение;

D – оператор, выполняемый в случае, если условие L принимает значение «истина».

Оператор работает следующим образом:

•вычисляется логическое условие L;

•если L – истина, то выполняется оператор D, в ином случае он не выполняется;

•выполнение программы продолжается со следующего,

после if, оператора.

Как мы видим, данный оператор if идентичен аналогичному оператору из других высокоуровневых языков программирования. Единственное отличие заключаются в синтаксисе.

Для формирования сложных условий можно использовать панель инструментов Boolean, содержатся знаки логического равенства, неравенства и логических операций. В частности, «V» означает логическое «или», а «Λ» — логическое «и».

Таким образом, чтобы сформулировать условие, что переменная х находится в диапазоне (–3;4), необходимо написать: x > –3 Λ x < 4.

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

Пример. Построить график следующей функции:

 

 

 

В сложных подпрограммах часто используется блочный оператор if: if

где D1, …, Dn – действия, выполняемые в случае, если логическое условие L истинно.

Для того чтобы вставить подобную конструкцию, нам необходимо, на панели инструментов Programming, выбрать if , затем установить курсор на место ввода слева от оператора if и n раз нажать на Add Line.

Приведем пример программы с подобным оператором. Усовершенствуем программу для решения квадратного уравнения ax 2 +bx+c=0.

 

В данном случае при дискриминанте меньше 0 программа выдает сообщение «действительных корней нет!».

Кроме оператора if, программа Mathcad может содержать и оператор otherwise.

 

Оператор otherwise

 

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

Общий вид такого оператора следующий:

D1 if L

D2 otherwise

В случае если условие L истинно, выполняются действия D1, иначе выполняются действия D2. То есть otherwise аналогичен оператору else в Бейсике, Фортране и других высокоуровневых языках.

Рассмотрим пример программы, использующей операторы if и otherwise. В данном случае проверяются условия, при которых логарифм не существует (x<0 или y<0 или y=1). Если они выполнены, выдается сообщение «error», в противном случае вычисляется :

 

 

Когда в блоке otherwise несколько строк, нужно установить курсор в место ввода слева от оператора otherwise и нажать Add Line необходимое количество раз.

Вернемся к программе, вычисляющей корни уравнения ax 2 +bx+c=0, и запишем ее с помощью операторов if и otherwise.

      

 

Оператор for

Оператор for используется для создания циклических вычислительных процессов. В документе Mathcad простейшие циклы могут быть заменены ранжированными векторами. Для более сложных циклов необходимо составлять программу.

Чтобы вставить оператор for в программу, необходимо мышкой щелкнуть по кнопке for из панели программирования или использовать «горячую» клавишу «Ctrl+Shift+’». При этом в программу вставляется заготовка для оператора for:

Общий вид оператора выбора for:

for i k1..kn

D

Или

for i (k1k2k3 ...kn)

D

где i – счетчик цикла. Переменная, которая меняется в диапазоне от k1 до kn. Диапазон изменения счетчика цикла вводится с помощью ранжированной переменной или с помощью вектора.

D –действия, которые выполняются в цикле (тело цикла).

Ниже приведен пример, в котором диапазон изменения счетчика цикла n задан с помощью вектора. Вектор вставляется с помощью панели инструментов Matrix.

 

 

Данная программа вычисляет сумму Sum=1+1/2+1/5+1/7+1/10+1/11+1/13+1/16+1/17+1/19.

Если тело цикла оператора for состоит из нескольких строк, то необходимо установить курсор на позицию для ввода тела цикла и соответствующее количество раз нажать на Add Line.

Как и в обычных программах, циклы и условные операторы могут быть вложенными. Mathcad, впрочем, сам следит за вложенностью циклов и сделать ошибку во вложенности просто не позволит.

Пример. Написать функцию FA, создающую матрицу A, состоящую из M строк и N столбцов следующего вида:

 

 

Запишем подпрограмму, выводящую эту матрицу с помощью двух вложенных циклов:

 

 

Тогда главная диагональ задается уравнением «i=j», элементы матрицы, расположенные выше главной диагонали, уравнением«i<j», а элементы матрицы, расположенные ниже главной диагонали, – уравнением«i<j».

Каждый элемент, расположенный выше главной диагонали, вычисляется как удвоенное произведение элемента, стоящего в этой же строке в предыдущем столбце: A i j =2* A i j–1.

Для проверки работы функции подали команду: FA(4,5)=. 6.

 

Оператор while

 

Оператор цикла while используется тогда, когда цикл должен выполняться не заданное количество раз, а до тех пор, пока не будет выполнено определенное в цикле условие.

Чтобы вставить оператор while в программу, необходимо мышкой щелкнуть по кнопке while из панели программирования или использовать горячую клавишу –«Ctrl+]». При этом в программу вставляется заготовка для оператора while: while  

Общий вид оператора While:

while L

D,

где L – условие, при выполнении которого выполняется цикл (условие цикла). В данном случае, действие D (тело цикла) выполняется до тех пор, пока условие L истинно. Если логическое условие L изначально ложно, то операторы, составляющие тело цикла, не будут выполняться, а управление передается на оператор следующий за оператором while.

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

Следует заметить, что если условие L истинно всегда, то программа будет работать бесконечно (зациклится). Именно поэтому с циклом while необходимо быть очень осторожным и тщательно проверять условие выхода из цикла, прежде чем выполнять программу.

Если программа все-таки повисла, то чтобы прервать ее выполнение, необходимо нажать клавишу «Esc» и в появившемся окне нажать на кнопку OK.

Приведем пример программы, использующей цикл while.

 

 

В данной программе с указанной точностью (tol) вычисляется сумма s=1+1/2+1/3+1/4+1/5+1/6+1/7…

Оператор break

 

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

В качестве примера применения оператора break рассмотрим задачу вычисления суммы числового ряда . В приведенной ниже программе, суммирование членов ряда прекращается, когда достигается точность, указанная параметром tol или если число итераций цикла превышает 10000.

 

 

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

 

Оператор continue

 

Оператор continue возвращает управление в первую строку цикла. Как только этот оператор встречается в программе, выполнение текущей итерации прерывается и выполняется переход на следующую итерацию цикла. Выход из цикла не производится.

Данный оператор, как и оператор break, не содержит параметров.

 

Пример: Найти сумму N первых членов ряда:

 

В программе, при помощи оператора continue, происходит обход слагаемого в котором знаменатель дроби равен нулю.

 

 

 

 

 

Оператор return

 

Оператор return прерывает выполнение программы. В качестве результата работы программы возвращается значение, указанное в позиции для ввода, после оператора return.

При выборе на панели инструментов пункта return вставляется строка.

Пример. Подсчитать с указанной точностью tol сумму ряда:

 

 

 

Если ряд получается расходящийся, программа выдаст сообщение «расходится». Ряд будет считаться расходящимся, если число итераций цикла превысило 1000000 раз.

Оператор on error

 

Оператор on error отвечает за обработку ошибок. При выборе данного оператора в программу вставляется заготовка следующего вида:

Общий вид оператора on error:

 

D1on error D2 .

 

Если при вычислении выражения D1 произошла ошибка, будет вычислено значение D2.

Данный оператор имеет смысл использовать, если при выполнении программы возможна ошибка в каком-то определенном месте, например деление на ноль.

Приведем пример программы, вычисляющей десятичный логарифм числа xy.

Если логарифм не существует, выдается сообщение об ошибке: «аргумент логарифма <0».

 

 

Оператор on error можно применять в комплексе встроенной функцией error().

 

В данном случае сообщение об ошибке будет показываться в стандартном для Mathcad виде. При ошибке текст вызова функции выделяется красным цветом, а при подведении мыши к этому вызову внизу отображается запрограммированный в функции error текст.

Суммирование и произведение рядов

Суммирование и произведение рядов можно осуществлять либо используя шаблоны суммирования и произведения (кнопки которых находятся на панели View → Toolbars→Calculus (Вид→ Панели инструментов → Калькуляция)),либо шаблоныпрограммирования (кнопки расположены на панели View → Toolbars→Programming (Вид→ Панели инструментов → Программирование)). Средства инструментальной панели Программирование рассмотрены в приложении 5.

 

Пример 1. Вычислить частичную сумму ряда , , с использованием шаблонов суммирования и произведения.

 

 

 

Пример 2. Вычислить частичную сумму ряда средствами программирования.

Решение. Ниже показана программная реализация.Суммирование прекращается, когда модуль текущего члена ряда станет меньше заданной точности ε, причем данный член ряда в сумму не входит.

 

 

Операторы программы располагаются справа от вертикальной линии и выполняются сверху вниз. Один из операторов – цикл While, тело которого (короткая линия) состоит из трех операторов. (Внимание! Оператор While вводится не с клавиатуры, а кнопкой, расположенной на панели инструментов Программирование). Цикл выполняется, пока модуль очередного слагаемого s1 превышает заданную точность.

Значение, возвращаемое функцией, задается переменной, расположенной в конце программы (самая нижняя позиция линии – сумма s).

Вертикальная линия, на которой располагаются операторы программы, появляется при нажатии кнопки Add Line на панели Программирование. Добавление позиций на линии осуществляется повторными нажатиями кнопки Add Line.

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

 

Пример 3. Далее приводится программа для вычисления членов указанного выше ряда. Функция f1(x, ε) возвращает массив искомых членов ряда.


2.3 Задание на лабораторную работу

Задание 2.1

Используя шаблон                                         или                                      найти частичную сумму ряда:

 

 

 

1. ,

2. ,

3. ,

4. ,

5. ,

6. ,

7. ,

8. ,

9. ,

10. ,

11. ,

12. ,

13. ,

14. ,

15. ,

16. ,

17. ,

18. ,

19. ,

20.

21. ,

22. ,

23. ,

24. ,

25. ,

 

Задание 2.2

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

 

Задание 2.3

       Пользуясь средствами программирования, создать функцию, возвращающую массив членов указанного ряда.

 

Задание 2.4

Построить график кусочно-заданной функции

  1. шаг 0.5

  1. шаг 0.2

  1. шаг 0.2

  1. шаг 0.2

                 

  1. шаг 0.3

           

  1. шаг 0.1

  1. шаг 0.1

 

Задание 2.5

Нечетные варианты выполняют 1,3,5,7

Четные варианты выполняют 2,4,6,8

Написать функцию FA, создающую матрицу A, состоящую из M строк и N столбцов следующего вида:

 

1.

2.

3.

4.

5.

6.

7.

8.

 

2.4 Контрольные вопросы:

1. Перечислите все команды панели Программирование.

2. Какие «горячие клавиши», использующиеся при программировании на Mathcad.

3. Какие операторы цикла используются в MathCad? В чем особенность их применения?

4. В каком случае применяется оператор otherwise?

5. С помощью какого оператора прерывается выполнение программы? Приведите пример.

6. Назначение оператора continue.

7. Правила ввода операторов панели Программирования.

 


Дата добавления: 2019-01-14; просмотров: 379; Мы поможем в написании вашей работы!

Поделиться с друзьями:




Мы поможем в написании ваших работ!