36
1 Практическое занятие 3 Программирование в Mathcad ОГЛАВЛЕНИЕ АЛГОРИТМИЗАЦИЯ И ПРОГРАММИРОВАНИЕ .................................................................. 2 ПРОГРАММНЫЙ МОДУЛЬ И ЕГО ОПЕРАТОРЫ ................................................................. 6 ПРОГРАММИРОВАНИЕ ЛИНЕЙНЫХ АЛГОРИТМОВ ........................................................ 7 ПРОГРАММИРОВАНИЕ РАЗВЕТВЛЯЮЩИХСЯ АЛГОРИТМОВ ................................... 10 ПРОГРАММИРОВАНИЕ ЦИКЛИЧЕСКИХ АЛГОРИТМОВ ............................................... 14 Цикл с известным числом повторений (цикл с параметром) ......................................................................... 14 Цикл с условием ...................................................................................................................................................... 17 Оператор прерывания ............................................................................................................................................ 19 Оператор продолжения .......................................................................................................................................... 20 Оператор прерывания программного модуля ................................................................................................... 20 Оператор обработки ошибок ................................................................................................................................. 20 Вложенные циклы типа for ................................................................................................................................... 21 ПРИМЕРЫ ПРОГРАММИРОВАНИЯ ...................................................................................... 25 Численное интегрирование ................................................................................................................................... 25 1. Постановка задачи. ....................................................................................................................................... 25 2. Метод прямоугольников. ............................................................................................................................. 26 3. Метод трапеций. ........................................................................................................................................... 28 4. Метод парабол (Симпсона). ........................................................................................................................ 29 5. Реализация в Mathcad ................................................................................................................................... 31 6. Общая практическая часть .......................................................................................................................... 33 ИНДИВИДУАЛЬНЫЕ ЗАДАНИЯ ............................................................................................ 34 Задачи линейной структуры ................................................................................................................................. 34 Задачи на условную и циклическую структуру ................................................................................................ 36

Программирование в Mathcadreshimna5.ru/tasks/task_19566.pdf · 2014-11-15 · то есть, может быть применен для решения класса

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Программирование в Mathcadreshimna5.ru/tasks/task_19566.pdf · 2014-11-15 · то есть, может быть применен для решения класса

1

Практическое занятие 3

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

ОГЛАВЛЕНИЕ

АЛГОРИТМИЗАЦИЯ И ПРОГРАММИРОВАНИЕ .................................................................. 2

ПРОГРАММНЫЙ МОДУЛЬ И ЕГО ОПЕРАТОРЫ ................................................................. 6

ПРОГРАММИРОВАНИЕ ЛИНЕЙНЫХ АЛГОРИТМОВ ........................................................ 7

ПРОГРАММИРОВАНИЕ РАЗВЕТВЛЯЮЩИХСЯ АЛГОРИТМОВ ................................... 10

ПРОГРАММИРОВАНИЕ ЦИКЛИЧЕСКИХ АЛГОРИТМОВ ............................................... 14

Цикл с известным числом повторений (цикл с параметром) ......................................................................... 14

Цикл с условием ...................................................................................................................................................... 17

Оператор прерывания ............................................................................................................................................ 19

Оператор продолжения .......................................................................................................................................... 20

Оператор прерывания программного модуля ................................................................................................... 20

Оператор обработки ошибок ................................................................................................................................. 20

Вложенные циклы типа for ................................................................................................................................... 21

ПРИМЕРЫ ПРОГРАММИРОВАНИЯ ...................................................................................... 25

Численное интегрирование ................................................................................................................................... 25 1. Постановка задачи. ....................................................................................................................................... 25 2. Метод прямоугольников. ............................................................................................................................. 26 3. Метод трапеций. ........................................................................................................................................... 28 4. Метод парабол (Симпсона). ........................................................................................................................ 29 5. Реализация в Mathcad ................................................................................................................................... 31 6. Общая практическая часть .......................................................................................................................... 33

ИНДИВИДУАЛЬНЫЕ ЗАДАНИЯ ............................................................................................ 34

Задачи линейной структуры ................................................................................................................................. 34

Задачи на условную и циклическую структуру ................................................................................................ 36

Page 2: Программирование в Mathcadreshimna5.ru/tasks/task_19566.pdf · 2014-11-15 · то есть, может быть применен для решения класса

2

АЛГОРИТМИЗАЦИЯ И ПРОГРАММИРОВАНИЕ

Алгоритм – это базовое понятие информатики. На понятии алгоритма построены все

основные принципы программирования – составления программ для вычислительных машин.

Существуют различные определения алгоритма, приведем одно из них.

Алгоритм - это однозначно определенная последовательность действий, записанная на

понятном исполнителю алгоритмическом языке и определяющая процесс перехода от исходных

данных к результату.

Принято выделять следующие свойства алгоритма:

дискретность - алгоритм состоит из отдельных инструкций (шагов), информационный

процесс разделен на отдельные команды;

определенность (детерминированность) - однозначность результатов выполнения

алгоритмов в одинаковых начальных условиях, при этом каждый шаг интерпретируется

исполнителем единственным образом;

результативность - за конечное число шагов достигается некоторый результат, иногда

конечность алгоритма выделяют как отдельное свойство;

массовость - алгоритм работает при меняющихся в некоторых пределах входных данных,

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

Иногда выделяют и другие свойства, например, правильность алгоритма означает

правильность результатов, получаемых с его помощью. Алгоритм считается правильным, если он

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

ошибки, если его выполнение приводит к сбоям, неправильным результатам, либо вовсе не дает

результатов.

Наряду с понятием алгоритма используют термин алгоритмизация, под которой

понимают совокупность приемов и способов составления алгоритмов для решения

алгоритмических задач. Процесс программирования начинается, как правило, с составления алгоритма –

последовательности операций, описывающих процесс решения задачи. На практике

получили распространение 2 основных формы записи алгоритмов:

словесная или текстовая форма представления алгоритма представляет собой описание

алгоритма на естественном языке или в виде структурированной записи на псевдокоде – также

естественном, но частично формализованном языке;

графическим представлением алгоритма в виде блок–схемы называют описание структуры

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

выполнения отдельных инструкций.

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

целых, второй, напротив, является удобным средством изображения алгоритмов и получил

широкое распространение в научной и учебной литературе.

Блок-схема – это последовательность блоков, предписывающих выполнение определенных

операций, и связей между этими блоками. Внутри блоков указывается информация об операциях,

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

оформления блок-схем регламентированы ГОСТ 19002-80 и ГОСТ 19003-80 "Схемы алгоритмов и

программ".

В табл. 1 приведены наиболее часто используемые блоки, изображены элементы связей

между ними и дано краткое пояснение к ним. Блоки и элементы связей называют элементами

блок-схем. Представленных в табл. 1 элементов, как правило, достаточно для изображения всех

алгоритмов, необходимых при выполнении студенческих работ. При соединении блоков следует

использовать только вертикальные и горизонтальные линии потоков.

