Решение системы уравнений vba excel

Решение системы линейных алгебраических уравнений методом Гаусса средствами языка программирования Visual Basic

Министерство образования и науки Республики Башкортостан

ГАОУ СПО «Стерлитамакский колледж строительства, экономики и права»

«Программирование в компьютерных системах»

по разделу 1 Объектно-ориентированное программирование

междисциплинарного курса 01.02. Прикладное программирование

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

методом Гаусса средствами языка программирования Visual Basic

3 курса, группы ПО-31

Системы линейных алгебраических уравнений

Решение систем линейных уравнений графическим способом

Список использованной литературы

Приложение А (программный код)

В курсовом проекте рассмотрена программа, реализующая приближенное решение систем линейных уравнений графическим способом, с подключением модуля “Метод Гаусса”, созданная в среде программирования Visual Basic 2010.

Системы линейных уравнений, описывают экономические процессы в обществе и производстве. Навыки решения таких систем я вляются профессионально необходимыми и демонстрируют готовность студента к профессионльной деятельности. Автоматизировать процесс решения таких систем поможет программный продукт, представленный в данном курсовом проекте. Программа написана средствами языка программирования Visual Basic , обладающего возможностями, которые помогут решить графически систему линейных уравнений, а так же реализовать метод Гаусса. Метод Гаусса выбран ак универсальный для систем линейных уравнений.

Цель курсового проекта:

Разработать код программного продукта, реализующего прибл иженно е решение систем линейных уравнений графическим способом, с подключением модуля, реализующего метод Гаусса решения систем линейных уравнений.

Задачи курсового проекта:

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

2. Выполнить отладку программного модуля «Метод Гаусса» и приближенного решения с использованием специализированных программных средств.

3. Выполнить тестирование программного модуля «Метод Гаусса» и приближенного решения по составленным тестовым заданиям.

Системы линейных алгебраических уравнений.

Система m линейных алгебраических уравнений с n неизвестными (или, линейная система, также употребляется аббревиатура СЛА́У) в линейной алгебре — это система уравнений вида

Где m -количество линейных уравнений;

n -количество переменных ;

x 1 , x2, …, xn — неизвестные, которые надо определить;

Система называется однородной, если все её свободные члены равны нулю ( b 1 = b2 = … = bm = 0 ), иначе — неоднородной.

Система называется квадратной, если число m уравнений равно числу n неизвестных.

Решение системы — совокупность n чисел c 1 , c2, …, cn , таких что подстановка каждого ci вместо xi в систему обращает все её уравнения в тождества.

Система называется совместной, если она имеет хотя бы одно решение, и несовместной, если у неё нет ни одного решения.

Совместная система вида может иметь одно или более решений.

Совместная система вида называется определённой, если она имеет единственное решение; если же у неё есть хотя бы два различных решения, то она называется неопределённой. Если уравнений больше, чем неизвестных, она называется переопределённой.

Система линейных уравнений может быть представлена в матричной форме как:

Где A — это матрица системы,

x — столбец неизвестных,

b — столбец свободных членов.

Если к матрице A приписать справа столбец свободных членов, то получившаяся матрица называется расширенной.

Эквивалентные системы линейных уравнений

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

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

Система линейных алгебраических уравнений

,

Где C — невырожденная матрица.

В частности, если сама матрица A — невырожденная, и для неё существует обратная матрица A -1 , то решение системы уравнений можно формально записать в виде

.

Решение систем линейных уравнений графическим способом

Решение систем линейных уравнений графическим способом заключается в построении графика каждого уравнения , входящего в данную систему, в одной координатной плоскости и нахождении точки пересечения этих графиков . Координаты этой точки ( x; y ) и будут являться решением данной системы уравнений.

Если прямые , являющиеся графиками уравнений системы, пересекаются , то система уравнений имеет единственное р ешение.

Если прямые , являющиеся графиками уравнений системы, параллельны , то система уравнений не имеет решений .

Если прямые , являющиеся графиками уравнений системы, совпадают , то система уравнений имеет бесконечное множество решений.

Примеры

Графиком каждого уравнения служит прямая линия, для построения которой достаточно знать координаты двух точек . Мы составили таблицы значений х и у для каждого из уравнений системы.

Прямую y=2x-3 провели через точки (0; -3) и (2; 1).

Прямую y=x+1 провели через точки (0; 1) и (2; 3).

Графики данных уравнений системы 1) пересекаются в точке А(4; 5). Это и есть единственное решение данной системы.

Ответ: (4; 5) .

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

Прямую y=2x+9 проводим через точки (0; 9) и (-3; 3).

Прямую y=-1,5x+2 проводим через точки (0; 2) и (2; -1).

Наши прямые пересеклись в точке В (-2; 5).

Ответ: (-2; 5).

Метод Гаусса

Метод Гаусса — классический метод решения системы линейных алгебраических уравнений (СЛАУ). Это метод последовательного исключения переменных, когда с помощью элементарных преобразований система уравнений приводится к равносильной системе треугольного вида, из которой последовательно, начиная с последних (по номеру), находятся все переменные системы.

Пусть исходная система выглядит следующим образом

Где A называется основной матрицей системы,

b — столбцом свободных членов.

Тогда, согласно свойству элементарных преобразований над строками, основную матрицу этой системы можно привести к ступенчатому виду (эти же преобразования нужно применять к столбцу свободных членов):

При этом будем считать, что базисный минор (ненулевой минор максимального порядка) основной матрицы находится в верхнем левом углу, то есть в него входят только коэффициенты при переменных xj 1 ,…, x jr .

Тогда переменные xj 1 ,…, x jr называются главными переменными. Все остальные называются свободными.

Если хотя бы одно число Bi ≠0 , где i > r ,то рассматриваемая система несовместна, т. е. у неё нет ни одного решения.

Перенесём свободные переменные за знаки равенств и поделим каждое из уравнений системы на свой коэффициент при самом левом x :

Если свободным переменным системы придавать все возможные значения и решать новую систему относительно главных неизвестных снизу вверх (то есть от нижнего уравнения к верхнему, то мы получим все решения этой СЛАУ . Так как эта система получена путём элементарных преобразований над исходной системой, то по теореме об эквивалентности при элементарных преобразованиях системы эквивалентны, то есть множества их решений совпадают.

Разрешается:

1) изменять порядок строк матрицы, что соответствует изменению порядка уравнений;

2) умножать строки на любые отличные от нуля числа, что соответствует умножению соответствующих уравнений на эти числа;

3) прибавлять к любой строке матрицы другую, умноженную на отличное от нуля число, что соответствует прибавлению к одному уравнению системы другого, умноженного на число.

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

Для начала избавимся от переменной x 1 во втором уравнении. Для этого из второго уравнения вычтем первое уравнение, предварительно умноженное на 3:

.

