Файл: Петрозаводский государственный университет.pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 03.12.2023

Просмотров: 187

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

84
Урок 5. Понятие индексированной переменной
5.5.
Матричные и векторные функции
Обозначение
функции
Назначение
rows(A)
Число строк матрицы cols(A)
Число столбцов матрицы max(A)
Максимальный элемент массива min(A)
Минимальный элемент массива tr(A)
След матрицы (сумма элементов, стоящих на главной диагонали) length(x)
Количество элементов в векторе last(x)
Номер последнего элемента вектора augment(A,B)
Создание массива, полученного добавлением к массиву A справа массива B (―склеивание‖ массивов с одинаковым количеством строк). Список аргументов может содержать и более двух массивов identity(n)
Создание единичной матрицы заданной размерности diag(x)
Создание матрицы, диагональные элементы которой совпадают с элементами указанного вектора, а остальные – равны 0 mean(A)
Среднее значение элементов массива sort(x)
Упорядочивание (сортировка) элементов вектора по возрастанию csort(A,n)
Сортировка матрицы A по элементам n-го столбца (перестановка строк при упорядочении элементов указанного столбца в возрас- тающем порядке) rsort(A,n)
Сортировка матрицы A по элементам n-й строки (перестановка столбцов при упорядочении элементов указанной строки в возрас- тающем порядке) reverse(A)
Перестановка строк массива A в обратном порядке, так что результа- том обращения к функциям reverse(sort(x)) будет вектор, элементы которого отсортированы в убывающем порядке polyroots(v)
Поиск корней полинома с коэффициентами, заданными вектором- столбцом v. Коэффициенты перечисляются в направлении увеличе- ния степени неизвестной, начиная с нулевой
Пример 5.19.
Найти наибольшее значение x i
+y i элементов массивов x
1
, x
2
,…,x
N
и y
1
, y
2
,…, y
N
Решение:
ORIGIN 1

N
6

i
1
N


x i
12 23 3

23 4
7

y i
23

10 5
12 8
8


z i
x i
y i


max z
( )
35

Пример 5.20.
Постройте вектор B, каждый элемент которого равен максимальному эле- менту соответствующей строки матрицы A.

Урок 5. Понятие индексированной переменной
85
Решение:
A
2 2
4 4

5

0 12 5
4 7

6 12











N
rows A
( )

i
1
N


B
i max A
T
 
i
 





B
T
4 2 12 12
(
)

1   ...   5   6   7   8   9   10   11   12   ...   15

Пример 5.21.
Вектора A, B и С содержат оценки N студентов группы по трем экзамена- ционным предметам так, что соответствующие элементы каждого вектора – это оценки одного и того же студента. Требуется определить количество «отличников» (все оценки 5) и “хорошистов” (оценки 4 или 5, но не все 5). Построить сравнительную диаграмму.
Решение:
ORIGIN 1

Количес тво с тудентов: N
10

i
1
N


Оценки по предметам:
Предмет А Предмет В Предмет С
A
i
4 5
3 2
5 4
4 3
4 4

B
i
5 4
4 3
5 4
4 3
4 4

C
i
4 5
3 3
5 4
4 4
5 4

Sess augmentA B

C

(
)

Количес тво "отличников":
Kol
1
i min Sess
T


i
 




5






Количес тво "хорошис тов":
Kol
2
i min Sess
T


i
 




4






k
1 2


0 1
2 3
0 5
Kol k
k
Пример 5.22.
В некоторых видах спортивных соревнований выступление спортсмена не- зависимо оценивается несколькими судьями, затем из всей совокупности оценок удаля- ются наиболее высокая и наиболее низкая, а для оставшихся оценок вычисляется сред- нее арифметическое. Если наиболее высокую оценку выставило несколько судей, то из совокупности оценок удаляется только одна такая оценка, аналогично поступают с наи- более низкими оценками. Пусть B – вектор оценок спортсмена. Требуется определить зачетную оценку.

86
Урок 5. Понятие индексированной переменной
Решение:
zach_o 5.567

zach_o i
B
i

Min_o

Max_o

K
2


Зачетная оценка:
Max_o 5.7