Горизонтальные потоки, имеющие направление справа налево, и вертикальные потоки,

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

помечены или оставлены непомеченными. Линии потоков должны быть параллельны линиям

внешней рамки или границам листа.

Page 3: Программирование в Mathcadreshimna5.ru/tasks/task_19566.pdf · 2014-11-15 · то есть, может быть применен для решения класса

3

Таблица 1. Основные элементы блок-схем

Название Элемент Комментарий Процесс

Вычислительное действие или

последовательность

вычислительных действий

Решение

Проверка условия

Модификация

Заголовок цикла

Предопределенный

процесс

Обращение к процедуре

Документ

Вывод данных, печать данных

Перфокарта

Ввод данных

Ввод/Вывод

Ввод/Вывод данных

Соединитель

Разрыв линии потока

Начало, Конец

Начало, конец, пуск, останов,

вход и выход во вспомогательных

алгоритмах Комментарий

Используется для размещения

надписей

Горизонтальные и

вертикальные потоки

Линии связей между блоками,

направление потоков

Слияние

Слияние линий потоков

Межстраничный

соединитель

Нет

Page 4: Программирование в Mathcadreshimna5.ru/tasks/task_19566.pdf · 2014-11-15 · то есть, может быть применен для решения класса

4

Составление алгоритма заключается в логическом описании процесса решения

задачи и требует знания элементов математической логики. Следует отметить, что

программированию предшествует важнейший этап – постановка задачи. Постановка

