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

UptoLike

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

21
Пример 1.10. Подготовить в выделенном
квадратном диапазоне матрицу A, запол-
нить (справа от матрицы) столбец сво-
бодных членов b, решить СЛАУ с подго-
товленной расширенной матрицей n=6.
Решение примера, как и предыдущего,
начинается с присваивания имѐн i, j, f ячейкам I1, J1, F1, а также
имени n ячейке N1. Однако формула для формирования матрицы дан-
ного примера сложнее. Еѐ приходится записывать с несколькими вло-
женными функциями «ЕСЛИ»:
=ЕСЛИ(i=j; n; ЕСЛИ(ABS(j-i)=1; 2; ЕСЛИ(ABS(j-i)=2; 1; 0)))
или только после математической проработки с одной функцией ЕСЛИ:
=ЕСЛИ(ABS(j-i)>2;0; n+ABS(j-i)*(7-3*n+ABS(j-i)*(n-3))/2)
При сложной структуре формулы еѐ удобнее программировать на
VBA, то есть составить функцию, определѐнную пользователем. Для
этого она снабжается атрибутом Public (общая):
Public Function Func(i, j)
Select Case Abs(j - i)
Case 0
Func = Range("n")
Case 1
Func = 2
Case 2
Func = 1
Case Else
Func = 0
End Select
End Function
А в ячейке f готовится формула =Func(i;j) (набивкой или цепочкой
вызовов: формулы, вставить функцию, определенные пользователем,
Func, OK). После запуска макроса PutKoeff и выделения квадратного
диапазона ячеек в нѐм будет сформирована требуемая матрица A. За-
2
2
2
2
2100
2210
1221
0122
0012
n
n
n
n
n
n
bA
Пример 1.10. Подготовить в выделенном
квадратном диапазоне матрицу A, запол-        n 2 1 0 0         2
                                                                
нить (справа от матрицы) столбец сво-         2 n  2  1  0      2
бодных членов b, решить СЛАУ с подго-    A   1 2 n 2 1 b   n
                                                                
товленной расширенной матрицей n=6.           0 1 2 n 2         2
                                              0 0 1 2 n         2
Решение примера, как и предыдущего,                             
начинается с присваивания имѐн i, j, f ячейкам I1, J1, F1, а также
имени n ячейке N1. Однако формула для формирования матрицы дан-
ного примера сложнее. Еѐ приходится записывать с несколькими вло-
женными функциями «ЕСЛИ»:
=ЕСЛИ(i=j; n; ЕСЛИ(ABS(j-i)=1; 2; ЕСЛИ(ABS(j-i)=2; 1; 0)))
или только после математической проработки с одной функцией ЕСЛИ:
=ЕСЛИ(ABS(j-i)>2;0; n+ABS(j-i)*(7-3*n+ABS(j-i)*(n-3))/2)
   При сложной структуре формулы еѐ удобнее программировать на
VBA, то есть составить функцию, определѐнную пользователем. Для
этого она снабжается атрибутом Public (общая):
Public Function Func(i, j)
 Select Case Abs(j - i)
 Case 0
   Func = Range("n")
 Case 1
   Func = 2
 Case 2
   Func = 1
 Case Else
   Func = 0
 End Select
End Function
А в ячейке f готовится формула =Func(i;j) (набивкой или цепочкой
вызовов: формулы, вставить функцию, определенные пользователем,
Func, OK). После запуска макроса PutKoeff и выделения квадратного
диапазона ячеек в нѐм будет сформирована требуемая матрица A. За-
                                21