Max_o max B
( )

Макс имальная оценка
Min_o 5.3

Min_o min B
( )

Минимальная оценка
B
i
5.6 5.4 5.7 5.6 5.3 5.7 5.4 5.7

B - оценки, выс тавленные с удьями :
i
1
K


Количес тво оценок
K
8

ORIGIN 1

Опре деление зачетной оце нки спортсмена
Пример 5.23.
Пусть массив Prot содержит информацию о результатах соревнования.
Первый элемент строки массива Prot задает номер участника, а второй – результат. По- строить массив, в котором элементы каждой строки – это соответственно номер участни- ка, его результат и занимаемое место. Если участники показали одинаковый результат, то им присуждается одинаковое место. Массив должен быть упорядочен по результатам.
Решение:
Протокол спортивн ых соре внований
ORIGIN 1

Количес тво учас тниковN
rows Prot
(
)

Сортировка мас с ива по убыванию результата:
Rez_sort reverse csort Prot 2

(
)
(
)

Прис уждение мес та учас тникам:
Prot
10 11 14 15 17 18 20 21 23 24 12.5 13.4 12.4 12.4 14.5 15.1 13.4 12.7 12.9 15.1





























i
1
N


Place i
1

Place i
if i
1 1

if Rez_sort i 1

2

Rez_sort i 2

Place i 1


Place i 1

1








Rez augmentRez_sort Place

(
)

Rez
T
24 15.1 1
18 15.1 1
17 14.5 2
11 13.4 3
20 13.4 3
23 12.9 4
21 12.7 5
10 12.5 6
14 12.4 7
15 12.4 7











Урок 5. Понятие индексированной переменной
87
Пример 5.24.
Найти решение уравнения x
3
+ 5x
2
-10x -6 = 0.
Решение: Для сравнения приведем два способа решения уравнения:
1-й способ. Используя оператор векторизации, можно выполнить обращение к скалярной функции, задав в качестве фактического аргумента вектор. Оператор векторизации вво- дится нажатием кнопки панели инструментов
Matrix
или комбинацией клавиш Ctll+
- (Ctrl и ―минус‖). MathCAD-документ может быть оформлен следующим образом: f x
( )
x
3 5x
2

10x

6


Задание с калярной функции для уточн ения корня по заданному начальному приближению:
r x
( )
root f x
( ) x

(
)

Зададим вектор начальных приближений:
x
7

6.8


4


10 5
0 5
10 0 10 0
x
6

0 2
(
)
T

x r x
( )



(Здес ь ис пользован оператор векторизации)
x
T
6.413

0.491

1.905
(
)


Если выполнить обращение к функции r(x) без использования оператора векториза- ции, то на экран было бы выведено сообщение об ошибке:
This is not a scalar. Press F1 for help.
(
Это не скалярное выражение. Нажмите клавишу F1 для помощи)
2-й способ. Поскольку левая часть уравнения является полиномом 3-го порядка, то его корни легче найти с помощью функции polyroots, когда не требуется задавать начальные приближения корней: v
6

10

5 1
(
)
T

polyrootsv
( )
6.413

0.491

1.905










С помощью функции polyroots находятся не только действительные, но и комплекс- ные корни полинома. Если какая-либо степень переменной в полиноме отсутствует, соот- ветствующий элемент вектора-аргумента функции равен 0.
Пример 5.25.
Найти решение уравнения x
5
+ 5x
3
+ 10 = 0.
Решение: Решение уравнения можно оформить следующим образом: f x
( )
x
5 5x
3

10


v
1 0 5 0 0 10
(
)
T

polyroots v
( )
0.86

0.034

0.435i

0.034

0.435i

0.463 0.629i

0.463 0.629i
















Обратите внимание на то, что только один из пяти корней оказался действительным.

88
Урок 5. Понятие индексированной переменной
Пример 5.26.
Найдите решение системы уравнений:








2 0
sin
3
,
10 2
2
x
y
y
x
Решение: y x
( )
3 sin x
( )
0.2


f x y

(
)
x
2
y
2

10


x
4

3.9


4


4 2
0 2
4 10 10 20
f(x,y(x))
N
6