задачи может включать широкий спектр вопросов (разработка математических и

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

представлять явление или формулу, которые он алгоритмизирует.

Алгоритмы можно представлять как некоторые структуры, состоящие из

отдельных базовых (т.е. основных) элементов. Естественно, что при таком подходе к

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

изучения этих базовых элементов.

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

базовых алгоритмических структур:

следование или линейный алгоритм;

ветвление или разветвляющийся алгоритм;

циклический алгоритм.

Характерной особенностью базовых структур является наличие в них одного входа

и одного выхода. Ниже приведены графические обозначения (обозначения на блок-схемах) базовых

алгоритмических структур. Используются следующие обозначения: «Серия» обозначает

один или несколько любых операторов (рис.1 и рис.2); «ЛВ» – логическое выражение

(рис.2 и рис.3); «ПЦ» – параметр цикла, «НЗ» – начальное значение параметра цикла,

«КЗ»– конечное значение параметра цикла, «Ш» – шаг изменения параметра цикла (рис.3,

в).

1. Базовая структура «следование». Образуется последовательностью действий,

следующих одно за другим:

Рис.1 Схема базовой структуры «следование».

2. Базовая структура «ветвление». Обеспечивает в зависимости от результата проверки

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

ИСТИНА, переход происходит по ветви Да, иначе – по Нет. Каждый из путей ведет к

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

какой путь будет выбран.

а б

Рис. 2 Схема базовой структуры «ветвление»: а – полная развилка; б – неполная развилка

Серия

Серия

ЛВ

Серия 2 Серия 1

Нет Да

ЛВ

Серия

Да Нет

Page 5: Программирование в Mathcadreshimna5.ru/tasks/task_19566.pdf · 2014-11-15 · то есть, может быть применен для решения класса

5

3. Базовая структура «цикл». Обеспечивает многократное выполнение некоторой

совокупности действий, которая называется телом цикла.

а б

в

Рис.3 Схема базовой структуры «цикл»: а – цикл с предусловием(цикл ПОКА); б – цикл

с постусловием(цикл ДО); в - цикл с параметром

Да

Тело

цикла

Нет

ЛВ

ПЦ := НЗ, КЗ, Ш

Тело

цикла

Да

Тело

цикла

ЛВ

Нет

Page 6: Программирование в Mathcadreshimna5.ru/tasks/task_19566.pdf · 2014-11-15 · то есть, может быть применен для решения класса

6

ПРОГРАММНЫЙ МОДУЛЬ И ЕГО ОПЕРАТОРЫ

Для создания Mathcad-программы следует воспользоваться панелью инструментов

Программирование/Programming, вызвав ее кнопкой, расположенной на

математической панели

С точки зрения программирования вообще Mathcad-программа представляет собой

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

матрицу.

Mathcad-программа создается в виде программного модуля. Это самостоятельный

блок, который отличает жирная вертикальная черта.

Оператор Add Line вставляет в рабочий документ конструкцию в виде блока,

который ограничен жирной вертикальной линией, справа от которой расположены поля

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

добавления новых полей ввода, надо повторно вызвать оператор Add Line, но уже внутри

программного модуля. Причем можно не только сделать блок длиннее, но и создать

всевозможные вложенные структуры.

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

имени. Рассмотрим пример расчета площади круга обычным способом и в программном

блоке.

Пример 1. Программный модуль без имени.

Площадь круга с радиусом

составит

Вычисление площади при R = 2 в программном блоке:

Вне программного блока значение переменной не меняется

R 3

S R2

S 28.274

R 3 S 28.274

Page 7: Программирование в Mathcadreshimna5.ru/tasks/task_19566.pdf · 2014-11-15 · то есть, может быть применен для решения класса

7

Операторы программного блока содержит панель Programming:

Add Line - создание блока для ввода команд Mathcad-программы

← - операция присваивание, локальное определение

if - условный (оператор if условие)

otherwise оператор альтернативного выбора (используется вместе с

условным)

for оператор цикла с известным числом повторений

while оператор условного цикла

break оператор прерывания

сontinue оператор продолжения

return оператор возврата

on error оператор обработки ошибки

Программирование линейных алгоритмов

Линейным называется алгоритм, в котором результат получается путем однократного

выполнения заданной последовательности действий при любых значениях исходных

данных. Операторы программы выполняются последовательно, один за другим, в

соответствии с их расположением в программе.

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

треугольника по формуле Герона, где a, b, c – стороны треугольника, P – полупериметр.

Этапы решения задачи:

1. Математическая модель: вычисление полупериметра

треугольника по формуле cbaP 2

1, вычисление

площади треугольника по формуле Герона

cpbpappS

2. Составление схемы линейного алгоритма.

3. Mathcad-программа:

4. Тестирование программы по тестовым примерам

5. Использование функции при различных входных параметрах

S a b c( ) Pa b c

2

S P P a( ) P b( ) P c( )

S

S 1 2 3 ( ) 0 S 3 4 5 ( ) 6

S 2 8 7 ( ) 6.437

Начало

Ввод a, b, c

cbaP 2

1

Вывод S

Конец

cpbpappS

Page 8: Программирование в Mathcadreshimna5.ru/tasks/task_19566.pdf · 2014-11-15 · то есть, может быть применен для решения класса

8

Пример 3. Определить расстояние на плоскости между двумя точками с заданными

координатами 111 , yxM и 222 , yxM

Этапы решения задачи:

1. Математическая модель: расстояние на плоскости между двумя точками 111 , yxM и

222 , yxM высчитывается по формуле 212

2

12 yyxxd

2. Составим схему линейного алгоритма

Введем дополнительные промежуточные

переменные 21 xxx и 21 yyy

3. Mathcad-программа

4. Проверка тестовым примером:

Примечание. Можно было посчитать расстояние без использования программного

модуля:

Пример 4. Вычислить длину окружности, площадь круга и объем шара одного и того же

заданного радиуса r: 32

4

3,,2 rVrSrl .

d x1 y1 x2 y2 ( ) x1 x2( )2

y1 y2( )2

d 1 1 4 5 ( ) 5

d x1 y1 x2 y2 ( ) x x1 x2

y y1 y2

d x2

y2

d

d 0 0 3 4 ( ) 5

Начало

Ввод 111 , ухМ и

222 , ухМ

22 yxd

Конец

Вывод d

21,21 yyyxxx

Page 9: Программирование в Mathcadreshimna5.ru/tasks/task_19566.pdf · 2014-11-15 · то есть, может быть применен для решения класса

9

Примечание. В качестве результата функция возвращает несколько значений, формируя

матрицу-строку из этих значений.

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

переменные:

Пример 5. Вычислить объем цилиндра и площадь боковой поверхности цилиндра с

заданными радиусом основания r и высотой h: hrV 2π , rhS π2

Пример 6. Найти площадь треугольника по двум сторонам и углу между ними.

Примечание. Учитывать переход от градусной мере к радианной ,

,

S 2 2 30 ( ) 1

deg 0.017

1800.017 180 deg 3.141593

primer r( ) L 2 r

S r2

V3

4 r

3

L S V( )

primer 1( ) 2 3

4

6.283 3.142 2.356( )

primer 2( ) 4 4 6 ( ) 12.566 12.566 18.85( )

primer r( ) x0 2 r

x1 r2

x23

4 r

3

x

primer 1( )

2

3

4

6.283

3.142

2.356

primer 2( )

4

4

6

12.566

12.566

18.85

primer5 r h ( ) V r2

h

S 2 r h

V S( )

primer5 1 2 ( ) 2 4 ( ) 6.283 12.566( )

S a b ( ) deg

Sa b

2sin ( )

S

Page 10: Программирование в Mathcadreshimna5.ru/tasks/task_19566.pdf · 2014-11-15 · то есть, может быть применен для решения класса

10

Программирование разветвляющихся алгоритмов

Алгоритм называется разветвляющимся, если он содержит несколько ветвей,

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

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

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

выбора одного из двух возможных действий (операторов) в зависимости от некоторого

условия, при этом одно из действий может отсутствовать. Отсюда следует два возможных

формата записи условного оператора.

Формат 1 (Неполная развилка)

Условный оператор имеет следующую

структуру:

оператор if условие,

где оператор – действие, которое выполняется, в случае если условие истинно. Если

условие ложно, управление передается следующему за if оператору.

Конструкция условного оператора

Пример 4. Применение условного оператора

3 < 6, следовательно, ,

3 > 6, следовательно,

Формат 2 (Полная развилка)

Оператор1 if условие Оператор2 otherwise

Если условие истинно, то выполнить

оператор1, иначе – оператор2.

Конструкция условного оператора

c 3 6 12 c 21

c 12

if

otherwise

if

F a b ( ) c 0

c a b a bif

c c 12

F 3 6 ( ) 21

F 8 1 ( ) 12

ЛВ

Серия

да нет

ЛВ

оператор2 оператор1

нет да

Page 11: Программирование в Mathcadreshimna5.ru/tasks/task_19566.pdf · 2014-11-15 · то есть, может быть применен для решения класса

11

Пример 7. Применение условного оператора с альтернативным выбором. Определить

наибольшее из двух заданных чисел:

Пример 8. Применение условного оператора сложной структуры. Функция выводит

текстовое сообщение о том какое из двух заданных чисел больше

Пример 9.Определить координаты вершины параболы y = a x² + b x + c. Коэффициенты

a, b, c вводить с клавиатуры.

Пример 10. Вычислите площадь кольца.

Этапы решения задачи:

1. Математическая модель: площадь кольца вычисляется по формуле 22 rRS ,

R - радиус большего круга, r - радиус меньшего круга.

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

большего круга

3. Mathcad-программа

maxi a b( ) a a bif

b otherwise

maxi 6 6( ) 6 maxi 7 5( ) 7 maxi 2 9( ) 9

F a b( ) "a>b" a bif

"a<b" a bif

"a=b" otherwise

otherwise

F 4 4( ) "a=b" F 3 7( ) "a<b"

Page 12: Программирование в Mathcadreshimna5.ru/tasks/task_19566.pdf · 2014-11-15 · то есть, может быть применен для решения класса

12

4. Проверка тестовым примером:

Пример 11. Дано действительное а. Вычислить значение функции y(a), график которой

представлен на рисунке:

Этапы решения задачи:

1. Математическая модель: функция вычисляется по следующей формуле

.21,4

;10,4

;02,2

;2,

2

2

x

xx

xx

xx

xy

2. Фрагмент алгоритма:

So r1 r2 ( ) S r12

r22

r1 r2if

S r22

r12

otherwise

S

So 3 2 ( ) 15.708

So 2 3 ( ) 15.708

Начало

Ввод 1r и 2r

22 21 rrS

Конец

Вывод S

21 rr

да нет

22 12 rrS

y = -2x

y = x2

y = x2

y = 4x2

x

y

4

2 -1 0 1 -2

Page 13: Программирование в Mathcadreshimna5.ru/tasks/task_19566.pdf · 2014-11-15 · то есть, может быть применен для решения класса

13

3. Mathcad-программа

4. Проверка тестовым примером:

f x( ) x2

x 2if

2 x 2 x 0if

4 1 x 2if

4x2

0 x 1if

f 3( ) 9 f 0( ) 0 f 0.5( ) 1

3 2 1 0 1 2 3

2

4

6

8

10

f x( )

x

|а| > 2

-2 ≤ а 0

1 а 2

да

да

да

нет

нет

нет

у = a2 y = -2a y = 4 y = 4 a

2

Page 14: Программирование в Mathcadreshimna5.ru/tasks/task_19566.pdf · 2014-11-15 · то есть, может быть применен для решения класса

14

Программирование циклических алгоритмов

Алгоритм называется циклическим, если он содержит многократное выполнение

одних и тех же операторов при различных значениях промежуточных данных. Число

повторений этих операторов может быть задано в явной (цикл с известным заранее

числом повторений) или неявной (цикл с неизвестным заранее числом повторений)

форме.

Цикл с известным числом повторений (цикл с параметром)

Структурно оператор цикла с параметром состоит из заголовка и тела. В заголовке

определяются начальное и конечное значения параметра цикла. Телом цикла с

параметром является принципиально один оператор, выполняющий определенное

действие. Если же в теле цикла с параметром нужно выполнить несколько операторов, то

организуется составной оператор, используя оператор Add Line.

Оператор for предоставляет возможность организовать цикл по некоторой переменной,

изменяющейся в заданном диапазоне. Схема выполнения оператора цикла с параметром

имеет вид:

Здесь i – параметр цикла, N1, N2 - начальное и конечное значения параметра цикла i, h –

шаг.

Оператор записывают так:

for переменная ∊ начальное значение, шаг . . конечное значение

Эта запись означает, что оператор выполнится для значений переменной, изменяющейся

в диапазоне от начального значения до конечного, с заданным шагом.

Конструкция оператора

Пример 12. Использование оператора цикла с известным числом повторений.

a) Сумма цифр от 1 до 10

