Решение систем линейных уравнений

Поиск минимального и максимального элементов массива

Вычисление сумм элементов массивов

Задача 9.4.5. Вычислить сумму элементов одномерного массива.

Решение.

S=0

FOR j = 1 TO n

S=S+ A(i)

NEXT j

PRINT S

Задача 9.4.6. Вычислить сумму нечетных элементов двухмерного массива.

Решение. Элемент массива считается четным, если сумма его индексов четная, и наоборот – элемент массива считается нечетным, если сумма индексов элемента массива нечетная. Например, A(0,0), A(1,5) – четные элементы массива, а элементы А(0,1), А(4,7) – нечетные. Поэтому для определения суммы нечетных элементов массива необходимо в цикле подсчитывать сумму индексов элемента массива и проверять, является эта сумма четной или нечетной. Для проверки четности суммы индексов можно использовать арифметический оператор MOD (см. раздел 7.1.4.).

S=0

FOR i = 1 TO n

FOR j = 1 TO m

k=i+j

IF k MOD 2 <>0 THEN S=S+ A(i, j)

NEXT j

NEXT i

PRINT S

Задача 9.4.7. Найти максимальный и минимальный элементы одномерного массива.

Решение. При поиске минимального и максимального значений элементов массива в качестве начального значения вспомогательным переменным Amax и Amin необходимо присвоить значение любого элемента массива, например, нулевого:

Amax=A(0): Amin=A(0)

FOR i = 1 TO n

IF A(i)>Amax THEN Amax=A(i)

IF A(i)<Amin THEN Amin=A(i)

NEXT i

PRINT “Amax =“;Amax, “Amin=”;Amin

 

Сортировка массивов

Одной из операций с массивами является сортировка данных.

Известно много различных способов сортировки массивов. Однако, независимо от используемого способа в программе осуществляется сравнение текущего элемента массива с другим элементом этого же массива и, в зависимости от результатов сравнения, осуществляется обмен данными между этими элементами. Qbasic имеет полезную функции SWAP,которая предназначена для обмена значениями двух переменных.

Самая простая процедура сортировки – перебор.

FOR = i=1 To n - 1

FOR j = i + 1 To n

IF A(j) < A(i) THEN SWAP A(i), A(j)

NEXT j

NEXT i

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

 

Системой линейных уравнений с n неизвестными x1, х2, ..., хn называется система вида:

(9.4.27)

Здесь aijкоэффициенты при неизвестных, ai,n+1свободные члены.

Индекс i означает номер уравнения, j — номер неизвестного.

Решением системы (9.4.27) называется совокуп­ность таких значений переменных с1, ..., сn , при под­становке которых в данную систему каждое уравнение системы обращается в числовое равенство.

Система уравнений называется совместной, если она имеет хотя бы одно решение, и несовместной, если она не имеет ни одного решения. Две системы уравне­ний называются эквивалентными, если множество их решений совпадают. Преобразования, переводящие одну систему в эквивалентную ей систему, называются эквивалентными.

Перестановка двух уравнений системы, умножение уравнения системы на любое число, отличное от нуля, прибавление к уравнению другого уравнения, умножен­ного на любое число, отличное от нуля, являются экви­валентными преобразованиями.

Одним из распространенных методов решения сис­тем линейных уравнений является метод Гаусса (метод исключений). Методом Гаусса получают аналитические выражения для вычисления точных значений переменных. В ос­нове метода лежит прием последовательного исключе­ния переменных для получения эквивалентной треу­гольной или трапецеидальной системы уравнений. Для решения системы уравнений методом Гаусса с использованием ЭВМ необходимо на основании исход­ной системы уравнений (9.4.27) составить матрицу ко­эффициентов и свободных членов - расширенную матрицу.

Рассмотрим пример решения системы методом Гаусса на основе системы третьего порядка. Составим расширенную матрицу:

a11 a12 a13 b1

a21 a22 a23 b2 (9.4.28)

a31 a32 a33 b3

Прямой ход.

Сначала с помощью первого уравнения исключается х1 из второго и третьего уравнений. Для этого каждый элемент первой строки разделим на коэффициент а11, умножим на коэффициент а21 и вычтем полученные значения из соответствующих элементов второй строки:

a’2222 – a12/a11*a21, a’2323 – a13/a11*a21, b’2=b2– b1/a11*a12

а’32 32 – a12/a11*a32, а’33 33 – a13/a11*a33, b’3=b3– b1/a11*a13

или в общем виде:

aij=aij – ai1/a11*a1j i = 2, 3, j = 2, 3

bi = bi – b1/a11*a1i , i = 2,3.

Аналогично с помощью второго уравнения исключается х2 из третьего уравнения:

а’’32 =а’32 – a’22/a’22*a’32, а’’33 =а’33 – a’23/a’22*a’33, b’’3=b’3– b’2/a’22*a’23

В результате получим треугольную матрицу:

a11 a12 a13 b1

0 a’22 a’23 b’2

0 a’’23 a’’33 b’’3

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

Обратный ход начинается с решения третьего уравнения системы:

x3 = b’’3/a’’33.

Используя это значение можно найти х2 из второго уравнения, а затем х1 из первого уравнения:

x2=(b’2 - a’23*x3)/a’22; x1=(b1 - a12*x2 - a13*x3)/a11.

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

Известны численные методы решения систем линей­ных уравнений, например метод простых итераций. Численные методы дают приближенное решение систе­мы уравнений. Однако при большом числе переменных, например п > 100, сложность метода итераций меньше сложности метода Гаусса.