Переменная x 2 найдена. Осталось определить значение переменной x 1 . Для этой цели преобразуем первое уравнение, убрав из него переменную x 2 . Вычтем из первого уравнения второе уравнение, предварительно умноженное на 2. Первое уравнение станет таким:

Ответ найден. Запишем то же решение, но уже без промежуточных пояснений. Римскими цифрами I и II будем обозначать первое и, соответственно, второе уравнения.

означает, что из второго уравнения вычли утроенное первое уравнение

означает, что левую и правую части второго уравнения разделили на (-7).

Итак, решение методом Гаусса заданной СЛАУ будет иметь вид:

Обычно работают с матричной формой записи

В матричной форме записи метод Гаусса станет таким:

Visual Basic

Visual Basic — это простой и быстрый способ создания программ для Microsoft Windows. Даже если вы не знакомы с программированием для Windows, с Visual Basic вы получите полный набор средств для упрощения разработки.

Так что же такое Visual Basic? Слово «Visual» относится к методу, используемому для создания того, что видит пользователь — графического пользовательского интерфейса , или GUI. Слово «Basic» относится к аббревиатуре BASIC (Beginners All-Purpose Symbolic Instruction Code — многоцелевой код символьных инструкций для начинающих) языка программирования, который используется программистами намного чаще, чем любой другой язык в истории вычислений. Для создания различных полезных программ достаточно изучить лишь некоторые из его возможностей.

Окно Form является вашей программы. Его можно двигать по экрану, увеличивать, уменьшать, менять его свойства в окне свойств, упорядочивать на нём объекты и в окне Code писать для него процедуры. Само окно тоже считается как объект, так сказать, «высший объект». Один из объектов всегда является «актуальным объектом», чьи свойства будут перечислены в окне свойств. Объект становится актуальным, когда на него кликнут. Узнают это чаще всего по обрамлению или по какой-нибудь другой маркировке.

Здесь всегда перчислены свойства актуального объекта (см. выше). Свойство, представленное синим, может быть изменено в строке справа. Иногда нужно вносить данные самому, иногда можно выбирать из выпадающего списка, который отображён в строке справа в виде маленькой стрелки вниз. Заметьте, что при изменении свойств окна, изменения происходят синхронно.

Здесь можно выбрать объекты, которые нужно поместить на форме. Например, чтобы нарисовать линию, кликните на символ линии. Теперь кликните на то место на форме, где должна начинаться линия и тяните мышь с нажатой кнопкой туда, где эта линия должна кончаться. Отпустите кнопку мышки. Готово! Отдельные объекты будут описаны позже.

В Basic’e процедуры начинаются с команды Sub, потом идёт имя процедуры и (). Оканчиваются процедуры командой End Sub (англ. subroutine: подпрограмма). Между этим стоят команды, принадлежащие этой процедуре. Они будут, при вызове процедуры, следовать одна за другой.

В большинстве своём процедуры — это процедуры события: для каждого события, на которое должна реагировать программа, нужно писать процедуру. Причём Sub, имя процедуры, () и End Sub будут заданы самим Basic’ом.

Процедура события Form_Load выполняется каждый раз при запуске вашего приложения прежде, чем окно появится на экране. Поэтому бесполезно уже в этой процедуре что-либо писать в окне или рисовать (например Print), т. к. это просто не будет сделанно. Окна-то ещё нет!

Событие Click происходит в том случае, если на объекте кликнуть левой кнопкой мыши. Если, к примеру, пользователь щёлкнет на одном из элементов управления, событие Click этого объекта будет тут же исполнено. Можно кликнуть по форме — для этого имеется событие Form_Click, которое может содержать различные процедуры.

Это событие происходит при двойном клике мышкой на каком-либо объекте. Внимание: ещё при первом нажатии произойдёт событие Click, но при мнгновенном втором уже нет.

Это то свойство имеется у всех объектов. Оно определяет имя объекта, под которым этот объект будет применяться в Basic-содах. Это свойство может быть изменено только в режиме design и не в самой программе. Предустановки для этого свойства — это, например, «Form1» у окна. Если где-нибудь в программе нужно обратиться к этому объекту, к примеру, если надо поменять его свойство, то надо использовать имя этого объекта.

Это свойство имеется у окон, кнопок, «этикеток» и у могих других элемнтов управления. У окон это свойство задаёт текст, который будет отображён в заголовке этого окна. Этот текст отображается также в иконке окна в таскбаре. У элементов управления это свойство определяет текст, который находится на самих элементах управления или в близи них. Это свойство может быть изменено как в режиме design, так и в ходе самой программы.

Это свойство имеется у окон и всех элементов управления, кроме таймера (он всегда «невидим»). Это свойство определяет, видим или скрыт объект, и может быть изменено, как в режиме design, так и в ходе программы. Это свойство может принимать значения только True или False.

Это свойство присутсвует у всех окон и элементов управления. Оно определяет будет ли форма или элемент управления реагировать на события произведённые пользователем. Этим свойством они будут либо включены либо выключены. Если элементы управления будут выключены они станут серыми вместо чёрных и становятся неактивными, «потушенными». Это свойство также, как и свойство Visible принимает значения только True или False

Свойства Left, Top

Эти свойства имеются у окон и почти всех элементов управления. Они определяют координаты левого верхнего угла объекта. У окон это координаты относительно экрана, а у элементов управления относительно к верхнему левому углу «внутренней» площади, т. е. окна, в котором они находятся. В режиме design эти свойства могут быть изменены при перетягивании мышкой и в окне свойств. В ходе программы эти свойства могут быть изменены тоже, но уже путём присвоения.

Свойства Width, Height

Эти свойства определяют ширину и высоту объекта. Также Вы можете изменять их как в режиме design, так и в ходе программы. Размеры объекта изменяются тогда сразу.

Командные кнопки (button) применяются чаще всего и являются простейшими элементами управления: как правило — это такие серые ящички, на которых находится текст, как например, «OK» или «Отмена», и по которым просто кликают.

Таймер назван так правильно: он никакой не настоящий элемент управления и на окне невидим, если программа запущена. Всё, что он делает — это в через определённые отрезки времени выполняет какое-нибудь событие, событие Timer’a. Много таймеров применять не надо, т. к. в Windows’e постоянно имеется максимум 16 таймеров одновременно.

Текстовое поле и поле надписи

В текстовомм поле пользователь должен вводить текст, который потом может быть использован в программе, например его имя или очки игры. На экране видно ящичек, в котором, если на него кликнуть, появится курсор. Поле надписи (этикетка, Label) используется, чтобы показывать текст, который пользователь не может изменить.

Графическое поле отображает графику, которая была сохранена, как. bmp или. ico файл. При этом будет показана только часть картинки. которая, которая поместилась в размеры графического поля. Если написать процедуру для события Click, можно использовать графическое поле, как красивую кнопку.

Программа реализующаяриближенное решение систем линейных уравнений графическим способом, с подключением модуля “Метод Гаусса”.

Программаное обеспечение необходимое для функционирования программы:

Microsoft Visual Studio 2010

Windows Xp , Windows Vista , Windows 7

Visual Basic 2010.

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

Программа вычисляет корни одновременно только 2 уравнений, методом Гаусса, а так же графическим способом.

Описание логической структуры:

Технология визуального программирования. Визуальная технология программирования позволяет программисту легко и быстро легко и быстро строить нагшлядный графический интерфейс для своих программ на основе стандартного набора шаблонов, графически отображаемых на экране объектов.

Структура программы с описанием функций составных частей и связи между ними:

Этот блок программы отвечает за построение системы координат на форме. Первые 2 цикла это разметка по оси Х и по оси Y . Следующие 4 строки, это оси X и Y . И наконец оставшиеся 2 цикла это Засечки по осям координат.

Этот блок отвечает за ввод данных.

Решение поставленной задачи. Первые 4 строки нужны для построения прямых на графике. Остальное, это решение методом Гаусса.

Вывод корней, полученных методом Гаусса.

Построение прямых на графике.

Связи программы с другими программами:

Связи программы с другими программами отсутствуют.

Используемые технические характеристики:

Оперативная память: 2Гб;

Процессор: Intel Pentium 4, 3.00 Ггц;

Тип системы: 32 разрядная ОС;

Вызов и загрузка:

Запуск программы происходит через редактор Visual Studio 2010.

В пункте “Файл” нажимаем на “Открыть проект”, далее на жестком диске находим папку с названием SLAU , в ней находим файл SLAU . vbproj . Кликаем на него, после чего запускается программа.

В левом верхнем углу программы, есть несколько текстовых полей, под строкой “Введите коэффициенты при x ”. В эти текстовые поля нужно ввести коэффициенты при переменных, а так же свободные члены.

После нажатия на кнопку “Построить график”, в правом верхнем углу будет построен график. На это графике будут построены 2 прямые, точка пересечения которых и будет являться примерным решением системы линейных алгебраических уравнений, которые вы ввели в правом углу.

Внизу написаны 2 переменные x 1 и x 2, а так же их значения. Эти переменные были найдены с помощью метода Гаусса, и являются точным решением системы линейных алгебраических уравнений.

После нажмите на кнопку “Построить график”.

Рис3. Выполненная программа.

В ходе курсового проекта рассмотрен метод решения систем линейных уравнений графическим способом, а так же метод Гаусса решения систем линейных уравнений. Для достижения этой цели выполнена систематизация знаний и умений по теме «Решение систем линейных уравнений», применение графики в Visual Basic 2010. Язык программирования Visual Basic отлично подошел для выполнения данного проекта, так как среда разработки языка Visual Basic , включает в себя инструменты для визуального построения интерфейса.

Были выполнены все задачи, а именно:

Построение кода модуля с заданной функциональностью; отладка программных модулей с использованием специализированных программных средств; выполнено тестирование готовых программных модулей и составил отчетную документацию с использованием информационно-коммуникационные технологий.

В ходе работы над курсовым проектом я научился работать с графикой в Visual Basic , применил свои знания в области решения систем линейных уравнений графическим способом, а так же с помощью метода Гаусса.

Список использованной литературы

http://ru. wikipedia. org

http://www. /index. php? option=com_content&view=article&id=58:&catid=19&Itemid=50

Public Class Form1

Dim Graph1 As Graphics

Dim Pen1 As New Pen ( Color .Black, 2)

Dim Pen2 As New Pen ( Color .Black, 1)

Dim brush1 As New SolidBrush ( Color .Black)

Dim font1 As New Font ( «times new roman» , 7)

Dim X, Y, a1, a2, b1, b2, c1, c2, k1, k2, m1, m2, d, z1, z2, x1, y1 As Single

Private Sub Form1_Load( ByVal sender As System. Object , ByVal e As System. EventArgs ) Handles MyBase .Load

Label1.Text = «Введите коэфициенты при х»

Button1.Text = » Построить граффик «

Private Sub Button1_Click( ByVal sender As System. Object , ByVal e As System. EventArgs ) Handles Button1.Click

Graph1 = Me .PictureBox1.CreateGraphics()

For X = -15 To 15 Step 3

Graph1.DrawString(X, font1, brush1, X * 10 + 150, 150)

For Y = -15 To 150 Step 3

Graph1.DrawString(Y, font1, brush1, 150, 150 — Y * 10)

Блог инженера-программиста / шапку скоро поменяю /

Решение системы линейных уравнений методом Гаусса в MS Excel

Автор Инженер

На днях понадобилось найти корни системы линейных уравнений методом Гаусса в Microsoft Excel. Готовый алгоритм решения можно найти в книге Гарнаева «Использование Excel и VBA в экономике и финансах», но объяснение там очень скудное и не совсем понятное. Постараюсь описать подробней для тех, кому может понадобиться этот алгоритм.

Лирическое отступление: в тексте будет предлагаться ввести в диапазон ячеек формулу вида: <=A1:B3+$C$2:$C$3>и т.п., это так-называемые «формулы массива» (формула, выполняющая несколько вычислений над одним или несколькими наборами значений, а затем возвращающая один или несколько результатов. Формулы массива заключены в фигурные скобки < >). Microsoft Excel автоматически заключает ее в фигурные скобки ( < >). Для введения такого типа формул необходимо выделить весь диапазон, куда нужно вставить формулу, в первой ячейке ввести формулу без фигурных скобок (для примера выше — =A1:B3+$C$2:$C$3 ) и нажать Ctrl+Shift+Enter .

Пускай имеем систему линейных уравнений:

1. Запишем коэффициенты системы уравнений в ячейки A1:D4 а столбец свободных членов в ячейки E1:E4 . Если в ячейке A1 находится 0, необходимо поменять строки местами так, чтоб в этой ячейке было отличное от ноля значение. Для большей наглядности можно добавить заливку ячеек, в которых находятся свободные члены. (скриншот)

2. Необходимо коэффициент при x1 во всех уравнениях кроме первого привести к 0. Для начала сделаем это для второго уравнения. Скопируем первую строку в ячейки A6:E6 без изменений, в ячейки A7:E7 необходимо ввести формулу: <=A2:E2-$A$1:$E$1*(A2/$A$1)>. Таким образом мы от второй строки отнимаем первую, умноженную на A2/$A$1, т.е. отношение первых коэффициентов второго и первого уравнения. Для удобства заполнения строк 8 и 9 ссылки на ячейки первой строки необходимо использовать абсолютные (используем символ $). (скриншот)

3. Копируем введенную формулу формулу в строки 8 и 9, таким образом избавляемся от коэффициентов перед x1 во всех уравнениях кроме первого. (скриншот)