шаг автоматически берется за единицу

for

sum S 0

S S i

i 1 10for

sum 55

i ∊ N1, N1+h .. N2

оператор

Page 15: Программирование в Mathcadreshimna5.ru/tasks/task_19566.pdf · 2014-11-15 · то есть, может быть применен для решения класса

15

b) Сумма цифр от 1 до 10 с шагом 0.5

c) Сумма нечетных цифр от 1 до 10

d) Сумма четных цифр от 10 до 2

Границы диапазона могут быть заданы не только конкретными значениями, но и

переменными, а диапазон – представлен в виде вектора.

Пример 13. Способы задания диапазона изменения переменной цикла

a) Сумма цифр от m до n

b) Сумма цифр, заданных вектор-строчкой

sum 10 20( ) 165

sum S 0

S S i

i 1 1.5 10for

sum 104.5

sum_chetN S 0

S S i

i 1 3 10for

sum_chetN 25

sum_nechetN S 0

S S i

i 10 8 2for

sum_nechetN 30

sum m n( ) S 0

S S i

i m nfor

sum_V v( ) S 0

S S i

i vfor

v 1 7 3 4 6( ) sum_V v( ) 21

f 12 14 65( ) sum_V f( ) 91

S:= S + i

Начало

ввод n, m

вывод S

Конец

i ∊ m .. n

S:= 0

Page 16: Программирование в Mathcadreshimna5.ru/tasks/task_19566.pdf · 2014-11-15 · то есть, может быть применен для решения класса

16

c) Сумма цифр, заданных вектор-столбцом

Пример 14. Создание функции с применением циклического оператора, которая

вычисляет одновременно сумму и произведение элементов от 1 до n.

нумерация элементов в векторе начнется с единицы

Mathcad-программа:

Присвоение начальных

значений

Вычисление значений

суммы и произведения

от 1 до n

Формируется вектор

из значений суммы и

произведения

Результат работы:

ORIGIN 1

sumV v n m( ) S 0

S S vi

i n mfor

h

1

1

0

1

0

4

1

f

10

2

4

6

sumV f 2 3( ) 6 sumV h 3 6( ) 5

ORIGIN 1

P n( ) S 0

P 1

S S i

P P i

i 1 nfor

V1 S

V2 P

V

P 5( )15

120

S := S + i

Начало

ввод N

вывод S, P

Конец

i ∊ 1 .. N

S:= 0, P :=1

P := P · i

Page 17: Программирование в Mathcadreshimna5.ru/tasks/task_19566.pdf · 2014-11-15 · то есть, может быть применен для решения класса

17

Цикл с условием

С помощью оператора While создается цикл, количество повторений которого неизвестно,

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

вид

While Логическое условие

оператор

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

Схема выполнения оператора имеет вид:

В цикле While оператор выполняется если условие

верно (True), если условие ложно (False), то цикл

заканчивается, т. е. цикл While повторяется, пока

выполняется условие. Цикл While начинается

проверкой условия, поэтому, если начальное условие

ложно, то оператор не выполняется ни разу. Для

включения в тело цикла нескольких операторов

применяется составной оператор, через дополнительное

введение оператора Add Line, которых будет

объединять серию операторов, являющихся телом

цикла. Действия в цикле должны приводить к

изменению заданного условия, иначе получится

"бесконечный" цикл.

Конструкция оператора

В принципе, описанный ранее цикл for можно

заменить условным циклом(см. пример 13 а)).

Пример 15. Применение условного циклического

оператора. Сумма цифр от m до n.

while

sum m n( ) S 0

i m

S S i

i i 1

i nwhile

S

sum 10 20( ) 165

да

серия

нет

ЛУ

нет

да

i ≤ n

S := S + i

i := i + 1

вывод S

Конец

i := m

s := 0.0

ввод n, m

Начало

Page 18: Программирование в Mathcadreshimna5.ru/tasks/task_19566.pdf · 2014-11-15 · то есть, может быть применен для решения класса

18

Рассмотрим использование оператора While в задаче определения наибольшего

общего кратного двух чисел. По алгоритму Евклида числа сравниваются друг с другом и

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

Пример 16. Функция для определения НОД двух натуральных чисел (проверки на

правильность ввода данных в данном модуле нет)

Пример 17. Функция для определения НОД множества натуральных чисел, используя

функцию из прошлого примера.

Пример 18. Функция для определения НОД двух натуральных чисел (с проверкой на

правильность ввода данных)

NOD a b( )

a a b a bif

b b a otherwise

a bwhile

a

NOD 72 36( ) 36

ORIGIN 1

x

21

14

49

35

R V( ) a V1

a NOD a Vi

i 1 rows V( )for

a

R x( ) 7

NOD a b( ) m a 0( ) b 0( )

n a 0( ) b 0( )

"oshibka vvoda"return n m( )if

areturn a 0( ) b 0( )if

breturn a 0( ) b 0( )if otherwise

otherwise

a a b a bif

b b a otherwise

a bwhile

areturn

NOD 0 0( ) "oshibka vvoda" NOD 0 4( ) "oshibka vvoda"

NOD 8 40( ) 8 NOD 8 0( ) 8

NOD 24 36( ) 12 NOD 0 9( ) 9

NOD 4 5( ) "oshibka vvoda"

Page 19: Программирование в Mathcadreshimna5.ru/tasks/task_19566.pdf · 2014-11-15 · то есть, может быть применен для решения класса

19

Пример 19. Функция для определения НОК двух натуральных чисел

Пример 20. Найти сумму всех цифр числа

Оператор прерывания

Иногда бывает необходимо завершить цикл досрочно. Для этого предназначен

оператор break.

Пример 21. Найти индекс первого нулевого элемента в одномерном массиве. Понятно,

что если такой элемент найден, то нет смысла проверять массив до конца. Посредством

оператора прерывания управление в этом случае передается на конец цикла.

NOK a b( ) m a b

a a b a bif

b b a otherwise

a bwhile

mm

a

m

NOK 24 36( ) 72

SUMM a( ) S 0

S S mod a 10( )

aa mod a 10( )( )

10

a 0while

S

n 1234567

SUMM n( ) 28

ORIGIN 1

indexNull a( ) k 0

k i

break

ai 0if

i 1 rows a( )for

k

f

1

1

2

0

5

h

1

2

3

indexNull f( ) 4 indexNullh( ) 0

Page 20: Программирование в Mathcadreshimna5.ru/tasks/task_19566.pdf · 2014-11-15 · то есть, может быть применен для решения класса

20

Оператор продолжения

