- •25 Октября 2005 г., протокол № 2
- •Предисловие
- •1. Система компьютерной математики
- •1.1. Основные принципы работы системы
- •1.2. Операторы
- •1.3. Функции и переменные
- •1.4. Программирование
- •For[start, test, incr, body];
- •While [ test, expr ];
- •1.5. Графические возможности скм
- •Plot [Sin[X], {X, 0, 2*Pi}]
- •ListPlot3d[ phi ];
- •2. Задания для самостоятельной работы
- •2.1. Расчет двумерного распределения температуры
- •2.2. Расчет сопротивления интегрального резистора
- •2.3. Расчет емкости металлизации интегральных схем
- •2.4. Расчет двумерного нестационарного распределения температуры
- •3. Примеры решения задач
- •3.1. Расчет стационарного распределения температуры методом пвр
- •3.2. Расчет нестационарного распределения температуры
- •Литература
- •Содержание
- •2.2. Расчет сопротивления интегрального резистора . . . . . . . 21
- •2.3. Расчет емкости металлизации интегральных схем . . . . . . 23
- •220050, Минск, проспект Независимости, 4.
- •220064, Минск, ул. Курчатова, 7.
1.2. Операторы
Арифметические операторы:
= – присвоение (x = value);
+ – сложение (x + y + z);
- – вычитание (x - y - z);
* – умножение (x * y * z или x y z);
/ – деление (x / y);
^ – возведение в степень (x^y – возведение x в степень y).
Существуют общепринятые приоритеты выполнения операций, но с помощью круглых скобок можно изменить последовательность выполнения действий. В сомнительных случаях желательно использовать скобки.
Логические операторы:
= = – равенство;
5
! = – неравенство;
> – больше;
> = – больше или равно;
< – меньше;
< = – меньше или равно.
Основные логические функции можно записать в операторном виде:
Not[p] или !p – логическое отрицание;
And[p,q,…] или p && q &&… – логическое умножение (операция “И”);
Or[p,q,…] или p || q || … – логическое сложение (операция “ИЛИ”).
1.3. Функции и переменные
СКМ Mathematica содержит большое число функций, поэтому здесь будут рассмотрены только те функции, которые следует использовать для решения приведенных во втором разделе заданий.
При проведении расчетов или разработке и выполнении даже небольших программ приходится использовать переменные. Переменная в СКМ, как и в любой системе программирования, всегда отождествляется с некоторой областью памяти, в которой и хранится значение переменной. Распределение памяти под переменные – динамическое. Это означает, что местоположение ячеек памяти и объем памяти под ту или иную переменную не фиксированы, а меняются в ходе выполнения задачи.
Заранее объявлять тип переменной не требуется. Он определяется операцией присваивания переменной некоторого значения. Такой подход упрощает построение программ и естественен при использовании переменных в обычной математической литературе.
Без особых на то указаний переменные в системе Mathematica являются глобальными. Это означает, что после определения переменной ее значение можно изменить в любом месте документа или программы. Переменная появляется как реальный объект только после ее первого определения. Определение переменных выполняются с помощью операции присваивания:
var = value,
где var – имя переменной, value – ее значение.
При построении циклов часто используются переменные, определяющие количество повторения таких циклов. В этом случае рекомендуется использовать переменные целого типа, то есть присваивать им только целочисленные значения.
При работе с большим объемом информации удобно использовать понятие массива и обращаться к его элементам с помощью индексов. Массив создается с помощью функции
6
var1 = Table [var, {imax}].
Здесь var1 – имя массива, var – переменная, объявленная ранее, imax – число элементов массива. Обратиться к элементу этого массива можно следующим образом:
var1[[ i ]] = var2 или var3 = var1[[ i ]].
Такая индексированная переменная может присутствовать в любом выражении. Подчеркнем, что здесь используются двойные квадратные скобки.
Для создания двумерного массива объявленный ранее одномерный массив следует разделить на требуемое количество строк:
var = Partition [var, n],
где n – длина строки. Если последняя строка имеет длину, меньшую заданной, она отбрасывается. Обращение к элементу массива в этом случае требует двух индексов
var1[[ i , j ]].
Первый индекс, в данном случае i, указывает номер строки, второй, j – номер элемента в строке. Минимальное значение индекса равно 1.
В том случае, когда заранее неизвестна размерность массива, можно использовать списки. Пустой список создается следующим образом:
var = { }.
Дополнять его можно функцией Append:
var = Append[var, var1].
Здесь к списку с именем var, возможно пустому, добавляется элемент var1 и фактически новый список получает прежнее имя.
Выделение целой части числа выполняет функция IntegerPart. Например:
ind = IntegerPart[var/var1].
Для решения системы линейных алгебраических уравнений (СЛАУ) размерности n используется функция LinearSolve:
x = LinearSolve[a,b],
где a – матрица СЛАУ (двумерный массив размерности nn), b – вектор свободных членов (одномерный массив размерности n), x – решение СЛАУ (одномерный массив размерности n).
Вывод значений переменных на экран выполняет функция
Print[var1, var2, …].
Если требуется вывести и поясняющий текст, его следует взять в двойные кавычки, например:
Print[“ a=”, a, “ b=”, b, …].
7
