Презентация на тему: Примеры разработки программ-функций в системе MATHCAD

Примеры разработки программ-функций в системе MATHCAD
Пример: задача 1.4.2.30
Блок-схема
Найти вещественные корни квадратного уравнения ax 2 + bx + c =0
Блок-схема алгоритма нахождения вещественных корней квадратного уравнения
Программа-функция вычисления вещественных корней квадратного уравнения
Пример решения задачи со сложным условием продолжения цикла
Состав данных
Блок-схема алгоритма
Программа-функция
Решение задачи методом флажка
Блок-схема алгоритма c использованием метода флажка
Программа-функция (метод флажка)
Решение уравнения методом деления отрезка пополам
Программа-функция
Встроенная функция root
Установка значений встроенных переменных
Примеры решения уравнения с помощью root
Примеры программ с массивами
Примеры разработки программ-функций в системе MATHCAD
Код программы-функции
Примеры программ с массивами
Блок-схема алгоритма
Встроенные функции, определяющие размеры массивов
Улучшенный код
Еще более совершенный код
Цикл for «для каждого элемента массива»
Выделение подпрограмм в процессе решения задачи
1 шаг решения: выбираем, какую подпрограмму (в MATHCAD программу-функцию ) надо разработать: подпрограмма должна вызываться несколько раз с разными данными.
3 шаг. Состав данных функции upor_stolb
4 шаг. Блок-схема алгоритма функции
5 шаг. Код функции upor_stolb
Следующая лекция: локальные и глобальные переменные
1/33
Средняя оценка: 4.8/5 (всего оценок: 38)
Код скопирован в буфер обмена
Скачать (273 Кб)
1

Первый слайд презентации: Примеры разработки программ-функций в системе MATHCAD

Лекция 7

Изображение слайда
2

Слайд 2: Пример: задача 1.4.2.30

Условие Найти суммарную площадь и сумму периметров N правильных шестиугольников, длины сторон которых образуют последовательность: Имя Смысл Тип Структура Исходные данные a Длина стороны 1-го шестиугольника Веществ. Простая переменная N Количество шестиугольников Целый Простая переменная Выходные данные P Сумма периметров шестиугольников Веществ. Простая переменная S Сумма площадей шестиугольников Веществ. Простая переменная Промежуточные данные i Счетчик шестиугольников Целый Простая переменная b Длина стороны текущего шестиугольника Веществ. Простая переменная Состав данных

Изображение слайда
3

Слайд 3: Блок-схема

P=0; S=0 i :=1 передача a,N да i  N P = P + 6b S=S+(*) i = i +1 передача S,P Периметр шестиугольника: p=6b; площадь шестиугольника: (*) Определение функции 6  b Примеры вызова функции 2

Изображение слайда
4

Слайд 4: Найти вещественные корни квадратного уравнения ax 2 + bx + c =0

Имя Смысл Тип Структура Исходные данные a b коэффициенты уравнения Веществ. Простая переменная c Выходные данные res Корни уравнения Сообщение об отсутствии вещ. корней Веществ. строковый Одномерный массив из двух элементов Простая переменная Промежуточные данные d Дискриминант уравнения d = b 2 -4 ac Целый Простая переменная Состав данных альтернатива

Изображение слайда
5

Слайд 5: Блок-схема алгоритма нахождения вещественных корней квадратного уравнения

да передача a,b,c d=b 2 -4ac d>0 res= ″ нет вещ. корней ″ d=0 передача res да

Изображение слайда
6

Слайд 6: Программа-функция вычисления вещественных корней квадратного уравнения

Примеры вызовов программы-функции kv_ur1 Обратите внимание: и тип, и структура переменной res выбирается динамически, в зависимости от значения d

Изображение слайда
7

Слайд 7: Пример решения задачи со сложным условием продолжения цикла

Условие А - начальная стоимость оборудования. В первый год эксплуатации стоимость оборудования снижается на В руб., а в каждый следующий год снижение стоимости уменьшается на р  % (относительно предыдущего года). Определить, через сколько лет стоимость оборудования станет меньше A / 2. Рассматривать срок не более N лет.

