Здравствуйте. Не встречал ли кто нибудь макрос, который решал бы систему из "N" уравнений с "N" неизвестными. Например: 0,5*а+3*b-5*c=0 1*a-1.75*b-3*c=1 0*a+7*b+0*c=7
Количество уравнений может быть любой.
Здравствуйте. Не встречал ли кто нибудь макрос, который решал бы систему из "N" уравнений с "N" неизвестными. Например: 0,5*а+3*b-5*c=0 1*a-1.75*b-3*c=1 0*a+7*b+0*c=7
В матричной форме система линейных уравнений записывается так: A*X = B. Вызываем форму. В RefEdit'ах формы указываем диапазоны: коэффициентов системы - Матрица A; вектора свободных членов - Матрица B; вектора неизвестных - Матрица X (достаточно указать первую ячейку диапазона). Жмём кнопку OK, получаем значения X.
В матричной форме система линейных уравнений записывается так: A*X = B. Вызываем форму. В RefEdit'ах формы указываем диапазоны: коэффициентов системы - Матрица A; вектора свободных членов - Матрица B; вектора неизвестных - Матрица X (достаточно указать первую ячейку диапазона). Жмём кнопку OK, получаем значения X.SM
А задача решается по тому же принципу как и в первом ответе?
Да, строка кода X = WorksheetFunction.MMult(WorksheetFunction.MInverse(A), В) это тоже, что и формула на листе файла MCH =МУМНОЖ(МОБР(A7:C9);D7:D9) : матрично умножаем матрицу, обратную A, на вектор B
Quote (ronik710)
А задача решается по тому же принципу как и в первом ответе?
Да, строка кода X = WorksheetFunction.MMult(WorksheetFunction.MInverse(A), В) это тоже, что и формула на листе файла MCH =МУМНОЖ(МОБР(A7:C9);D7:D9) : матрично умножаем матрицу, обратную A, на вектор BSM
Вы формулу "=МУМНОЖ(МОБР(A7:C9);D7:D9)" получили кнопкой запись макроса? Потом просто вставили в свой код?
Нет, строку X = WorksheetFunction.MMult(WorksheetFunction.MInverse(A), В) макрорекордером получить нельзя - только самому вбить в код. ronik710, уговорили - в файле (вместо этой одной строки) доморощенная процедура, решающая систему ЛУ:
Quote (ronik710)
Вы формулу "=МУМНОЖ(МОБР(A7:C9);D7:D9)" получили кнопкой запись макроса? Потом просто вставили в свой код?
Нет, строку X = WorksheetFunction.MMult(WorksheetFunction.MInverse(A), В) макрорекордером получить нельзя - только самому вбить в код. ronik710, уговорили - в файле (вместо этой одной строки) доморощенная процедура, решающая систему ЛУ:SM
Нет, строку X = WorksheetFunction.MMult(WorksheetFunction.MInverse(A), В) макрорекордером получить нельзя - только самому вбить в код.
А как можно научится такие строки писать? Я пока изучаю 2 книжки Книга: Использование макросов в Excel. Автор: С. Роман и Второй там что то вроде научится VBA за выходные.
Там еще такого не встречал.
Quote (SM)
Нет, строку X = WorksheetFunction.MMult(WorksheetFunction.MInverse(A), В) макрорекордером получить нельзя - только самому вбить в код.
А как можно научится такие строки писать? Я пока изучаю 2 книжки Книга: Использование макросов в Excel. Автор: С. Роман и Второй там что то вроде научится VBA за выходные.
макрорекордером получить нельзя - только самому вбить в код.
Не, я не прав. Вот: Сначала придумываем формулу, параллельно читая справку об используемых в формуле функциях. Макрорекордером записываем вставку в ячейку G2 нашей формулы: =МУМНОЖ(МОБР(A2:C4);D2:D4). Останавливаем запись, смотрим в редакторе, что получилось:
[vba]
Код
Sub Макрос4() ' Макрос записан 07.12.2011 (Саша) Range("G2").Select ActiveCell.FormulaR1C1 = "=MMULT(MINVERSE(RC[-10]:R[2]C[-8]),RC[-7]:R[2]C[-7])" End Sub
[/vba]
Значит, скорее всего, в Excel-VBA, в объекте WorksheetFunction должны быть функции MMULT и MINVERSE - аналоги функций рабочего листа. Открываем в редакторе окно просмотра объектов (Object Browser), в списке библиотек выбираем Excel, в левой половинке Browser'а находим WorksheetFunction, щёлкаем, действительно: в правом списке находим и MMult и MInverse. Всё. Конструкция готова: X = WorksheetFunction.MMult(WorksheetFunction.MInverse(A), В) (только вместо адресов диапазонов аргументами функций будут или переменные-диапазоны, или, в нашем случае, массивы (A и B)).
ЦитатаSM
макрорекордером получить нельзя - только самому вбить в код.
Не, я не прав. Вот: Сначала придумываем формулу, параллельно читая справку об используемых в формуле функциях. Макрорекордером записываем вставку в ячейку G2 нашей формулы: =МУМНОЖ(МОБР(A2:C4);D2:D4). Останавливаем запись, смотрим в редакторе, что получилось:
[vba]
Код
Sub Макрос4() ' Макрос записан 07.12.2011 (Саша) Range("G2").Select ActiveCell.FormulaR1C1 = "=MMULT(MINVERSE(RC[-10]:R[2]C[-8]),RC[-7]:R[2]C[-7])" End Sub
[/vba]
Значит, скорее всего, в Excel-VBA, в объекте WorksheetFunction должны быть функции MMULT и MINVERSE - аналоги функций рабочего листа. Открываем в редакторе окно просмотра объектов (Object Browser), в списке библиотек выбираем Excel, в левой половинке Browser'а находим WorksheetFunction, щёлкаем, действительно: в правом списке находим и MMult и MInverse. Всё. Конструкция готова: X = WorksheetFunction.MMult(WorksheetFunction.MInverse(A), В) (только вместо адресов диапазонов аргументами функций будут или переменные-диапазоны, или, в нашем случае, массивы (A и B)).SM
помогите пожалуйста решить! перепробовала все методы для этого уравнения, но корни никак найти не могу, иксель выдает ужасно огромные цифры
x+2y+3z=4 2x+y-z=3 3x+3y+2z=10[moder]Хочу Вас обрадовать. Аж дважды. 1. Ваша система уравнений (если, конечно, не углубляться в дебри высшей математики) не имеет решения. Начал решать на бумажке, получил 7х+5y=16 и 7х+5y=13 2. Эта тема закрыта. В следующий раз создавайте свою. А перед этим прочитайте Правила форума.
помогите пожалуйста решить! перепробовала все методы для этого уравнения, но корни никак найти не могу, иксель выдает ужасно огромные цифры
x+2y+3z=4 2x+y-z=3 3x+3y+2z=10[moder]Хочу Вас обрадовать. Аж дважды. 1. Ваша система уравнений (если, конечно, не углубляться в дебри высшей математики) не имеет решения. Начал решать на бумажке, получил 7х+5y=16 и 7х+5y=13 2. Эта тема закрыта. В следующий раз создавайте свою. А перед этим прочитайте Правила форума.kris