4. Теперь приведем коэффициенты перед x2 в третьем и четвертом уравнении к 0. Для этого скопируем полученные 6-ю и 7-ю строки (только значения) в строки 11 и 12, а в ячейки A13:E13 введем формулу <=A8:E8-$A$7:$E$7*(B8/$B$7)>, которую затем скопируем в ячейки A14:E14 . Таким образом реализуется разность строк 8 и 7, умноженных на коэффициент B8/$B$7 . Не забываем проводить перестановку строк, чтоб избавиться от 0 в знаменателе дроби. (скриншот)

5. Осталось привести коэффициент при x3 в четвертом уравнении к 0, для этого вновь проделаем аналогичные действия: скопируем полученные 11, 12 и 13-ю строки (только значения) в строки 16-18, а в ячейки A19:E19 введем формулу <=A14:E14-$A$13:$E$13*(C14/$C$13)>. Таким образом реализуется разность строк 14 и 13, умноженных на коэффициент C14/$C$13 . Не забываем проводить перестановку строк, чтоб избавиться от 0 в знаменателе дроби. (скриншот)

6. Прямая прогонка методом Гаусса завершена. Обратную прогонку начнем с последней строки полученной матрицы. Необходимо все элементы последней строки разделить на коэффициент при x4. Для этого в строку 24 введем формулу <=A19:E19/D19>. (скриншот)

7. Приведем все строки к подобному виду, для этого заполним строки 23, 22, 21 следующими формулами:
23: <=(A18:E18-A24:E24*D18)/C18>— отнимаем от третьей строки четвертую умноженную на коэффициент при x4 третьей строки.
22: <=(A17:E17-A23:E23*C17-A24:E24*D17)/B17>— от второй строки отнимаем третью и четвертую, умноженные на соответствующие коэффициенты.
21: <=(A16:E16-A22:E22*B16-A23:E23*C16-A24:E24*D16)/A16>— от первой строки отнимаем вторую, третью и четвертую, умноженные на соответствующие коэффициенты.
Результат (корни уравнения) вычислены в ячейках E21:E24 . (скриншот)

UPDATE от 25 апреля 2012 г. Выкладываю xls-файл с решением линейных уравнений методом Гаусса в Microsoft Excel: Показать ссылку

Решение систем уравнений в среде Microsoft Excel

обучающие:

  • повторение и закрепление знаний учащихся правил записи арифметических выражений и формул в электронных таблицах;
  • повторение алгоритма решения систем уравнений;
  • формирование знаний и умений в решении систем уравнений, используя возможности электронных таблиц;

развивающие:

  • формирование умений анализировать, выделять главное, сравнивать, строить аналогии;

воспитывающие:

  • осуществление эстетического воспитания;
  • воспитание аккуратности, добросовестности.

Тип урока: урок закрепления изученного материала и объяснения нового.

ХОД УРОКА

I. Организационная часть.

Здравствуйте! Все мы знаем, что одну и ту же информацию можно закодировать любым способом. Перед вами набор чисел. Известно, что каждому числу ставится в соответствие буква в русском алфавите. Расшифруйте эту информацию, кто быстрее!

Ответ: “Знание – сила!”

