Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
метод 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
Дата публикования: 2014-12-28; Прочитано: 242 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!