Страницы: 1
RSS
Как вычислить матрицу, аргументы которой комплексные числа (код на VBA)
 
Столкнулся с одной проблемой. Excel не может вычислить, например определитель (МОПРЕД) или обратную матрицу (МОБР) и т.п., где аргументами будут комплексные числа. Выдает мне ошибку #ЗНАЧ!, а VBA выдает сообщение 1004 "Нельзя установить свойство FormulaArray класса Range"  
Приведу код VBA  
Sub Complex_matrix()  
Set NmForm = ActiveWorkbook.Worksheets("Лист3").Names  
 
   NmForm.Add Name:="MdU", RefersToR1C1:="=Лист3!R28C2:R29C3"  
   NmForm.Add Name:="dU", RefersToR1C1:="=Лист3!R28C4:R29C5"  
 
Worksheets("Лист3").Range("MdU").FormulaArray = "={КОМПЛЕКСН(2;3),КОМПЛЕКСН(1;2);КОМПЛЕКСН(4;6),КОМПЛЕКСН(4;1)}"  
Worksheets("Лист3").Range("dU").FormulaArray = "=MINVERSE(MdU)"  
End Sub  
 
Неужели в Excel нельзя вычислить комплексную матрицу? В книге Ф.Р. Гантмахера "Теория Матриц"  матрицу, агрументами которой являются комплексные числа можно вычислить. Но в справке по Excel не написано каких-то ограничений на эту тему.
 
а где в справке Вы прочитали, что МОБР или МОПРЕД работают с матрицами из комплексных чисел?  
 
имхо, определитель для такой матрицы придётся считать по известным правилам, обращаясь к каждому элементу и используя функции МНИМ.СУММ, МНИМ.ПРОИЗВЕД, МНИМ.РАЗН  
 
муторно, согласен.  
но - один раз.    
сохраните как UDF или надстройку - и пользуйтесь.
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
Такая надстройка, конечно, есть - тут чел пишет, что использовал ее с Excel 2000:   
http://www.excelforum.com/excel-worksheet-functions/537367-where-to-find-complex-matrix-math-add-ins-for-excel-2003-a.html
 
Вот например   
http://digilander.libero.it/foxes/SoftwareDownload.htm  
MATRIX 2.3 - от слова "complex" в глазах рябит :)  
Правда, пишут, что только для Windows 2000/XP, Excel 2003/XP, но попробуйте.
 
Таким образом я и сделал до этого, как Вы мне написали. Хорошо,что матрица была 3х3, тогда численно методом треугольников ее и решил через формулы МНИМ.СУММ, МНИМ.ПРОИЗВЕД, МНИМ.РАЗН и т.п.  
Но когда матрица 10х10, тогда уже туговато будет. К счастью, пока что в своих вычислениях больше комплексной матрицы 3х3 не сталкивался. Думаю было бы круто составить расчет комплексной матрицы с помощью VBA, и обращться с ней , как Excel  
работает с некомплексными массивами, а именно присваиваем диапазону содержательное имя, и потом обращаемся к нему по имени.
 
Большое спасибо за ссылку, сайт очень понравился.
Страницы: 1
Читают тему
Наверх