Изображение слайда
8

Слайд 8: Состав данных

Изображение слайда
9

Слайд 9: Блок-схема алгоритма

да At = A; Bt=B t =1 передача A,B,p,N At≥A/2& t  N At = At - Bt Bt=Bt-Bt*p/100 t = t +1 1 передача res At<A/2 res=t -1 да res=“ срок истек ” 1

Изображение слайда
10

Слайд 10: Программа-функция

Вызов функции: z1_3_4(1000,100,1,10)=5 z1_3_4(1000,100,1,10)=“ срок прошел ” y:=z1_3_4(1000,100,20,10) y=3

Изображение слайда
11

Слайд 11: Решение задачи методом флажка

Промежуточная переменная:

Изображение слайда
12

Слайд 12: Блок-схема алгоритма c использованием метода флажка

передача res да да res=“ срок истек ” f=0 At = A; Bt=B t =1 ; f=1 передача A,B,p,N f At = At - Bt Bt=Bt-Bt*p/100 t = t +1 At<A/2 res=t -1 f=0 t>N да

Изображение слайда
13

Слайд 13: Программа-функция (метод флажка)

z1_3_4 _ v2(A,B,p,N):= At  A Bt  B f  1 t  1 while f if At<A/2 res  t-1 f  0 otherwise if t>N res  ″ срок прошел ″ f  0 otherwise At  At - Bt Bt  Bt-0.01  p  Bt t  t+1 res Программа-функция (метод флажка)

Изображение слайда
14

Слайд 14: Решение уравнения методом деления отрезка пополам

передача a,b,  x: =(A+B)/2 F(x)*F(B)  0 A : =x B : =x + - + B-A >  передача x x=(A+B)/2 Как в системе Mathcad определить функцию, параметром которой является функция? нет F

Изображение слайда
15

Слайд 15: Программа-функция

F(x):=x 2 -0.25 Функция Root1 вызывает только функцию F! Нет возможности подставить другую функцию! Вызов программы-функции: Root1(0.1,1,10-3)=0.5

Изображение слайда
16

Слайд 16: Встроенная функция root

root ( Выражени е, Имя_переменной ) – возвращает значение переменной, при котором выражение равно 0, с точностью (погрешностью), задаваемой системной переменной TOL. Функция root решает уравнение: Выражение =0 Например, F(x)=0 Или x 3 -6x 2 +21x-52=0 До вызова функции root переменной x должно быть присвоено начальное значение (начальное приближение корня). скаляры

Изображение слайда
17

Слайд 17: Установка значений встроенных переменных

Tools / Worksheet Options / Built-in Variables (Сервис / Опции документа / Встроенные переменные)

Изображение слайда
18

Слайд 18: Примеры решения уравнения с помощью root

1 2 3 4 5 Пример 1 F(x):=x 3 -6  x 2 +21  x-52 x:=0 x1:=root(F(x),x) x1=4 Пример 2 G(a,x):=root(exp(x) -a x 2, x) a:=1..5 x 0 :=0 x a :=G(a, x a-1 ) a= root может вычислять как вещественные, так и комплексные корни x= 0 -0.704 -0.54 -0.459 -0.408 -0.371

Изображение слайда
19

Слайд 19: Примеры программ с массивами

Дан массив а из n элементов. Найти максимальное значение элементов массива. Состав данных

Изображение слайда
20

Слайд 20

да a i >m да i=i+ 1 передача a,n m=a 0 i= 1 передача m m=a i i<n Блок-схема алгоритма Системная (встроенная) переменная ORIGIN=0

Изображение слайда
21

Слайд 21: Код программы-функции

Вызов программы-функции С помощью панели «Матрицы»

Изображение слайда
22

Слайд 22: Примеры программ с массивами

Дана матрица а из n строк и m столбцов. Неотрицательные элементы матрицы заменить на 0, а отрицательные – на 1. Состав данных