Оператор continue – это также оператор прерывания, но в отличие от break,

прерывающего цикл, он останавливает выполнение только текущей итерации.

Пример 22. Вычисление суммы ненулевых элементов в одномерном массиве оператором

continue

Оператор прерывания программного модуля

Оператор return прерывает выполнение программного модуля в любой точке и

возвращает значение выражения или переменной либо текстовое сообщение, стоящее

следом за ним.

Пример 23. Функция определяет, является ли вектор единичным. При наличии хотя бы

одного элемента вектора, отличного от единицы, программный модуль прерывается.

Оператор обработки ошибок

Если при составлении программного модуля предполагается, что какая-либо

команда может вызвать ошибку (например, деление на ноль), то можно воспользоваться

оператором on error для перехвата этой ошибки.

Оператор перехвата ошибки имеет следующую конструкцию:

выражение1 on error выражение2

ORIGIN 1

g

1

1

1

0

0

2

6

0

f

1

1

2

0

5

sumNulla( ) S 0

continue ai 0if

S S ai

i 1 rows a( )for

S

sumNullf( ) 9 sumNullg( ) 11

ORIGIN 1

a

1

1

1

1

1

1

b

1

1

1

1

0

1

E V( )

"NO"return Vi 1if

i 1 rows V( )for

"YES"

E a( ) "YES" E b( ) "NO"

Page 21: Программирование в Mathcadreshimna5.ru/tasks/task_19566.pdf · 2014-11-15 · то есть, может быть применен для решения класса

21

где выражение2 – действие, которое должно выполниться в данной строке программного

модуля, но если при этом произойдет ошибка, то вместо него будет выполнено

выражение1.

Пример 24. Использование оператора обработки ошибок

Вложенные циклы типа for

Вложенные циклы типа for особенно часто используются при обработке матриц

(двумерных массивов, прямоугольных таблиц) и векторов (одномерных массивов,

линейных таблиц).

Схема вложенных циклов

типа для

Блок схема

f x( ) y x

"divide by zero"1

y2

1

on error

f 1( ) "divide by zero"f 2( ) 0.333 f 1( ) "divide by zero"

j A2 B2for

i A1 B1forJ ∊ А2 ,. В2

тело

внутреннего

цикла

I ∊ А1 .. В1

главной

и

побочной

диагонал

и

тело

внешнего

цикла

Page 22: Программирование в Mathcadreshimna5.ru/tasks/task_19566.pdf · 2014-11-15 · то есть, может быть применен для решения класса

22

Пример 25. Для заданной матрицы А размерности N M найдите сумму всех её

элементов

Mathcad-программа: фрагмент алгоритма суммирования

элементов массива:

Примечание: rows – количество строк в матрице, cols – количество столбцов в матрице.

rows(A) = 3 cols(A) = 3

Пример 26. Для заданной матрицы А размерности N N найдите сумму элементов

главной диагонали

Mathcad-программа: фрагмент алгоритма суммирования

диагональных элементов массива:

ORIGIN 1

sumMASa( ) S 0

S S ai j

j 1 cols a( )for

i 1 rows a( )for

A

1

4

1

1

8

0

2

2

7

sumMASA( ) 26

ORIGIN 1

diagMAS a( )

S 0

S S ai i

i 1 rows a( )for

rows a( ) cols a( )if

"oshibra vvoda" otherwise

A

1

4

1

1

8

0

2

2

7

B12

8

1

7

5

1

diagMAS A( ) 16

diagMAS B( ) "oshibra vvoda"

S := 0

I ∊ 1 .. N

J ∊ 1 .. M

S := S + AI, J

S

S := 0

I ∊ 1.. N

S := S + A I, I

S

Page 23: Программирование в Mathcadreshimna5.ru/tasks/task_19566.pdf · 2014-11-15 · то есть, может быть применен для решения класса

23

Пример 27. Для заданной матрицы А размерности N M найдите сумму элементов строк

Mathcad-программа: фрагмент алгоритма суммирования

элементов строк матрицы:

Пример 28. Для заданной матрицы А размерности N N найдите значения

наибольшего и наименьшего из элементов главной диагонали.

ORIGIN 1

ORIGIN 1

sumMAS_stra( )

bi 0

bi bi ai j

j 1 cols a( )for

i 1 rows a( )for

b

A

1

4

1

1

8

0

2

2

7

sumMAS_strA( )

4

14

8

primer a( ) n rows a( )

di ai i

i 1 nfor

maximum max d( )

minimum min d( )

cols a( ) nif

"error of enter" otherwise

maximum minimum( )

a

2

1

2

1

1

4

2

2

1

1

3

1

1

1

1

5

primer a( ) 5 2( )

I ∊ 1.. N

J ∊1.. M

BI := BI + AI, J

B

BI := 0

Page 24: Программирование в Mathcadreshimna5.ru/tasks/task_19566.pdf · 2014-11-15 · то есть, может быть применен для решения класса

24

Пример 29. Для заданной матрицы А размерности N M найдите количество четных

элементов матрицы.

Пример 30 . Найти сумму положительных элементов в массиве.

Этапы решения задачи:

1. Алгоритм решения довольно прост - в цикле будем "пробегать" массив, сравнивая его

ячейки с 0 и суммировать, если они >0.

2. Составим блок-схему программы

3. Mathcad-программа

Пусть m – вектор-столбец элементов

n – количество элементов

chetMAS a( ) S 0

S S 1 mod ai j 2 0 if

j 1 cols a( )for

i 1 rows a( )for

S

A

1

4

1

1

8

0

2

2

7

chetMASA( ) 5

ORIGIN 1

Sum m n( ) S 0

S S mi mi 0if

i 1 nfor

S

v

2

3

0

1

1

9

Sum v 6( ) 4

Начало

S := 0

i = 1 ,. n

mi > 0

S := S + mi

конец

нет да

вывод S

Page 25: Программирование в Mathcadreshimna5.ru/tasks/task_19566.pdf · 2014-11-15 · то есть, может быть применен для решения класса

25

ПРИМЕРЫ ПРОГРАММИРОВАНИЯ

Численное интегрирование

1. Постановка задачи.

Пусть требуется вычислить определенный интеграл

b

a

