Еще одной особенностью языка MathCAD является то, что он сам определяет тип переменных

d1 –будетхранить результат деления строк матрицы.

da –будетхранить количество совпавших элементов деления.

s1 – для хранения сообщения и результата проверки. (в Pascal эта переменная lin)

Теперь нам нужно разделить все строки между собой друг на друга и определить общее частное. Легче всего это сделать, разделив поочередно сначала первую строчку на все другие, затем вторую на оставшиеся и т.д.

Запишем это так:

Еще одной особенностью языка MathCAD является то, что он сам определяет тип переменных - student2.ru i будет обозначать делимое, а j делитель.

Совет.Чтобы вставить последовательность 1..n-1 нажмите Еще одной особенностью языка MathCAD является то, что он сам определяет тип переменных - student2.ru на панели инструментов.

Внимание!Не вводите с клавиатуры имена программных операторов. Для их вставки с клавиатуры можно применять лишь сочетания клавиш, которые приведены в тексте всплывающей подсказки

Рис 3.
.

Еще одной особенностью языка MathCAD является то, что он сам определяет тип переменных - student2.ru

В тело цикла Еще одной особенностью языка MathCAD является то, что он сам определяет тип переменных - student2.ru вставьте Add Lineи вставим еще один цикл для того, чтобы найти сумму всех частных. Следует учитывать ситуацию деления на ноль, поэтому ограничим действия с помощью условного оператора if.

Обратите внимание! Что в MathCAD оператор if записывается, наоборот, в отличие от записи в Pascal. Т.е. сначала действие, которое произойдет, если выполниться условие.

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

Еще одной особенностью языка MathCAD является то, что он сам определяет тип переменных - student2.ru

Еще одной особенностью языка MathCAD является то, что он сам определяет тип переменных - student2.ru Теперь проверим, сколько слагаемых равны d1. Переменную da будем увеличивать на единицу, если условие верно. Так же как и в предыдущем случае не стоит допускать деления на ноль, поэтому здесь используется вложенный оператор if.

После выполнения цикла, проверим, равно ли da = n, если так, то эти строки линейно зависимые.

Пример:

Допустим, матрица выглядит так: Еще одной особенностью языка MathCAD является то, что он сам определяет тип переменных - student2.ru .

d1 будет равно = 1/2+2/4+3/6= 1.5

d1 =1.5 / n = 1.5 / 3 = 0.5

d1 = 1/2 = 2 /4 = 3/6 = 0.5 , то da= 3 и равно n, значит строки линейно-зависимые.

Далее установим значение переменных da и dl на ноль. Чтобы гарантировать нормальную работу алгоритма при следующих итерациях.

Еще одной особенностью языка MathCAD является то, что он сам определяет тип переменных - student2.ru

Возвратим результат функции. Если значение строковой переменной s1 так и не изменилось, то возвратим матрицу matr, в противном случае выведем сообщение наличии линейной зависимости.

Этап 3. Нахождение максимального элемента в столбце

Для реализации модифицированного метода Гаусса нам понадобиться функция нахождения максимального элемента в столбце и возвращение номера строки этого элемента.

Еще одной особенностью языка MathCAD является то, что он сам определяет тип переменных - student2.ru

Алгоритм этой функции достаточно прост и не требует подробных объяснений.

Этап 4. Перестановка строк в матрице

После того как найдена строка с максимальным элементом в столбце, возможно, нам понадобиться поменять эти строки местами. Для этого создадим функцию:

Еще одной особенностью языка MathCAD является то, что он сам определяет тип переменных - student2.ru

Определим переменные: i1будет использоваться в цикле, а temp для временного хранения элементов матрицы. Далее цикл и стандартный алгоритм замены переменных.

Возвратим матрицу matr.

Этап 5. Прямой ход

Все дополнительные функции определены, теперь можно перейти непосредственно к поиску решения. Выполним прямой ход в методе Гаусса:

Еще одной особенностью языка MathCAD является то, что он сам определяет тип переменных - student2.ru

Определим некоторые переменные: i1будет использоваться в цикле, а s1 для хранения сообщения о том, что система не имеет единственного решения. Создадим главный цикл.

Первым делом найдем строку с максимальным элементом через ранее объявленную функцию maxcol и присвоим это значение переменной max. Чтобы застраховать себя от частного случая, проверим, не является ли максимальный элемент равным нулю, если это так, то система не имеет единственного решения,и выйдем из цикла, используя команду break. В Pascal сразу произведем замену Zamena (i1,MaxCol(i1)) и реализуем алгоритм проверки в теле функции maxcol:

Еще одной особенностью языка MathCAD является то, что он сам определяет тип переменных - student2.ru

В MathCAD :

Еще одной особенностью языка MathCAD является то, что он сам определяет тип переменных - student2.ru

Если все в порядке, то поменяем строки местами.

Получим разрешающее уравнение, разделив каждый элемент на первый в строке i1

Получим: Еще одной особенностью языка MathCAD является то, что он сам определяет тип переменных - student2.ru

Еще одной особенностью языка MathCAD является то, что он сам определяет тип переменных - student2.ru Присвоим единицу коэффициенту при xi1

Умножим разрешающее уравнение i1 на первый коэффициент уравнения j и вычтем полученное из уравнения j.

Присвоим ноль коэффициенту при хj,i1

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

Еще одной особенностью языка MathCAD является то, что он сам определяет тип переменных - student2.ru Но не забудьте возвратить преобразованную матрицу или, в случае, если система не имеет единственного решения, соответствующее сообщение.

Этап 6. Обратный ход

Теперь не составит труда найти корни уравнения, выполнив обратный ход. Напишем еще одну функцию oh:

Еще одной особенностью языка MathCAD является то, что он сам определяет тип переменных - student2.ru

Выполним обратный цикл, задав диапазон значений от n до2, где n >= 2.

Тем самым пройдем по строкам в обратном порядке.

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

Наши рекомендации