i
1
N


ORIGIN 1

Начальные приближения для решений:
x i
3

2

1.5

1 2
3.5

y i
y x i
 

Given x
i
 
2
y i
 
2

10
y i
3 sin x i
 

x i
y i






Find x i
y i




Ans augmentx y

(
)

Ans
3.162

2.368

1.294

1.294 2.368 3.162 0.06 2.096

2.886

2.886 2.096 0.06




















Урок 6. Функции работы с файлами
89


Урок 6. Функции работы с файлами
Практически любая широко используемая программа может обрабатывать ASCII-файлы
(считывание данных из файла и запись данных в файл). В MathCAD для этих целей ис- пользуются специальные встроенные функции чтения READ, READPRN и записи WRITE,
WRITEPRN, APPEND, APPENDPRN.
6.1.
Считывание ASCII-файлов в MathCAD
При считывании файлов следует помнить, что считываемые числа должны быть записаны в файле в определенном формате:
 Числа должны быть разделены либо запятыми, либо одним или несколькими пробе- лами, либо символами табуляции, либо управляющими символами перевода строки.
 Для отделения целой части от дробной следует использовать точку вместо запятой.
Для чтения данных из файла используются функции READ или READPRN, в зависимости от структурной организации данных в файле. Различают неструктурированные и
структурированные файлы.
В случае неструктурированных файлов чи- словые значения могут быть разделены лю- бым разделителем (пробел, запятая, табуля- ция, перевод строки) и должны располагать- ся в файле друг за другом, возможно, зани- мая несколько строк (рис. 6.1).
Рис. 6.1. Пример неструктурированного файла
Импорт данных из неструктурированных файлов осуществляется с помощью функции
READ. Синтаксис оператора чтения: x
:
:=READ(file), где x – простая или индексированная переменная, которой присваивается считываемое числовое значение. Аргумент file может быть указан при обращении к функции как имя файла, заключенное в кавычки, или имя переменной, которой предварительно присвоено значение – имя файла (текст указывается в кавычках). Например, a:=READ(―Value.dat‖)
Name_f:=‖Temp.dat‖ i:=1 .. N x
i
:=READ(Name_f)
Если функция чтения используется при задании индексированной переменной, то значе- ния из файла считываются последовательно до тех пор, пока переменная-индекс не при- мет все свои значения или не будет достигнут конец файла.
С помощью оператора присваивания вида: x:=READ(―Interval.dat‖), READ(―Interval.dat‖) .. READ(―Interval.dat‖)

90
Урок 6. Функции работы с файлами можно задать переменную диапазона x, считывая последовательно из файла Interval.dat ее первое, второе и максимальное значения.
В следующем примере: file "Input.dat"

a b
h






READ file
(
)
READ file
(
)
READ file
(
)







READ file
(
)
трем различным переменным a, b и c как элементам массива присваиваются значения, по- следовательно считываемые из файла Input.dat.

Если файл не соответствует перечисленным выше требованиям или хранится не в текущем каталоге (папке), имя файла в документе будет выделено красным цветом, и бу- дет выведено одно из следующих сообщений об ошибке:
Can‟t understand something in this data file. If this file came from
A spreadsheet, make sure you save it as ASCII file text only.
Can‟t find the data file you‟re trying to use.
Во втором случае следует указать полный путь к файлу. Например, x
i
:=READ(―z:\MCAD\Temp.dat‖)
Пример 6.1.
Пусть файл Temp.dat содержит данные о температуре за январь. Требуется определить среднемесячную, максимальную и минимальную температуры в январе.
Решение:
ORIGIN 1

N
31

Количес тво дней в январе i
1
N


T
i
READ "c:\Temp.dat"
(
)

Tsr mean T
( )

Tmin min T
( )

Tmax max T
( )

Средняя, минимальная и макс имальная темп ературы в январе с оответс твенно равны:
Tsr
18.871


Tmin
24


Tmax
15