dxxf )( , (1)

где f(x) – непрерывная на отрезке [a; b] функция.

С геометрической точки зрения интеграл (1) при f(x) > 0 равен площади

криволинейной трапеции, ограниченной кривой y = f(x), осью Ox и прямыми x = a, x = b

(рис. 1). Другими словами, b

a

dxxf )( равен площади заштрихованной фигуры на рис. 4.

Рис. 4. Геометрический смысл определенного интеграла.

Вычислить определенный интеграл (1) можно с помощью аналитической формулы

Ньютона-Лейбница (2):

)()()( aFbFdxxf

b

a

, (2)

где F(x) – первообразная функция для заданной функции f(x).

Однако во многих случаях не удается найти никакой аналитической формулы в

виду невозможности определения F(x).

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

Основной принцип построения всех приближенных формул численного

интегрирования состоит в том, что интервал интегрирования разбивается на множество

меньших отрезков, внутри которых подынтегральная кривая y = f(x) заменяется с

некоторой степенью точности более простыми функциями, интегралы от которых можно

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

криволинейной трапеции приближенно заменяется суммой площадей элементарных

геометрических фигур.

О

y = f(x)

b a

y

x

Page 26: Программирование в Mathcadreshimna5.ru/tasks/task_19566.pdf · 2014-11-15 · то есть, может быть применен для решения класса

26

2. Метод прямоугольников.

Как говорилось выше, вычисление интеграла dxxfS

b

a

)( равносильно

вычислению площади некоторой фигуры – криволинейной трапеции с параллельными

«основаниями» x = a, x = b и «боковыми сторонами» y = 0, y = f(x) (рис. 4).

Разобьем интервал интегрирования на n равных частей, каждая длиной n

abh

.

Приближенное значение интеграла получается в виде суммы площадей n

прямоугольников, высота которых равна значению f(x) на левом краю каждого

подынтервала (рис. 5).

110110)( nn

b

a

yyyhyhyhyhdxxfS

То есть формула численного интегрирования имеет вид:

1

0

)(

n

i

i

b

a

yhdxxfS (4)

и называется формулой «левых» прямоугольников.

Рис. 5. Геометрическая интерпретация метода «левых» прямоугольников.

Если в качестве приближенного значения площади для каждого подынтервала

принять площадь прямоугольника, высота которого равна значению f(x) на правом краю

подынтервала (рис. 6), то формула численного интегрирования имеет вид (5):

n

i

i

b

a

yhdxxfS

1

)( (5)

и называется формулой «правых» прямоугольников.

O x

y y = f(x)

a=x0 x1 x2 b=xn x3 xn-1 …

h h h h h

y0 = f(x0)

y1 = f(x1)

y2 = f(x2)

yn-1 = f(xn-1)

Page 27: Программирование в Mathcadreshimna5.ru/tasks/task_19566.pdf · 2014-11-15 · то есть, может быть применен для решения класса

27

Рис. 6. Геометрическая интерпретация метода «правых» прямоугольников. Существует третья модификация метода прямоугольников – метод «средних»

прямоугольников. В этом случае в качестве приближенного значения площади для

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

значению f(x) в средней точке подинтервала (рис. 7).

Рис. 7. Геометрическая интерпретация метода «средних» прямоугольников.

Тогда формула численного интегрирования имеет вид (6):

n

i

ii

b

a

xxfhdxxfS

1

1

2)( (6)

Метод прямоугольников – это наиболее простой и вместе с тем наиболее грубый

метод приближенного интегрирования. Очевидно, что чем больше будет число n отрезков

разбиения, тем более точный результат дадут формулы (4)-(6). Однако увеличение числа

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

интерес представляют формулы, дающие более точные результаты при том же числе

точек разбиения. Заметно меньшую погрешность дает другой метод – метод трапеций.

O x

y y = f(x)

a=x0 x1 x2 b=xn x3 xn-1 …

h h h h h

y1 = f(x1)

y2 = f(x2)

yn = f(xn)

O x

y y = f(x)

a=x0 x1 x2 b=xn x3 xn-1 …

h h h h h

2

01 xxf

2

12 xxf

2

1nn xxf

Page 28: Программирование в Mathcadreshimna5.ru/tasks/task_19566.pdf · 2014-11-15 · то есть, может быть применен для решения класса

28

3. Метод трапеций.

В этом методе отрезок [a; b] так же разбивается на n равных частей. На каждом

отрезке [xi; xi+1] кривая y = f(x) заменяется прямой, проходящей через две известные точки

с координатами )(; ii xfx и )(; 11 ii xfx , где ni ,...,1,0 и строится прямоугольная трапеция с

высотой n

abh

(рис. 8).

Рис. 8. Геометрическая интерпретация метода трапеций.

В итоге искомая площадь криволинейной трапеции приближенно заменяется

суммой площадей элементарных геометрических трапеций. (Площадь трапеции с высотой

h и основаниями a, b вычисляется по формуле: 2

bahS

). Из геометрических

соображений понятно, что площадь такой фигуры будет, вообще говоря, более точно

выражать площадь криволинейной трапеции, нежели площадь ступенчатой фигуры,

рассматриваемая в методе прямоугольников. Тогда

dxxfS

b

a

)(

2

)()(

2

)()(...

2

)()(

2

)()( 1122110 nnnn xfxfh

xfxfh

xfxfh

xfxfh

вынесем h за скобку, получим

2

)()(

2

)()(...

2

)()(

2

)()( 1122110 nnnn xfxfxfxfxfxfxfxfh

разобьем каждую дробь на две дроби

2

)(

2

)(

2

)(

2

)(...

2

)(

2

)(

2

)(

2

)( 1122110 nnnn xfxfxfxfxfxfxfxfh

приведем подобные слагаемые, получим

2

)()(...)()(

2

)(121

0 nn

xfxfxfxf

xfh .

Итак, dxxfS

b

a

)(

2

)()(...)()(

2

)(121

0 nn

xfxfxfxf

xfh .

Коротко полученную формулу можно записать в виде (7).

O x

y y = f(x)

a=x0 x1 x2 b=xn x3 xn-1 …

h h h h h

y0 = f(x0)

y1 = f(x1)

y2 = f(x2)

yn-1 = f(xn-1)

Page 29: Программирование в Mathcadreshimna5.ru/tasks/task_19566.pdf · 2014-11-15 · то есть, может быть применен для решения класса

29

dxxfS

b

a

)(

1

1

0 )(2

)(

2

)(n

i

in xf

xfxfh (7)

Заметим, что в данном методе получаем ступенчатую фигуру, составленную из

трапеций, которая «плотнее» прилегает к заданной криволинейной трапеции, нежели

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

4. Метод парабол (Симпсона).

Значительное повышение точности приближенных формул численного

интегрирования дает метод парабол (Симпсона). Идея метода исходит из того, что на

частичном промежутке дуга некоторой параболы в общем случае теснее прилегает кривой

y = f(x), чем хорда, соединяющая концы дуги этой кривой (метод трапеций). Поэтому

значения площадей соответствующих элементарных трапеций, ограниченных сверху

дугами парабол, являются более близкими к значениям площадей соответствующих

частичных криволинейных трапеций, ограниченных сверху дугой кривой y = f(x), чем

значения площадей соответствующих прямолинейных трапеций.

Рис. 9. Геометрическая интерпретация метода парабол.

Рассмотрим функцию y = f(x). Будем считать, что на отрезке [a; b] она

положительна и непрерывна. Найдем площадь криволинейной трапеции aABb (рис. 9).

Для этого разделим отрезок [a, b] точкой c = 2

ba пополам и в точке C(c, f(c))

проведем касательную к линии y = f(x). После этого разделим [a, b] точками p и q на три

равные части и проведем через них прямые x = p и x = q. Пусть P и Q – точки пересечения

этих прямых с касательной. Соединив A с P и B с Q, получим три прямолинейные

трапеции aAPp, pPQq, qQBb. Тогда площадь трапеции aABb можно приближенно

посчитать по следующей формуле

111222

hbBqQ

hqQpP

hpPaA

I

,

где 3

1ab

h

.

O x

y y = f(x)

a

A

p b c

B

q

P

C Q

h1 h1

Page 30: Программирование в Mathcadreshimna5.ru/tasks/task_19566.pdf · 2014-11-15 · то есть, может быть применен для решения класса

30

Откуда получаем

bBqQpPaAab

I

26

.

Заметим, что aA = f(a), bB = f(b), а pP + qQ = 2f(c) (как средняя линия трапеции), в

итоге получаем малую формулу Симпсона

)()(4)(6

bfcfafab

I

(8)

В данном случае дуга ACB заменяется параболой, проходящей через точки A, P, Q,

B.

Малая формула Симпсона дает интеграл с хорошей точностью, когда график

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

функция, малая формула Симпсона непригодна. Тогда, чтобы посчитать интеграл

заданной функции нужно разбить отрезок [a, b] на n частей и к каждому из отрезков

применить формулу (8).

Обязательным требованием, вытекающим из геометрического смысла метода

парабол, является то, что n должно быть четным. Пусть n

abh

, точки деления будут

х0=а, x1, x2, …xn-2, xn-1, xn=b, а y0, y1, …yn – соответствующие значения подынтегральной

функции на отрезке [a, b].

Тогда, применяя малую формулу Симпсона к каждой паре получившихся отрезков,

имеем

.)()(4)(6

...........................................................

;)()(4)(6

;)()(4)(6

122

2

43224

2

21002

1

nnnnn

n xfxfxfxx

I

xfxfxfxx

I

xfxfxfxx

I

Тогда 2

21 ...)( n

b

a

IIIdxxfS . (9)

Заметим, что во всех выражениях 2

21 ,, nI I I первый множитель равен 3

h:

.36

2

6

.........................

;36

2

6

;36

2

6

2

24

02

hhxx

hhxx

hhxx

nn

(10)

Сделав замену по формулам (10), вынося общий множитель 3

h за скобку, в (9) получаем:

2

21 ...)( n

b

a

IIIdxxfS

Page 31: Программирование в Mathcadreshimna5.ru/tasks/task_19566.pdf · 2014-11-15 · то есть, может быть применен для решения класса

31

)()(4)(...)()(4)()()(4)(3

12432210 nnn xfxfxfxfxfxfxfxfxfh

группируем слагаемые

)()(...)()(2)(...)()(4)(3

2421310 nnn xfxfxfxfxfxfxfxfh

.

Таким образом, получаем «большую» формулу Симпсона, которая имеет вид:

dxxf

b

a

)( )()(...)()(2)(...)()(4)(3

2421310 nnn xfxfxfxfxfxfxfxfh

(11)

Предлагаем для запоминания следующий вид формулы:

dxxf

b

a

)( четнечкр YYYh

243

(11’)

где Yкр = y0 + yn, Yнеч = y1 + y3 + … + yn-1, Yчет = y2 + y4 + … + yn-2, а n

abh

.

5. Реализация в Mathcad

Пример 31. Вычислить приближенное значение определенного интеграла

2.3

0

34 8 dxxx

с помощью

а. формулы трапеций;

б. формулы Симпсона,

разбивая отрезок интегрирования на 10 частей, на 20 частей. Все вычисления проводить с

округлением до третьего десятичного знака

Точное значение:

II

0

3.2

xx4

x3

8

d 13.431879991952648554 13.432

f x( ) x4

x3

8

0 0.8 1.6 2.4 3.22

4

6

8

10

f x( )

x

Page 32: Программирование в Mathcadreshimna5.ru/tasks/task_19566.pdf · 2014-11-15 · то есть, может быть применен для решения класса

32

Создадим программный модуль для табулирования функции, где a – начало интервала

интегрирования, b – конец интервала интегрирования, n – количество разбиений отрезка

интегрирования

разбивая отрезок интегрирования на 20 частей:

разбивая отрезок интегрирования на 10 частей:

По формуле трапеций:

tabul a b n ( ) x0 a

y0 f x0

hb a

n

xi xi 1 h

yi f xi

i 1 nfor

d augment x y ( )

tabul 0 3.2 20 ( )

0 1

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

0 2.828

0.16 2.828

0.32 2.824

0.48 2.818

0.64 2.812

0.8 2.81

0.96 2.822

1.12 2.858

1.28 2.93

1.44 3.052

1.6 3.234

1.76 3.485

1.92 3.809

2.08 4.209

2.24 4.684

2.4 5.23

2.56 5.846

2.72 6.528

2.88 7.274

3.04 8.082

3.2 8.949

tabul 0 3.2 10 ( )

0

0.32

0.64

0.96

1.28

1.6

1.92

2.24

2.56

2.88

3.2

2.828

2.824

2.812

2.822

2.93

3.234

3.809

4.684

5.846

7.274

8.949

trap a b n ( ) d tabul a b n ( )

hb a

n

I 0

I Ih

2di 1 di 1 1

i 1 nfor

I

Page 33: Программирование в Mathcadreshimna5.ru/tasks/task_19566.pdf · 2014-11-15 · то есть, может быть применен для решения класса

33

Точность вычислений оцениваем с помощью разности:

По формуле Симпсона

Точность вычислений оцениваем с помощью разности:

Вывод: при одинаковом числе точек разбиения формула Симпсона дает более точный

результат.

6. Общая практическая часть

Вычислить приближенное значение определенного интеграла

2.3

0

34 8 dxxx с помощью

формул «левых» прямоугольников, «правых» прямоугольников и «средних»

прямоугольников, разбивая отрезок интегрирования на 10 частей, на 20 частей. Все

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

проанализировать.

trap 0 3.2 20 ( ) 13.444trap 0 3.2 10 ( ) 13.4797

1 II trap 0 3.2 10 ( ) 0.048

2 II trap 0 3.2 20 ( ) 0.012

3 trap 0 3.2 10 ( ) trap 0 3.2 20 ( ) 0.036

simpson a b n ( ) d tabul a b n ( )

hb a

n

I d0 1 dn 1

I I 2 di 1 mod i 2 ( ) 0( )if

I I 4 di 1 otherwise

i 1 n 1( )for

I Ih

3

I

simpson 0 3.2 10 ( ) 13.43192 simpson 0 3.2 20 ( ) 13.43188

1 II simpson 0 3.2 10 ( ) 0.00004

2 II simpson 0 3.2 20 ( ) 0.000003

3 simpson 0 3.2 10 ( ) simpson 0 3.2 20 ( ) 0.000038

Page 34: Программирование в Mathcadreshimna5.ru/tasks/task_19566.pdf · 2014-11-15 · то есть, может быть применен для решения класса

34

ИНДИВИДУАЛЬНЫЕ ЗАДАНИЯ

Задачи линейной структуры

1. Составьте алгоритм решения задачи линейной структуры и программно его

реализуйте

1.1.В треугольнике известны три стороны a, b и c. Найти (в градусах) углы этого

треугольника, используя формулы:

bc

acbA

2cos

222 ;

a

AbB

sinsin ; С = 180

- ( А + В )

1.2.В треугольнике известны две стороны a, b и угол C (в градусах) между ними. Найти

сторону c и угол A (в радианах), используя формулы:

c

CaA

sinsin ; с

2 = a

2 + b

2 - 2ab cos C.

1.3.В треугольнике известны две стороны a, b и угол C (в градусах) между ними. Найти

сторону c и угол B (в градусах), используя формулы:

c

CbB

sinsin ; с

2 = a

2 + b

2 - 2ab cos C.

1.4.В треугольнике известны две стороны a, b и угол C (в градусах) между ними. Найти

площадь треугольника и сторону с, используя формулы:

2

sinCabS ; с

2 = a

2 + b

2 - 2ab cos C.

1.5.В треугольнике известны три стороны a, b и c; найти радиус описанной окружности R

и угол A (в градусах), используя формулы:

R

abcS

4 ;

app

cpbpAtg

2, где p = (a + b + c) / 2.

1.6.Треугольник задан величинами своих углов (в градусах) и радиусом описанной

окружности R. Вычислите стороны треугольника и его площадь, используя формулы :

Rcba

2sinsinsin

,

2

sin

baS

1.7.В правильной треугольной пирамиде известны сторона основания a и угол A (в

градусах) наклона боковой грани к плоскости основания. Найти объем, площадь

основания и высоту пирамиды, используя формулы:

HSV осн 3

1, где

4

32aSосн , Atg

aH

6

3 .

1.8.В правильной треугольной пирамиде известны сторона основания a и угол A (в

градусах) наклона боковой грани к плоскости основания. Найти площади боковой и

полной поверхности пирамиды, используя формулы:

ASSSS оснбокоснполн

cos

11 , где

4

32aSосн .

1.9.В усеченном конусе известны радиусы оснований R и r и угол A (в градусах) наклона

образующей к поверхности большего основания. Найти высоту и объем усеченного

конуса, используя формулы:

22

3

1rRrRHV , где AtgrRH .

1.10. В усеченном конусе известны радиусы оснований R и r и угол A (в градусах)

наклона образующей к поверхности большего основания. Найти апофему, площади

Page 35: Программирование в Mathcadreshimna5.ru/tasks/task_19566.pdf · 2014-11-15 · то есть, может быть применен для решения класса

35

боковой и полной поверхности усеченного конуса, используя формулы: 2

22

1 , rSRS - площади оснований.

21 SSSS бокполн , где RrlSбок , апофема A

rRl

cos

,

1.11. В правильной усеченной четырехугольной пирамиде стороны нижнего и верхнего

оснований равны a и b, а высота Н. Найти апофему, объем и площадь боковой

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

2221 4

2baHba

PPlSбок

, где 21, PP - периметры оснований, апофема

2242

1baНl , 2211

3

1SSSSHV , 21, SS - площади оснований.

1.12. В правильной четырехугольной пирамиде сторона основания равна a, а боковое

ребро наклонено к плоскости основания под углом A (в градусах). Найти высоту,

объем пирамиды и площадь сечения, проходящего через вершину пирамиды и

диагональ основания d, используя формулы:

HSV осн 3

1, dHSсеч

2

1, где Atg

aH

2

2 , 2ad .

1.13. В правильной четырехугольной пирамиде сторона основания равна a, а боковое

ребро наклонено к плоскости основания под углом A (в градусах). Найти площади

боковой и полной поверхности пирамиды, используя формулы: бокоснполн SSS ,

где 12 22 AtgaSбок

1.14. Прямоугольный треугольник с катетами a и b вращается около гипотенузы. Найти

гипотенузу c, объем и площадь полной поверхности полученного тела вращения,

используя формулы:

c

bacRV

222

33

, baRSполн , где

с

abR .

1.15. Длина образующей конуса равна l , а длина окружности основания – с . Найдите

высоту, объем и площадь полной поверхности конуса, используя формулы:

HRV 2

3

1 , lRRSполн , где Rc 2 ,

2

4 222 clH

1.16. В правильной усеченной четырехугольной пирамиде стороны нижнего и верхнего

оснований равны a и b, а боковое ребро наклонено к плоскости нижнего основания

под углом A (в градусах). Найти высоту, объем и площадь полной поверхности

усеченной пирамиды, используя формулы:

22113

1SSSSHV , 21 SSSS бокполн ,

где

Atgba

H2

,

A

SSSбок

cos

21 , 22

21 , bSaS - площади оснований .

1.17. Образующая конуса l составляет с плоскостью основания угол A (в градусах).

Найдите высоту и объем конуса, радиус и длину окружности основания , используя

формулы:

HRV 2

3

1 , Rc 2 , где AlR cos , AlH sin

1.18. Вычислить угол (в градусах) между прямой p

zz

n

yy

m

xx 111

и плоскостью

0 DCzByAx , найти расстояние d от точки 111 ,, zyxM до данной плоскости,

используя формулы:

Page 36: Программирование в Mathcadreshimna5.ru/tasks/task_19566.pdf · 2014-11-15 · то есть, может быть применен для решения класса

36

222222arcsin

pnmCBA

CpBnAm,

222

111

CBA

DCzByAxd

.

1.19. Найти центр и радиус окружности R, проходящей через три заданные точки на

плоскости 111 , yxM , 222 , yxM , 333 , yxM , используя формулы:

R

abcS

4 , где a, b и c стороны треугольника. Расстояние между двумя точками

2122

12 yyxxd . Площадь треугольника по формуле Герона:

cpbpappS , где p – полупериметр треугольника.

1.20. По координатам трёх вершин некоторого треугольника 111 , yxM , 222 , yxM ,

333 , yxM найдите его площадь и угол 321 MMM (в градусах),

2/sin 3213221 MMMMMMMS .

Задачи на условную и циклическую структуру

Составить схему алгоритма решения задачи. Реализовать программно.

варианта Из заданной матрицы А[ N, M ] создать линейный массив из:

1 максимальных элементов каждой строки

2 суммы положительных элементов каждого столбца

3 минимальных элементов каждой строки

4 произведений модулей отрицательных элементов каждой строки

5 количества нулевых элементов каждой строки

6 количества четных чисел каждой строки

7 минимальных элементов каждого столбца

8 произведений положительных элементов каждой строки

9 максимальных элементов каждого столбца

10 количества нечетных чисел каждого столбца

11 количества отрицательных элементов каждого столбца

12 индексов первых минимальных элементов каждого столбца

13 количества положительных элементов каждого столбца

14 количества четных чисел каждого столбца

15 количества чисел кратных 3 каждой строки

16 суммы положительных элементов каждой строки

17 суммы нечетных элементов каждого столбца

18 индексов первых максимальных элементов каждой строки

19 количества чисел кратных 5 каждого столбца

20 суммы нечетных чисел каждой строки