Лекция: Пример вычисления корня нелинейного уравнения с использованием объектной модели MS Excel.
метод GoalSeek() позволяет применить автоподбор значений для функции Excel программным способом. На графическом экране то же самое можно сделать при помощи меню Сервис -> Подбор параметра.
Подбирает значение параметра (неизвестной величины), являющееся решением уравнения (ур-я) с одной переменной. Предполагается, что правая часть явл-ся постоянной, не зависящей от парамета, кот. Входит только в лев.часть ур-я. Имеет два параметра: goal – значение правой части ур-я; changingcell содержит ссылку на ячейку с изменяющимся значением (приближение к искомому корню).
Пример. (С помощью метода «Подбор параметра» определить корень нелинейного уравнения.)
Private Sub Command1_Click()
Dim Eque As String, bool As String, Approx As Double
Dim ObjExcel As Object
'Создаем объект OLE Automation
Set ObjExcel = CreateObject(«Excel.Application»)
'Задаем свойства рабочей книги и листа
With ObjExcel
.WorkBooks.Add
.ActiveSheet.Name = «Решение нелинейных уравнений»
.Visible = False
.DisplayAlerts = False 'Запретить промежуточные диалоги
.MaxIterations = 10000 'Число итераций
.MaxChange = 0.00001 'Точность вычисления
End With
'Считываем уравнение из поля Text1 и помещаем его в ячейку A2
Eque = "=" & Text1
ObjExcel.Range(«A2»).Value = Eque
'Считываем начальное приближение к корню и помещаем его в A1
Approx = CDbl(Text2)
ObjExcel.Range(«A1»).Value = Approx
'Присваиваем имя «X» ячейке A1, иначе в уравнении необходимо
'использовать полную ссылку. Например, =0.5*A1^2-5*A1+8,
'вместо общепринятой формы: =0.5*X^2-5*X+8
ObjExcel.Range(«A1»).Name = «X»
'Объект GoalSeek вычисляет корень уравнения
'Он возвращает True, если решение найдено.
bool = ObjExcel.Range(«A2»).GoalSeek(Goal:=0, _
ChangingCell:=ObjExcel.Range(«X»))
' Вывод результата в текстовое поле
Text3 = ObjExcel.Range(«A1»).Value
ObjExcel.Quit 'Закрываем Excel без сохранения
Set ObjExcel = Nothing 'Удаление объекта
End Sub
Private Sub Form_Load()
Caption = «Пример на OLE Automation»
Command1.Caption = «Найти корень»
Text1 = ""
Text2 = ""
Text3 = ""
Text1.TabIndex = 0
End Sub