В случае структурированного файла данные в нем должны быть упорядочены в виде матрицы, т. е. в каждой строке должно содержаться равное количество числовых значений (рис. 6.2). Пустые строки и строки, содержащие ASCII-текст (не числа), при считывании игнорируются. Импорт данных из структурированного файла выполня- ется с помощью функции READPRN:
A:=READPRN(file), где A – массив, а аргумент file задает имя файла. Если нарушены требования, предъяв- ляемые к структурированным файлам, то выводится сообщение об ошибке (см. выше).
Рис. 6.2. Пример структурированного файла


Урок 6. Функции работы с файлами
91
Пример 6.2.
Различным видам продукции дается экспертная оценка, включающая N по- казателей. На комиссию представлены M видов продукции. Пусть файл
Expert.txt содер- жит информацию об экспертных оценках, оформленную в виде таблицы (как, например, на рис. 6.3). Требуется определить лучшее изделие по сумме показателей экспертных оценок. Если таких изделий будет несколько, то вывести список их номеров.
Рис. 6.3. Показатели экспертных оценок продукции
Решение:
Rez j 1

4

Max_B 143

Изделия с наивыс шей оценкой:
Rez reverse csort Rez 2

(
)
(
)

Итоговая таблица, отс ортированная по убыванию с уммарной оценки j
1
K


K
1

Кол-во видов продукц ии с наивыс шей оценкой
K
i
Sum_B
i
Max_B




Итоговая таблица - п ервая колонка с одержит номера видов продукции, вторая - с уммарные экс пертные оценки
Rez augmentExp_Ball
1
 
Sum_B




Наивыс шая экс пертн ая оценка
Max_B
max Sum_B
(
)

Суммарная экс пертн ая оценка для i-го вида продукции
Sum_B
i
2
N 1

j
Exp_Ball i j




i
1
M


ORIGIN 1

Количес тво показателей экс пертной оценки
N
cols Exp_Ball
(
)
1


Количес тво видов пр одукции, предс тавленных на комис с ию
M
rows Exp_Ball
(
)

Exp_Ball
RE ADP RN file
(
)

file
"C :\data\expert.txt"

Опре деление изде лия с наивысшей эксп ертно й оценк ой

92
Урок 6. Функции работы с файлами
6.2.
Создание ASCII-файлов в MathCAD
Для создания неструктурированных ASCII-файлов предназначены две функции WRITE и
APPEND. Синтаксис обращения к функциям:
WRITE(file):=x и
APPEND(file):=x
Здесь справа от оператора присваивания может быть указано или имя простой перемен- ной, или индексированной переменной, или имя переменной диапазона, или произвольное выражение, значение которого является скалярной величиной.
При использовании этих функций следует учитывать, что:
 если не указан путь при задании имени файла, то функция WRITE создает файл в текущем каталоге;
 если файл с указанным именем уже существует, то он заменяется новым файлом без предварительного предупреждения;
 функцию APPEND следует использовать тогда, когда требуется добавить данные в конец уже существующего файла;
 при создании неструктурированного файла MathCAD использует в качестве разде- лителя между числами символ пробела;
 если справа от оператора присваивания указано имя массива или выражение, ре- зультатом которого является массив, то будет выдано сообщение об ошибке:
This is not a scalar
Пример 6.3.
Дополнительно к заданию примера 6.2 требуется создать файл, в котором будут записаны суммарные экспертные оценки, наивысшая оценка и список номеров из- делий с наивысшей оценкой.
Решение:
Itog_file "c:\Data\Itog.dat"

i
1
M


WRIT E Itog_file
(
)
Sum_B
i

APPEND Itog_file
(
)
Max_B

j
1
K


APPEND Itog_file
(
)
Rez j 1


В результате будет создан файл, содержимое которого показано на рис. 6.4.
Для создания структурированных файлов предназначены функции WRITEPRN и
APPENDPRN. Синтаксис обращения к функциям:
WRITEPRN(file):=A и
APPENDPRN(file):=A, где A – массив данных или произвольное выражение, результатом которого является мас- сив (структурированный объект).
При использовании этих функций следует учитывать, что:
 если не указан путь при задании имени файла, то функция WRITEPRN создает файл в текущем каталоге;
 если файл с указанным именем уже существует, то он заменяется новым файлом без предварительного предупреждения;
Рис. 6.4. Содержимое файла
Itog.dat