Молодцы! А знаете, кому принадлежит это выражение? (Если нет, то один ученик ищет ответ в Интернете. Остальные отвечают на вопросы: Для чего предназначена программа Excel? (Программа Excel предназначена для хранения и обработки данных, представленных в табличном виде) Что собой представляет документ в Excel? (Каждый документ в Excel представляет собой набор таблиц – рабочую книгу, которая состоит из одного или многих рабочих листов) Какая функция используется для подсчета суммы чисел? (Функция СУММ). Как определить адрес ячейки? (Excel вводит номера ячеек автоматически. Адрес ячейки составляется как объединение номеров столбца и строки без пробела между ними)

Выражение английского философа Френсиса Бэкона “Знание – сила!” и будет эпиграфом к нашему уроку. («Нравственные и политические очерки», 1597).

II. Повторение пройденного материала.

Мы уже знакомы с программой Microsoft Excel, умеем записывать арифметические выражения и различные формулы, находить значения арифметических выражений и построить графики функций. Чтобы проверить выполнение домашнего задания, предлагаю каждому пройти тестирование. (Приложение 1)

Хорошо, все справились и каждому поставим соответствующие оценки в журнал. А давайте устроим путешествие в математику и вспомним, что мы понимаем под понятием: “Решить систему уравнений”? (Найти такие значения х и у, которые будут удовлетворять и первое уравнение и второе). Какие способы существуют для решения систем уравнений (метод подстановки, метод сложения и графический способ). Сегодня мы с вами научимся решать системы уравнений, используя возможности электронных таблиц.

III. Объяснение нового.

А. Решим систему графическим способом. Преобразуем данную систему . Для решения воспользуемся диаграммой, на которой отобразим графики обеих функций. Заполняем столбец А: заполняем ячейки А2:А22 числами от -5 до 5 с шагом 0,5. (в ячейку А2 заносим число -5, в ячейку А3 – число -4,5, выделяем ячейки А2 и А3, установим курсор мыши на правый нижний угол рамки (указатель примет форму черного крестика) и растягиваем рамку вниз, пока последнее значение не станет равным 5). При заполнении столбца В в ячейку В2 заносим формулу =А2*А2, которую затем копируем до ячейки В22. (протянем формулу за правый нижний угол). При заполнении столбца С в ячейку С2 заносим формулу =1-2*А2, копируем ее до ячейки С22. Выделим блок с данными, с помощью Мастера диаграмм выберем тип диаграммы Точечная и построим графики функций. Координаты точек пересечения графиков – решения системы.

Получены приближенные значения решений. Чем меньше шаг, тем точнее значение координат точек пересечения.

Запишем алгоритм решения систем уравнений графическим способом:

1. Преобразовать систему уравнений, если это необходимо.

2. Задать начальные значения для Х.

3. Найти значение первой функции при заданных Х.

4. Найти значение второй функции при тех же Х.

5. Выделить блок с данными и построить графики функций, используя точечный тип диаграммы.

6. Решение системы — точка пересечения графиков функций.

7. Для нахождения координат точек пересечения с заданной точностью построить новый график на том отрезке, где находится решение, с шагом, равным значению точности.

Б. Решить систему уравнений . Занесем в электронную таблицу исходные данные и расчетные формулы следующим образом:.

Для решения системы уравнений воспользуемся надстройкой Поиск решения, которая запускается через Сервис (-Надстройки) и заполним диалоговое окно следующим образом:

При нажатии на кнопку Выполнить происходит решение системы уравнений и в ячейках B3 и B4 высвечивается результат.

Запишем примерный алгоритм решения системы уравнений, используя Поиск решения

1. Преобразовать систему уравнений, если это необходимо

2. Записать исходные данные (в ячейку А1 ввести текст “Решите уравнение”, в ячейку В1 записать первое уравнение, в ячейку В2 второе уравнение, в ячейку А3 ввести текст “Х=”, в ячейку А4 “Y=”, в ячейку А5 “уравнение 1”, в ячейку А6 “уравнение 2”. В ячейке B3 хотим получить значение Х, в ячейке В4 – значение Y, их оставляем пустыми.

3. В ячейку В5 переписать уравнение 1, используя правило записи арифметических выражений, следующим образом: в левой части вместо Х указывать ячейку В3, вместо Y ячейку В4, правую часть отбросить. Таким же образом переписать левую часть второго уравнения в ячейку В6.

4. Выбрать команду Сервис – Поиск решения.

5. Установить целевую ячейку — ту ячейку, в которой содержится формула, например, В5 и задать значение, равное значению правой части первого уравнения

6. В поле “изменяя ячейки” указать ячейки, в которых хотим увидеть ответ (В3 и В4)

7. Вести ограничение $B$6 = -3. Для этого щелкнуть на кнопке Добавить и в полученном окне установить реквизиты следующим образом: в поле Ссылка на ячейку указать ячейку, в которой записана левая часть другого уравнения, в другом поле выбрать знак “=”, в третьем ввести число, равное значению правой части. Закрыть окно Добавить ограничение, щелкнув кнопкой ОК

8. Решить систему уравнений, щелкнув кнопкой Выполнить

IV. Практическая работа на компьютере.

А. Решите систему уравнений графическим способом

Б. Решите систему уравнения, воспользовавшись командой Поиск решения:

А. Решите систему уравнений графическим способом

Б. Решите систему уравнения, воспользовавшись командой Поиск решения:

V. Подведение итогов.

Повторить алгоритмы решения систем уравнений

Выставить оценки за тестирование в журнал

VI. Домашнее задание.

Решить рациональным способом системы уравнений:

;

источники:

http://otadmina.ru/reshenie-sistem-uravneniy-metodom-gaussa/

http://urok.1sept.ru/articles/510787

Решение систем линейных уравнений, умножение и обращение матриц

Задачи, перечисленные в заголовке, возникают достаточно часто в различных сферах деятельности, требующих применения математического аппарата. По этой причине в библиотеке Excel есть встроенные функции, позволяющие решить эти задачи. О встроенных функциях умножения матриц МУМНОЖ (MMULT) и транспонирования матриц МТРАНСП (MTRANSP) я уже упоминал, есть и функция для нахождения обратной матрицы — МОБРАТ (MINVERSE). Зная обратную матрицу и умея умножать матрицы, найти решение системы уравнений не представляет труда. Но поскольку умение решать эти задачи входит в круг начального образования программиста, то я полагаю уместным рассмотреть создание собственных аналогов этих функций на VBA. Заодно это позволит рассмотреть некоторые важные моменты в создании пользовательских функций, вызываемых в формулах рабочего листа. Многое мы уже знаем. Знаем, как написать пользовательскую функцию, какие ограничения накладываются на ее параметры с тем, чтобы ее можно было вызывать из
формул рабочего листа Excel, передавая ей в качестве фактических параметров массивы рабочего листа. Знаем, как анализировать тип переданных данных. Знаем, как такая функция может вернуть массив и изменить содержимое рабочего листа. В последующих примерах я еще раз коснусь всех этих вопросов, а, кроме того, появятся и другие вопросы, на которые стоит обратить внимание.

Задача 11 Произведение матриц

Постановка задачи: Найти произведение прямоугольных матриц A*B

Из того, что мы узнали ранее, следует, какой вид может иметь заголовок пользовательской функции, решающей эту задачу. Два входных параметра функции должны быть типа Variant. Этот же тип должен быть у возвращаемого функцией значения. Конечно, это не единственно возможное решение. Можно было бы иметь один входной параметр, используя спецификатор ParamArray. Такой способ был бы единственно возможным, если обобщить постановку и попытаться создать функцию, которая должна перемножать произвольное число матриц. Но при умножении двух матриц естественнее иметь и два соответствующих им параметра. Поэтому заголовок получился таким:

Function MultMatr(A As Variant, B As Variant) As Variant

Я хочу показать Вам, как написать общую функцию, достаточно широкого назначения. Ее можно будет вызывать в формулах над массивами рабочего листа, передавая ей в качестве фактических параметров A и B массивы рабочего листа (объекты Range ). Но не только объекты Range, но и массивы констант будут допускаться в качестве одного или обоих аргументов. Результат работы функции будет записан в массив, выделенный в момент вызова формулы над массивами. Более того, я хочу, чтобы эту же функцию можно было вызывать в обычных функциях и процедурах VBA, передавая в момент вызова массивы VBA в качестве аргументов. Все это, естественно, утяжелит нашу функцию, но позволит мне обсудить отличия «обычных» и «пользовательских функций. С учетом этих замечаний наша функция выглядит так:

Public Function MultMatr(A As Variant, B As Variant) As Variant
	'Умножение матриц.
	'Эта функция может вызываться в формулах рабочего листа Excel.
	'В этом случае входные параметры являются объектами Range.
	'Функцию можно также вызывать в обычных VBA функциях и процедурах,
	'передавая ей в качестве параметров массивы VBA.

	Dim AB() As Variant
	Dim i As Integer, j As Integer, k As Integer
	Dim N As Integer, M As Integer, P As Integer, Q As Integer
	Dim Correct As Boolean
	Dim msg1 As String, msg2 As String
	Dim Elem As Variant
	Correct = True

	'Определение размерностей матриц
	If TypeName(A) = "Range" Then
		N = A.Rows.Count: M = A.Columns.Count
	ElseIf TypeName(A) = "Variant()" Then
		N = UBound(A, 1): M = UBound(A, 2)
	Else: Correct = False
	End If
	If TypeName(B) = "Range" Then
		P = B.Rows.Count: Q = B.Columns.Count
	ElseIf TypeName(A) = "Variant()" Then
		P = UBound(B, 1): Q = UBound(B, 2)
	Else: Correct = False
	End If
	'Проверка корректности задания размерности
	If Correct And (P = M) Then
		'Размерность задана корректно
		ReDim AB(1 To N, 1 To Q)
		'Построение произведения матриц AB =A*B
		For i = 1 To N
		For j = 1 To Q
			Elem = 0
			For k = 1 To M
				Elem = Elem + A(i, k) * B(k, j)
			Next k
			AB(i, j) = Elem
		Next j
		Next i
		MultMatr = AB
	Else
		'Некорректно заданы аргументы или размерность
		If Not Correct Then
			msg2 = " При вызове MultMatr некорректно заданы аргументы!" _
			& vbCrLf & "По крайней мере, один из них не является" _
			& vbCrLf & "ни массивом, ни объектом Range"
			MsgBox (msg2)
		Else
			msg1 = " При вызове MultMatr некорректно задана размерность" _
			& " перемножаемых матриц!" & vbCrLf & _
			"Число столбцов в первом сомножителе = " & M & vbCrLf & _
			"Число строк второго сомножителя = " & P
			MsgBox (msg1)
		End If
	End If
End Function

Сделаем несколько замечаний.

  • Из-за того, что фактические параметры могут иметь разную природу, приходится анализировать тип параметра, используя уже упоминавшуюся функцию TypeName.
  • В зависимости от того, массивом или объектом Range является параметр, по-разному определяются границы массивов.
  • Если хотя бы один из аргументов не принадлежит ни одному из перечисленных типов, вычисления прерываются с выдачей предупреждающего сообщения.
  • Еще одна проверка, которую я счел обязательной, — проверка на корректность задания размеров перемножаемых матриц. Конечный пользователь может легко ошибиться и не соблюсти обязательное требование при умножении матриц: «число столбцов матрицы A должно совпадать с числом строк матрицы B «. В этом случае результат не будет получен, и будет выдано предупреждающее сообщение. Если же пользователь неверно выделит область памяти под результирующую матрицу, вычисления будут идти. Правда, если эта область урезана по отношению к требуемой, часть результатов будет потеряна. Если же область выделена с избытком, выводятся «лишние» результаты, полученные путем копирования.
  • Заметьте, сам процесс вычисления результирующей матрицы выполняется одинаково для обоих типов аргументов.
  • Результат получается в динамическом массиве, который на последнем шаге работы и становится значением функции.
  • Функцию MultMatr я использовал двояко, — вызывая ее в формулах над массивами в рабочем листе Excel и в обычной процедуре VBA, когда мне понадобилось получить произведение двух матриц, представленных обычными массивами VBA.

Взгляните, как выглядят результаты некоторых экспериментов по умножению матриц на рабочем листе Excel:

На рабочем листе я расположил три матрицы разной размерности и дал им имена MatrA, MatrB и MatrC соответственно. Затем, вызывая MultMatr, я получил произведения MatrA*MatrB и MatrB*MatrC, — все выполнилось корректно. Попытка использовать MultMatr для умножения массива констант на матрицу — {1,2; 2,3}*MatrC закончилась неуспехом, поскольку, как я говорил ранее, для массивов констант некорректно работает функция Ubound. При попытке умножения MatrA*MatrC, как и положено, выдалось предупреждающее сообщение о несоблюдении правила размерности перемножаемых матриц.

«Пользовательские» и «обычные» функции VBA

Под пользовательской функцией VBA я понимаю функцию, которая может быть вызвана в формулах рабочего листа Excel. Обычные функции VBA могут вызываться в функциях и процедурах VBA. Возникает естественный вопрос, может ли одна и та же функция одновременно быть пользовательской и обычной? Этот же вопрос может быть сформулирован и по-другому, есть ли особая специфика в пользовательских функциях? Ответ прост — особой специфики нет, и одна и та же функция может вызываться как в формулах, так и в процедурах VBA. Практически не возникает проблем, когда аргументами функции и результатом являются скалярные значения. Когда же, как в случае с MultMatr, аргументами и результатом являются массивы, то возникают определенные трудности. Эти трудности преодолимы, примером тому служит функция MultMatr. Попробуем разобраться, в чем состоят эти трудности. Когда функции нужно предать массив, то в пользовательских функциях при вызове им передаются объекты Range, обычным функциям — пер
еменные, описанные, как массивы VBA. Поэтому для обеспечения универсального характера функции в ее теле необходимо производить разбор случаев, определяя тип параметра. В результате растет объем функции, а, следовательно, усложняется ее понимание. Еще одна сложность связана с результатом вычислений. Никаких проблем нет для формулы над массивами, вызывающей пользовательскую функцию, — результат, записывается в область, выделенную при вызове формулы. Обычные функции VBA, как правило, не возвращают массив в качестве результата. Если результатом работы является массив, то при программировании на VBA создается процедура, а не функция. Дело в том, что в VBA присваивания над массивами запрещены, потому просто невозможно присвоить массиву значение обычной функции, возвращающей массив в качестве своего результата. Как же, спросите Вы, MultMatr может использоваться в качестве обычной функции? Только за счет маленьких хитростей и универсального типа Variant, который может быть чем угодно, в том числе и массивом. При вызове MultMatr как обычной функции в процедуре VBA результат вызова присваивается переменной типа Variant, — это допустимо. Затем уже с этой переменной можно работать как с массивом, — это тоже допустимо, что я и продемонстрирую чуть позже. Таким образом, всегда можно написать функцию так, чтобы она служила и как пользовательская и как обычная функция. Другой вопрос, стоит ли это делать. В таком обобщении есть свой резон, поскольку в таких случаях при вызове пользовательской функции ей можно передавать в качестве аргументов не только объекты Range, но и массивы констант, что было продемонстрировано при рассмотрении функции IsMedianaForAll. Заметьте, однако, что в функцию MultMatr передать массивы констант невозможно. Причина этого в том, что для двумерных массивов констант функции UBound и LBound работают некорректно.

Подводя итог, замечу, что, когда приходится работать с массивами, разумнее иметь два варианта — пользовательскую и обычную функцию. Чтобы отчетливее продемонстрировать разницу между обычными и пользовательскими функциями, я написал обычную процедуру MultMatr1, выполняющую умножение матриц. Вот ее текст:

Public Sub MultMatr1(A() As Variant, B() As Variant, C() As Variant)
	'Умножение матриц.
	'Процедуру можно вызывать в обычных VBA функциях и процедурах,
	'передавая ей в качестве параметров массивы VBA.
	Dim i As Integer, j As Integer, k As Integer
	Dim N As Integer, M As Integer, Q As Integer
	Dim P As Integer, NC As Integer, PC As Integer
	Dim msg1 As String, msg2 As String
	Dim Uncor1 As Boolean, Uncor2 As Boolean
	Dim Elem As Variant
	Uncor1 = True: Uncor2 = True
	msg1 = " При вызове MultMatr некорректно задана размерность" _
		& " перемножаемых матриц!" & vbCrLf & _
		"Число столбцов матрицы A = " & M & vbCrLf & _
		"Число строк матрицы B = " & Q
	msg2 = " При вызове MultMatr некорректно задана размерность" _
		& " матрицы результата!" & vbCrLf & _
		"Число строк матрицы C = " & NC & vbCrLf & _
		"Число столбцов матрицы C = " & PC
	
	'Проверка корректности задания размерности
	N = UBound(A, 1): M = UBound(A, 2)
	Q = UBound(B, 1): P = UBound(B, 2)
	NC = UBound(C, 1): PC = UBound(C, 2)
	If (Q = M) Then
		'Размерность исходных матриц задана корректно
		Uncor1 = False
		If NC = N And PC = P Then
			'Размерность результата задана корректно
			Uncor2 = False
			'Построение произведения матриц AB =A*B
			For i = 1 To N
			For j = 1 To P
				Elem = 0
				For k = 1 To M
					Elem = Elem + A(i, k) * B(k, j)
				Next k
				C(i, j) = Elem
			Next j
			Next i
	Else
		'некорректно задана размерность
		If Uncor1 Then MsgBox (msg1)
		If Uncor2 Then MsgBox (msg2)
	End If
	End If
End Sub

От функции MultMatr она отличается тем, что в ней опущен разбор случаев и проводится более тщательная проверка корректности размерностей аргументов. Конечно, она ни в коем случае не может быть использована как пользовательская функция, но зато работать с ней в процедурах и функциях VBA с ней не то чтобы проще, но естественнее. Чтобы почувствовать разницу, я продемонстрирую тестовую процедуру, в которой вызываются, как функция MultMatr так и процедура MultMatr1.

Public Sub MultTest()
	Dim A(1 To 2, 1 To 2) As Variant
	Dim B(1 To 2, 1 To 2) As Variant
	Dim C(1 To 2, 1 To 2) As Variant
	Dim C1 As Variant
	Dim item As Variant
	Dim i As Integer, j As Integer
	A(1, 1) = 1: A(1, 2) = 2: A(2, 1) = 3: A(2, 2) = 4
	B(1, 1) = 1: B(1, 2) = 2: B(2, 1) = 3: B(2, 2) = 4
	'Переменной типа Variant присваивается массив
	C1 = MultMatr(A, B)
	For i = 1 To UBound(C1, 1)
		For j = 1 To UBound(C1, 2)
			Debug.Print C1(i, j)
		Next j
	Next i
	'Здесь С - массив и работаем с ним, как с массивом.
	Call MultMatr1(A, B, C)
	For i = 1 To UBound(C, 1)
		For j = 1 To UBound(C1, 2)
			Debug.Print C(i, j)
		Next j
	Next i
	'Вызов тестовой функции, возвращающей массив.
	C1 = ResArray(A)
	For Each item In C1
		Debug.Print item
	Next item
End Sub

Public Function ResArray(A() As Variant) As Variant
	'Возвращает в качестве результата,
	'переданный ей массив
	ResArray = A
End Function

Как видите, функция MultMatr, успешно работающая в роли пользовательской функции, с тем же успехом может выполнять и роль обычной функции. Так что я выполнил поставленную задачу, создав «универсальную» функцию. Но, возможно, предпочтительнее в процедурах VBA работать с MultMatr1, не прибегая к переменным типа Variant. Обратите внимание на небольшую тестовую функцию ResArray, которую я написал, чтобы в явной форме продемонстрировать способ возвращения массива в функциях VBA.

Annastasia

0 / 0 / 0

Регистрация: 05.05.2013

Сообщений: 7

1

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

19.05.2013, 22:07. Показов 17663. Ответов 5

Метки нет (Все метки)


Студворк — интернет-сервис помощи студентам

Доброго времени суток всем.
Дана система уравнений и некоторые указания в методичке, по образцу надо построить решение. Но на определенном этапе у меня просто вылазит ошибка и почему — я просто не могу понять.
Люди добрые, кто-нибудь помогите блондинке-гуманитарию довести до логического конца это измывательство над мозгом!
*Файл docm не прикрепляется.

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
Private Sub CommandButton1_Click()
Dim x0 As Single, xk As Single, h As Single, _
    x As Single, y1 As Single, y2 As Single
x0 = Val(TextBox3.Text): xk = Val(TextBox4.Text)
h = Val(TextBox5.Text)
For x = x0 To xk + h / 2 Step h
If x >= 0 Then y1 = E ^ (-2 * 3.1415926 * x * (Sqr(x ^ 2 + 1.2)))
If x < 0 Then y2 = 13 * x ^ 4 - ln * Abs(Tan(x / 2))
    ListBox1.AddItem x: ListBox2.AddItem y
Next x
End Sub

Это был мой код для кнопки «расчет».
Ошибка идет на ListBox.Сил нет — не понимаю, почему.
В прикреплениях часть методички.
Спасибо заранее, кто откликнется.

Миниатюры

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



0



Pro_grammer

6792 / 2814 / 527

Регистрация: 24.04.2011

Сообщений: 5,308

Записей в блоге: 10

19.05.2013, 22:34

2

Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Хотелось бы увидеть Вашу форму, а не просто код. Названия контролов меня наталкивают на мысль, что вы используете не VB6!
В VB6 это выглядит так ( рабочий вариант!)

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Private Sub Command1_Click()
Dim x0 As Single, xk As Single, h As Single, _
    x As Single, y1 As Single, y2 As Single
x0 = Val(Text1.Text): xk = Val(Text2.Text)
h = Val(Text3.Text)
 
For x = x0 To xk + h / 2 Step h
  If x >= 0 Then y = 2.718 ^ (-2 * 3.1415926 * x * (Sqr(x ^ 2 + 1.2)))
  If x < 0 Then y = 13 * x ^ 4 - ln * Abs(Tan(x / 2))
    List1.AddItem Str(x): List2.AddItem Str(y)
    
Next x
 
End Sub



1



0 / 0 / 0

Регистрация: 05.05.2013

Сообщений: 7

19.05.2013, 23:30

 [ТС]

3

Спасибо большое за ответ!
Если писать кристально честно: я понятия не имею, какая версия Basic у меня. Я полный ноль в этом вопросе: потому что нам что показали на всех трех семинарах — горячие клавиши запуска VB.
Сделала скрины того, что получается сейчас и скрин формы.



0



Эксперт WindowsАвтор FAQ

17993 / 7619 / 890

Регистрация: 25.12.2011

Сообщений: 11,352

Записей в блоге: 17

20.05.2013, 01:41

4

Annastasia, да, это Вы создали форму в VBA офиса.
На счет VB — отправил информацию Вам в личку.



1



Pro_grammer

6792 / 2814 / 527

Регистрация: 24.04.2011

Сообщений: 5,308

Записей в блоге: 10

20.05.2013, 06:58

5

Цитата
Сообщение от Annastasia
Посмотреть сообщение

Сделала скрины того, что получается сейчас и скрин формы.

У вас код будет работать в Word VBA!
Только чуть внимательнее отнеситесь к названию компонентов на форме. Сейчас у вас ошибка в том, что
у вас нет List1, но есть ListBox1:

Visual Basic
1
 ListBox1.AddItem Str(x): ListBox2.AddItem Str(y)

Больше ошибок нет.



2



0 / 0 / 0

Регистрация: 05.05.2013

Сообщений: 7

20.05.2013, 20:47

 [ТС]

6

Pro_grammer,
Dragokas,
Спасибо вам огромнющее! Такая радость — наконец все заработало. =)



0



ГЛАВНАЯ

ТРЕНИНГИ

   Быстрый старт
   Расширенный Excel
   Мастер Формул
   Прогнозирование
   Визуализация
   Макросы на VBA

КНИГИ

   Готовые решения
   Мастер Формул
   Скульптор данных

ВИДЕОУРОКИ

ПРИЕМЫ

   Бизнес-анализ
   Выпадающие списки
   Даты и время
   Диаграммы
   Диапазоны
   Дубликаты
   Защита данных
   Интернет, email
   Книги, листы
   Макросы
   Сводные таблицы
   Текст
   Форматирование
   Функции
   Всякое
PLEX

   Коротко
   Подробно
   Версии
   Вопрос-Ответ
   Скачать
   Купить

ПРОЕКТЫ

ОНЛАЙН-КУРСЫ

ФОРУМ

   Excel
   Работа
   PLEX

© Николай Павлов, Planetaexcel, 2006-2022
info@planetaexcel.ru


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

Техническая поддержка сайта

ООО «Планета Эксел»

ИНН 7735603520


ОГРН 1147746834949
        ИП Павлов Николай Владимирович
        ИНН 633015842586
        ОГРНИП 310633031600071 

Решить
систему линейных уравнений вида АХ=В

Для
простоты примем, что количество уравнений
не будет более девяти. Элементы матриц
А
я В заполним
случайными веществен­ными числами.
Тогда, очевидно, матрица А
не
будет вырождена. Чтобы получить
неизвестные переменные вектора X,
необходимо преобразовать систему к
следующему виду: Х=АЛВ,
то
есть получить обратную матрицу А,
а
затем умножить ее на вектор В.

Класс
WorkSheetFunction
содержит следующие функции для работы
с матрицами: ММи1т.(ЛД) — осуществляет
перемножение матриц А
к В, MInverse(4)
— находит обратную (А’)
матрицу, Transposed)
— осуществляет транспонирование (Аг)
матрицы,
MDeterm(/l)

