Решение задач в Excel на VBA. Применение программных средств в проектировании автомобильных конструкций. Калядин В.И. - 18 стр.

UptoLike

Составители: 

18
Дополнив процедуру KGAUSS оценкой числа обусловленности, от-
транслировав и включив дополненную процедуру KFGAUSS (Карл
Фридрих Гаусс) в библиотеку (названную нами Math32.dll) динамиче-
ского вызова, получим возможность обращаться к ней из VBA. Однако
при этом следует учесть ряд особенностей. Во-первых, необходимо в
VBA декларировать подключаемую процедуру, записав:
Declare Sub KFGAUSS Lib "С:\Путь\Math32.dll" (ByRef Ab As Double, _
ByVal N As Long, ByRef X As Double, ByRef CD As Double)
Во-вторых, следует учесть, что в процедуру надо передавать адрес на-
чала массивов, а не весь массив, включая границы индексов, как это де-
лается в Бейсике. То есть обращение из VBA к процедуре KFGAUSS
может иметь вид:
Call KFGAUSS(AiB(1, 1), N, X(1), CD)
Отметим ещѐ одну особенность реализации процедуры KFGAUSS, по-
зволяющую вычислять определитель левой квадратной (N×N)-части
расширенной матрицы AiB. Этот определитель вычисляется как произ-
ведение диагональных элементов матрицы, а знак произведения, кото-
рый зависит от чѐтного или нечѐтного числа выполненных перестано-
вок, кодируется знаком переменной CD, то есть определитель
det(A)= Aib(1,1)×…×AiB(N,N)×знак(CD).
Число обусловленности матрицы системы положительное и равно аб-
солютной величине |CD|. Если |CD| порядка десятков (не больше 1000),
то система достаточно хорошо обусловлена, и точность еѐ решения вы-
сокая. Большая величина |CD|, скажем, 10
12
, говорит о близости систе-
мы к вырожденной, |CD|=1E32 указывает на точную вырожденность
системы. Отметим, что для представленной на рис. 1.1 СЛАУ число
обусловленности равно 3,534×10
15
. Оно получено в ячейке D4 с помо-
щью разбираемой ниже функции пользователя для решения СЛАУ и
указывает на близость рассмотренной системы к вырожденной.
С учѐтом сделанных замечаний в Excel функция, определённая поль-
зователем, для решения СЛАУ и выдачи числа обусловленности мат-
рицы системы, может иметь следующий вид:
  Дополнив процедуру KGAUSS оценкой числа обусловленности, от-
транслировав и включив дополненную процедуру KFGAUSS (Карл
Фридрих Гаусс) в библиотеку (названную нами Math32.dll) динамиче-
ского вызова, получим возможность обращаться к ней из VBA. Однако
при этом следует учесть ряд особенностей. Во-первых, необходимо в
VBA декларировать подключаемую процедуру, записав:
Declare Sub KFGAUSS Lib "С:\Путь\Math32.dll" (ByRef Ab As Double, _
          ByVal N As Long, ByRef X As Double, ByRef CD As Double)
Во-вторых, следует учесть, что в процедуру надо передавать адрес на-
чала массивов, а не весь массив, включая границы индексов, как это де-
лается в Бейсике. То есть обращение из VBA к процедуре KFGAUSS
может иметь вид:
                 Call KFGAUSS(AiB(1, 1), N, X(1), CD)
Отметим ещѐ одну особенность реализации процедуры KFGAUSS, по-
зволяющую вычислять определитель левой квадратной (N×N)-части
расширенной матрицы AiB. Этот определитель вычисляется как произ-
ведение диагональных элементов матрицы, а знак произведения, кото-
рый зависит от чѐтного или нечѐтного числа выполненных перестано-
вок, кодируется знаком переменной CD, то есть определитель
          det(A)= Aib(1,1)×…×AiB(N,N)×знак(CD).
Число обусловленности матрицы системы положительное и равно аб-
солютной величине |CD|. Если |CD| порядка десятков (не больше 1000),
то система достаточно хорошо обусловлена, и точность еѐ решения вы-
сокая. Большая величина |CD|, скажем, 1012, говорит о близости систе-
мы к вырожденной, |CD|=1E32 указывает на точную вырожденность
системы. Отметим, что для представленной на рис. 1.1 СЛАУ число
обусловленности равно 3,534×1015. Оно получено в ячейке D4 с помо-
щью разбираемой ниже функции пользователя для решения СЛАУ и
указывает на близость рассмотренной системы к вырожденной.
  С учѐтом сделанных замечаний в Excel функция, определённая поль-
зователем, для решения СЛАУ и выдачи числа обусловленности мат-
рицы системы, может иметь следующий вид:


                                    18