Фортран Теория Информатика
.pdf30. Встроенные функции при программировании на Фортране. Элементные числовые функции. Вычисление максимума и минимума.
Возвращает максимум из двух или более значений MAX(a1, a2, [, a3,...]) Возвращает минимум из двух или более значений MIN(a1, a2, [, a3,...])
31. Встроенные функции при программировании на Фортране. Математические элементные функции. Генерация случайных чисел.
CALL RANDOM_NUMBER(harvest) - возвращает псевдослучайное число или массив таких чисел из равномерно распределенного интервала: 0 x 1.
32. Встроенные функции при программировании на Фортране. Функции для работы с массивами.
ALLOCATED(array) - возвращает значение стандартного логического типа, равное .TRUE., если размещаемый массив array (массив, имеющий атрибут ALLOCATABLE) в данный момент размещен, и .FALSE. - в противном случае.
SIZE(array [, dim]) - возвращает стандартное целое, равное размеру массива array, или, если присутствует скалярный целый параметр dim, протяженность (экстент) вдоль заданного измерения dim.
SHAPE(source) - возвращает одномерный массив стандартного целого типа, содержащий форму массива или скаляра source.
ALL(mask [, dim]) - возвращает .TRUE., если все элементы логического массива - маски mask вдоль заданного измерения dim истинны, или .FALSE. - в противном случае.
PRODUCT(array [, dim] [, mask]) - вычисляет произведение всех элементов целочисленного или вещественного массива вдоль необязательного измерения dim. Перемножаемые элементы могут отбираться необязательной маской mask.
SUM(array [, dim] [, mask]) - подобна PRODUCT, но вычисляет сумму элементов массива.
TRANSPOSE(matrix) - меняет местами (транспонирует) столбцы и строки матрицы (двумерного массива) matrix. Тип и разновидность типа результирующего массива и matrix одинаковы. Если matrix имеет форму (k, n), то результат имеет форму (n, k).
33. Встроенные функции при программировании на Фортране. Функции обработки строк.
LEN(string) - возвращает длину строки string. Результат имеет стандартный целый тип.
ADJUSTL(string) - элементная функция; выполняет левое выравнивание символьной строки.
ADJUSTR(string) - элементная функция; выравнивает символьную строку по правой границе.
INDEX(string, substring [, back]) - элементная функция; возвращает номер позиции, с которой начинается первое вхождение строки substring в строке string.
REPEAT(string, ncopies) - возвращает строку, содержащую ncopies повторений строки string
SCAN(string, set [, back]) - возвращает номер позиции значения для поиска
34. Модули в Фортране. Оператор USE. Атрибуты PUBLIC и PRIVATE.
Модули используются для определения глобальных данных, которые могут использоваться во всех подпрограммах или исключительно в нужной подпрограмме.
Оператор USE позволяет:
•ограничить доступ к объектам модуля за счет применения параметра ONLY;
•использовать в программной единице для объектов модуля другие имена.
Атрибут PUBLIC указывает, что объект модуля может быть доступен в результате use-ассоциирования в использующих модуль программных единицах.
Атрибут PRIVATE указывает, что объект модуля может быть использован только внутри модуля. Задание атрибутов может быть выполнено как отдельным оператором, так и при объявлении типа
35. Оператор многовариантного выбора SELECT CASE в Фортране. Select-case используется для замены else-if, когда исходов больше чем 3.
SELECT CASE (тест-выражение) CASE(СП1)
[БОК1] [CASE(СП2) [БОК2]]
...
[CASE DEFAULT [БОКn]]
END SELECT
36. Оператор WHERE в Фортране.
В Фортране можно, используя оператор или конструкцию WHERE, выполнить присваивание только тем элементам массива, значения которых удовлетворяют некоторым условиям.
integer :: b(5) = (/ 1, -1, 1, -1, 1 /) |
|
|
|
|
|
|
where(b > 0) b = 2 * b |
! b > 0 - логическое выражение - массив |
|||||
print *, b |
! |
2 |
-1 |
2 |
-1 |
2 |
integer :: b(5) = (/ 1, -1, 1, -1, 1 /) where(b > 0)
b = 2 * b end where
37. Оператор FORALL в Фортране
Подобно WHERE и сечениям FORALL заменяет циклы с присваиванием массивов, например вместо цикла
do i = 1, 100 d(i, i) = 2 * g(i) end do
лучше использовать
forall(i = 1:100) d(i, i) = 2 * g(i)
В DO-цикле операторы выполняются немедленно при каждой итерации. FORALL работает иначе: первоначально вычисляется правая часть выражения для всех итераций и лишь затем выполняется присваивание.
38. Назначение системы Matlab, области применения, особенности. Элементы окна среды Matlab.
MATLAB сокращение от Matrix Laboratory - система для осуществления численных расчетов, моделирования технических и физических систем, а также выполнения научных и инженерных расчетов при работе с массивами данных.
Области применения:
·математические вычисления
·создание алгоритмов
·моделирование
·анализ, обработка и визуализация данных
·научная и инженерная графика
·разработка приложений с GUI
Система допускает обращение к программам, написанным на языках Fortran, C/C++. Особенности:
·Результат выводится сразу же после оператора в том случае, если после него нажата клавиша Enter; если вывод результата после оператора нежелателен, ставьте после него точку с запятой.
·Все переменные в MATLAB считаются матрицами (это очень важная особенность MATLAB).
·По правилу умолчания все переменные имеют тип double (вещественное восьмибайтовое значение).
Элементы среды:
·командное окно, предназначенное для ввода команд языка MATLAB;
·окно предыстории, в котором запоминается информация из командного окна;
·рабочая область содержит сведения об имеющихся в памяти переменных;
·проводник текущей директории представляет собой проводник файловой системы, встроенный в MATLAB.
39. Работа с файлами в Matlab. Построение графиков.
В текстовом файле матрица должна быть представлена как прямоугольная таблица чисел, разделенных пробелами, с равным количеством элементов в каждой строке. Имя файла должно иметь непустое расширение, отличное от .mat.
Команда:
load имя_файла.расширение
Для сохранения массива в текстовый файл можно воспользоваться командой:
save имя_файла.расширение имя_массива -ASCII Построение графиков:
plot
x = 0:pi/100:2*pi; y = sin(x); plot(x,y)
40. Язык программирования Matlab: типы данных; константы и переменные. Типы данных: логический (logical), символьный (char), целый (int8, int16,
int32, int64), вещественный (single, double)
●Числовые константы: 3, -99, 0.0001, 9.6397238, 1.60210e-20, 6.02252e23
●Логические константы: 1 - истина (true) и 0 - ложь (false)
●имена - последовательность латинских букв, цифр и символов подчеркивания;
●на первом месте буква;
●регистр важен;
●namelengthmax
●ans, eps, pi, i, j, inf, NaN
•Может иметь длину до 63 символов.
•Избегайте использования имен встроенных функций для переменных
41.Язык программирования Matlab: встроенные функции и специальные
величины;
·Сложение, вычитание, умножение, деление, возведение в степень
·Тригонометрические функции
·Матричные сложение, вычитание, умножение, деление, возведение в степень
·Трансцендентные функции (логарифм, квадратный корень и т.п.)
·plot
42.Язык программирования Matlab: операции: простые и матричные;
·Матричные операции выполняются по правилам линейной алгебры.
·Простые операции над массивами выполняются поэлементно над соответствующими элементами массивов одинаковых размеров.
·Для обозначения простой операции перед знаком операции ставится точка, например, .*
·Простая операция может выполняться над парой скаляр-массив. Тогда скаляр участвует в операции над каждым элементом массива.
·Операции отношения выполняются над массивами одинакового размера (как простые арифметические операции). В результате получается массив такого же размера; каждый его элемент равен единице, если для соответствующих элементов исходных массивов соотношение выполнено, и нулю в противном случае.
43.Язык программирования Matlab: выражения; операторы;
44. Язык программирования Matlab: кодирование основных алгоритмических структур.
45.Понятие М-файла. Скрипты, их назначение. Отладка и профилирование M-файлов.
М-файла - это текстовый файл, содержащий инструкции языка MATLAB, с расширением .m. Для вызова М-файла достаточно записать в окне команд MATLAB (или в другом М-файле) его имя без расширения:
edit имя_файла
Скрипты - это простейшие М-файлы. Они имеют с командным окном (или с вызвавшим скрит М-файлом) общее рабочее пространство переменных. При вызове скрипта просто выполняются содержащиеся в нём команды. Скрипты не имеют параметров.
46.Функции в Matlab: правила создания и вызова.
Функция - это подпрограмма MATLAB, она имеет собственное, независимое от вызывающего кода, пространство рабочих переменных. Обычно Имеют параметры.
Передача параметров в функции обычно осуществляется либо через параметры функции, либо через глобальные переменные.
Правила создания и вызова:
1.Функция содержится в отдельном М-файле. Имя М-файла должно совпадать
сназванием функции.
2.Если параметров больше одного их необходимо заключать в [квадратные скобки] и чередовать запятой. Если параметр один скобки можно опустить.
3.Фактические параметры, передаваемые в функцию должны соответствовать формальным по числу, порядку, типу и структуре.
4.Функция может использовать не только локальные данные, из своей рабочей рабочей области, но и глобальные данные (базовой рабочей области).
5.Чтобы объявить какой-либо параметр внутри функции как глобальный, перед его объявлением нужно использовать ключевое слово global.
47.Встроенные функции Matlab обработки векторов и матриц: length, size.
·size - Размер массива
sz = size(A) возвращает вектор-строку, элементами которого являются длины соответствующих размерностей A. Например, если A матрица 3 на 4, затем size(A) возвращает векторный [3 4].
·length - Длина самого большого измерения массива.
L = length(X) возвращает длину самого большого измерения массива в X. Для векторов длина является просто числом элементов. Для массивов с большим количеством размерностей длиной является max(size(X)). Длина пустого массива является нулем.
48.Встроенные функции Matlab обработки векторов и матриц: sum, min, max, mean, prod.
·min – Вычисляет минимальные значения среди элементов столбцов матрицы, возвращает вектор-строку минимальных значений столбцов исходной матрицы:
·max – Вычисляет максимальные значения среди элементов столбцов матрицы, возвращает вектор-строку максимальных значений столбцов исходной матрицы:
У этих функций может может быть еще один выходной параметр, содержащий индексы минимальных элементов столбцов:
[min_stolb, ind_min]=min(A); [max_stolb, ind_max]=max(A);
·sum - Сумма элементов массива, eсли A вектор, sum(A) возвращает сумму элементов, если A матрица, sum(A) возвращает вектор-строку, содержащий сумму каждого столбца.
·mean - Среднее
·prod - Произведение элементов массива, аналогично sum
49.Встроенные функции Matlab обработки векторов и матриц: diag, tril, triu.
·diag - Диагональ матрицы
·tril, triu - нижний и верхний фрагменты матрицы
tril(X) – возвращает матрицу, все элементы которой выше главной диагонали X заменены нулями, неизменными остаются лишь элементы нижней треугольной части, включая элементы главной диагонали;
tril(X.k) – возвращает неизменной нижнюю треугольную часть матрицы X начиная
сk-й диагонали. При k=0 это главная диагональ, при k>0 – одна из верхних диагоналей, при k<0 – одна из нижних диагоналей.
triu(X) – возвращает неизменной верхнюю треугольную часть матрицы X включая элементы главной диагонали, и заменяет нулями остальные элементы;
triu(X.k) – возвращает неизменной верхнюю треугольную часть матрицы X начиная
сk-й диагонали. При k=0 – это главная диагональ, при k>0 – одна из верхних диагоналей, при k<0 – одна из нижних диагоналей.
50.Встроенные функции Matlab обработки векторов и матриц: issorted, sort,
sortrows.
·issorted - проверка упорядоченности массива
·sort(a) — возвращает вектор, полученный из вектора a упорядочиванием по возрастанию.
sort(a, 'ascend') — эквивалентно sort(a) .
sort(a, 'descend') — возвращает вектор, полученный из вектора a упорядочиванием по убыванию.
sort(A) — возвращает матрицу, полученную из матрицы А упорядочиванием каждого ее столбца по возрастанию. Допустим последний в списке аргумент – строка
'ascend' или 'descend'.
Функция sortrows возвращает матрицу, строки которой упорядочены по возрастанию элементов столбца (строки не изменяются, но переставляются). Иначе говоря, осуществляется синхронная перестановка строк:
sortrows (A) — по возрастанию элементов первого столбца. sortrows(A,column) — по возрастанию элементов столбца с номером column.
51.Встроенные функции Matlab обработки векторов и матриц: randperm, ind2sub, sub2ind, reshape.
p = randperm(n) возвращает вектор-строку, содержащий случайное сочетание целых чисел от 1 до n не повторяя элементы.
p = randperm(n,k) возвращает вектор-строку, содержащий k уникальные целые числа, выбранные случайным образом от 1 до n.
ind2sub — преобразует элемент в индексы (координаты) этого элемента sub2ind — преобразует индексы в значение элемента с этими индексами reshape — изменяет размерности массива.
52.Встроенные функции Matlab обработки векторов и матриц: find. Выбор строки, столбца, произвольной части матрицы в среде Matlab.
find
Найдите индексы и значения ненулевых элементов Синтаксис
k = find(X) k = find(X,n)
k = find(X,n,direction) [row,col] = find(___) [row,col,v] = find(___)
Описание
k = find(X) возвращает вектор, содержащий линейные индексы каждого ненулевого элемента в массиве X.
Если X вектор, затем find возвращает вектор с той же ориентацией как X. Если X многомерный массив, затем find возвращает вектор-столбец линейных
индексов результата.
k = find(X,n) возвращает первый n индексы, соответствующие ненулевым элементам
вX.