вычисляет определитель матрицы.

Private
Sub Form_Load()

Caption
= «Работа
с
матрицами»

CommandlCaption
= «Решить
АХ=В»

Textl
=»»

Text2
=»»

Text3
=»»

End
Sub

Private
Sub Command1_Click()

Dim
a(10, 10) As Double, b(10) As Double, s As String, p As Double Dim
ObjExcel As Object

Set
ObjExcel
= CreateObjectfExcel.
Application»)
‘Создать объект COM
n%
= 1при1Вох(«Введите порядок системы
ЛУ, не более 9») ‘Задаем свойства рабочей
книги и листа

With
ObjExcel

.WorkBooks.Add
‘Создать
Книгу

.ActiveSheet.Name
= «Матрицы»
‘Присвоить
имя
для
листа
— Матрицы
.Visible = False ‘Сделать
Excel невидимым

.DisplayAlerts
= False
‘Запретить отображение окна
сохранения

End
With

For
i%
= 1 To
n
‘Циклы формирования элементов
матриц и

For
j%
= 1 То п ‘отображения их в ячейках
Листа (свойство Cells)

a(i,j)
= Rnd*10 + 1

s
= s + Format(a(i, j), «#0.000») + vbTab

ObjExcel.Cells(i,
j) = a(i, j) Next j

s
= s
+ vbCrLf

Next
i

Textl
= s
‘Отображение элементов матрицы
А в поле Textl

s
=»»

For
i% = 1 To n

b(i)
= Rnd*10 + 1

s
= s + Format(b(i), «#0.000») + vbCrLf

ObjExcel.Cells(i,
10) = b(i) Next i

‘Отображение
элементов матрицы В в поле Text3
Text3
= s
With
ObjExcel

‘Выводим
элементы вектора X,
начиная с ячейки А10 и вниз.

‘Объект
Range
задает диапазон ячеек, а его свойство
Cells
— адрес

‘ячейки
в формате R1C1
(то есть: R-row,
С -column).
Свойство Value

‘устанавливает
или возвращает значение в ячейках
диапазона. .Range(.Cells(10,
1), .Cells(9 + n, 1)).Value = .MMult(.MInverse(.Range _

(.Cells(1,
1), ,Cells(n, n))), .Range(.Cells(1, 10), .Cells(n, 10))) End With s
=»» For i% = 1 To n

‘В
цикле
считываем
значения
из
ячеек
и
помещаем
их
в
строку
р
= ObjExcel.Cells(10 + i -1, 1).Value s = s + Format(p, «#0.000»)
+ vbCrLf Next i

‘Отображение
элементов
вектора
X в
поле
Text2 Text2 = s ObjExcel.Quit Set ObjExcel = Nothing End Sub

43. Свойства объекта Range объектной модели ms Excel.

Свойство

Описание

Value

Возвращает
(помещает) значение из ячейки или в
ячейки диапазона. В примере
x=Range(“C1”).Value
присваивается значение в переменную
x
из ячейки C1,
а в примере Range(“A1:B2”).Value=1
в диапазон вводится 1

Name

Возвращает
(вводит) имя диапазона. В следующем
примере Range(“A1:B2”).Name=”Итоги”
диапазону “A1:B2”
присваивается имя ”Итоги”

Count

Возвращает число
объектов в наборе. В примере переменной
x
присваивается значение, равное числу
строк диапазона A1:B2 : x=Range(“A1:B2”).Rows.Count

CurrentRegion

Возвращает число
строк текущего диапазона, ограниченного
пустыми строками и столбцами и
содержащего ячейку. В следующем примере
переменной n
присваивается значение, равное числу
строк в текущем диапазоне, содержащем
ячейку A1: n=Range(“A1”).CurrentRegion.Rows.Count

Formula

Возвращает
(вводит) формулу в формате A1. Например,
в ячейку C2 введена формула =A4+B5:
Range(“C2”).Formula=”=A4+B5”

FormulaArray

Возвращает
(вводит) формулу диапазона в формате
A1. В отличие от обыкновенной формулы
рабочего листа, формула диапазона
вводится на листе не посредством
нажатия на клавишу Enter,
а с помощью комбинации клавиш
Ctrl+Shift+Enter.
Например,
в
диапазон
E1:E3 введена
формула
{=Sum(A1:A3* A1:A3)} : Range(“E1:E3”).FormulaArray=”=Sum(A1:A3*
A1:A3)”

FormulaR1C1

Возвращает
(вводит) формулу в формате R1C1.
Например,
Range(“B2”).FormulaR1C1=”=sin(R3C2)”

Text

Возвращает
содержимое диапазона в текстовом
формате

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]

  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #

Инфоурок


Другое

Другие методич. материалыПрактическая работа по дисциплине «Численные методы». Метод Гаусса

Практическая работа по дисциплине «Численные методы». Метод Гаусса

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

    Если Вы считаете, что материал нарушает авторские права либо по каким-то другим причинам должен быть удален с
    сайта, Вы можете оставить жалобу на материал.

    Удалить материал

  • Басова Валентина Ивановна

    • На сайте: 7 лет и 3 месяца
    • Подписчики: 2
    • Всего просмотров: 51864
    • Всего материалов:

      21

Like this post? Please share to your friends:
  • Решение системы уравнений excel функция если
  • Решение систем с двумя переменными в excel
  • Решение системы линейных уравнений онлайн excel
  • Решение систем нелинейных уравнений методом ньютона excel
  • Решение системы линейных уравнений методом простых итераций в excel