Изображение слайда
23

Слайд 23: Блок-схема алгоритма

zamena(n,m,a):= for i  0..n-1 for j  0..m-1 a i,j  0 if a i,j  0 a i,j  1 otherwise a Передача n,m,a i=0 i ≤n-1 j=0 j ≤m-1 a i,j 0 a i,j =0 j=j+1 a i,j =1 i=i+1 Передача a да да да T:=zamena(3,3.D) Программа-функция и ее вызов ORIGIN=0

Изображение слайда
24

Слайд 24: Встроенные функции, определяющие размеры массивов

rows( A ) – возвращает число строк в матрице  A.   Если А   – скаляр, возвращается 0. cols( A ) – возвращает число столбцов в матрице A.  Если A  – скаляр, возвращается 0. length( v ) – возвращает число элементов вектора  v. last( v ) – возвращает индекс последнего элемента в векторе  v.

Изображение слайда
25

Слайд 25: Улучшенный код

1. Нет зависимости от значения ORIGIN. 2. Нет необходимости задавать размеры матрицы

Изображение слайда
26

Слайд 26: Еще более совершенный код

Fun3(a):= n  rows(a) m  cols(a) i1  ORIGIN n1  n+ORIGIN-1 j1  ORIGIN m1  m+ORIGIN-1 for i  i1..n1 for j  j1..m1 a i,j  0 if a i,j  0 a i,j  1 otherwise a 1. Нет зависимости от значения ORIGIN (может быть ORIGIN 0, ORIGIN 1). 2. Еще короче.

Изображение слайда
27

Слайд 27: Цикл for «для каждого элемента массива»

Sum(a):= s  0 for v  a s  s+v s Sum(x)=10 Sum(A)=6 НО: изменение v не приводит к изменению элемента матрицы! Одна функция и для вектора, и для матрицы

Изображение слайда
28

Слайд 28: Выделение подпрограмм в процессе решения задачи

Условие Проверить, упорядочены ли по возрастанию элементы третьего столбца матрицы A ( 4 ×6)и элементы пятого столбца матрицы B(5 × 5) Решали эту задачу на языке MATLAB

Изображение слайда
29

Слайд 29: 1 шаг решения: выбираем, какую подпрограмму (в MATHCAD программу-функцию ) надо разработать: подпрограмма должна вызываться несколько раз с разными данными

Для нашей задачи: функция определяет, упорядочены ли по возрастанию q- го столбца произвольной матрицы X. Вход функции: матрица X, номер столбца q. Выход функции : F – признак упорядоченности элементов q- го столбца: 2 шаг - Пишем заголовок функции: upor_stolb(X,q):=

Изображение слайда
30

Слайд 30: 3 шаг. Состав данных функции upor stolb

Имя Смысл Тип Структура Входные данные (передаваемые из вызывающего кода в функцию) Х Заданная матрица вещественный двумерный массив q Номер столбца целый простая переменная Выходные данные (передаваемые из функции вызывающий код) F Признак упорядоченности столбца целый (логический) простая переменная Промежуточные данные n Число строк матрицы целый простая переменная m Число столбцов матрицы целый простая переменная p Счетчик строк матрицы целый простая переменная

Изображение слайда
31

Слайд 31: 4 шаг. Блок-схема алгоритма функции

p q Передача Х, q n=rows(X) F=1 p=0 p ≤ n-2 && F X(p,q) ≥X(p+1,q) F=0 Передача F p=p+1 нет да Что исправили по сравнению с матлабом?

Изображение слайда
32

Слайд 32: 5 шаг. Код функции upor stolb

Upor_stolb(X,q):= n  rows(X) F  1 p  0 while (p≤n-2) ^ F F  0 if X p,q >X p+1,q p  p+1 otherwise F Вызов функции – самостоятельно!

Изображение слайда
33

Последний слайд презентации: Примеры разработки программ-функций в системе MATHCAD: Следующая лекция: локальные и глобальные переменные

Изображение слайда