Решение на уравнение в зависимост от параметър

В урока е разработено приложение, което ви позволява да намерите корените на уравнение в зависимост от параметъра, както и да изградите диаграма, която показва зависимостта на корена от параметъра. Създавайки това приложение, ще научите:

  1. Въведете формули с помощта на контролата RefEdit
  2. Използвайте метода Goaiseek, за да намерите корените на уравнение в зависимост от параметъра
  3. Задайте параметри на метода Goaiseek
  4. Създайте професия в работен лист, като използвате метода Dataseries
  5. Програмирайте плъзгане на маркера за запълване на избрания диапазон върху работния лист, като използвате метода AutoFill
  6. Изграждане на диаграми

Този раздел решава уравнение

при различни стойности на параметъра b, вариращи от началната до крайната стойност с определената стъпка. За всяка конкретна стойност на параметъра коренът на уравнението се намира по метода Goaiseek. За да намерите корените на уравнението за различни стойности на параметъра, тези стойности се въвеждат в диапазона от клетки на работния лист, формулите на левите части на уравненията в друг диапазон, третият диапазон се присвоява на неизвестното. Първоначалните приближения на корена се въвеждат в диапазона с неизвестни и след това, последователно сортирайки съответните клетки от тези три диапазона, съответните корени се намират с помощта на метода GoalSeek.

зависимост

Ориз. Y5.1. Диалогов прозорец Нелинейно уравнение с параметър

За уравнението, което се решава, се приема, че то се трансформира до формата, когато само лявата страна зависи от неизвестното и параметъра. Дясната страна е постоянна. Когато въвеждате лявата страна на уравнението в полето за въвеждане на контролата RefEdit, вместо променливата x, трябва да дадете препратка към клетка B2 и вместопараметър - А2. Освен това формулата трябва да бъде написана съгласно същите правила, които се използват за писане на формули в работен лист. Например, за уравнението, споменато по-горе, въведете в полето:

Нека обсъдим как програмата по-долу решава изброените проблеми и какво се случва в програмата.

Натискането на бутона за изчисляване стартира процедурата

  • Процедурата Chart Construction се извиква за начертаване на диаграмата (фиг. U5.2).
  • Натискането на бутона за отказ стартира процедурата

    единадесет Затваря диалоговия прозорец.

    12. Построява графика.

    уравнение

    Ориз. Y5.2. Отчет, показан на работния лист от програмата за решаване на уравнения с параметър

    Private Sub CommandButtonl_Click()

    ' Процедурата за намиране на корените на уравнението с параметър

    Dim ParameterStart As Double

    Dim ParameterCon като двойно

    Dim ParameterStep като Double

    Dim Start As Double

    Затъмнете дясната част като двойно

    Dim Formula като низ

    ' ParameterStart - начална стойност на параметър

    ' ParameterCon - крайна стойност на параметър

    ' ParameterStep - стъпка за промяна на параметър

    ' Initial Approximate - първоначалното приближение на корена, общо за всички

    'RightPart - дясната страна на уравнението

    ' Формулата е лявата страна на уравнението. Уравнението е написано така,

    “, че неизвестното влиза само от лявата страна и

    ' дясна страна - константа

    Dim i като цяло число

    Dim Length като цяло число

    Dim n като цяло число

    ' i, n, Length - спомагателни променливи

    ' Въведете данни от диалоговия прозорец

    ' Контрола RefEdit при въвеждане на препратки към клетки

    “, като щракнете върху съответната клеткавръща абсолютни препратки към

    ' При плъзгане на маркера за запълване на избраната клетка,

    ', съдържащ формулата от лявата страна на уравнението, надолу в колоната

    ' за да получите правилния резултат, не е необходимо абсолютно, а

    ' относително по-долу в оператора Do-Loop от реда за формула,

    ' Присвоена низова променлива Формула, всички знаци се премахват

    If M Then Length = Len(Formula)

    Формула = Ляво (Формула, i - 1) + Дясно (Формула, Дължина - i)

    ' Изчистете първите три колони от работния лист

    ' Форматиране на заглавката на отчетната таблица.

    ' ширини на първите три колони височина на първия ред

    Диапазон ("Al:Cl"). Изберете със селекция

    ' Въведете заглавията на първите три колони на работния лист

    Диапазон ("Al"). Стойност = "Параметър" Диапазон ("Bl"). Стойност = "Променлива"

    Диапазон ("Cl"). Стойност = "лявата страна на уравнението"

    ' Задайте параметри на метода Изберете параметър

    .MaxChange = 0,0001 Край с

    ' Въвеждане в колона A на стойностите на параметъра

    Тип:=xlLinear, Стъпка:=dimensionStep, Стоп:=dimensionKon

    ' Определете броя на попълнените редове

    n = Range("A2").Current-Region.Rows.Count

    ' Въведете в диапазона на колона B на първоначалното предположение

    Диапазон (Клетки (2, 2), Клетки (n, 2)). Стойност = StartInt

    ' Въведете в диапазона на колоната От лявата страна на уравнението

    Диапазон("C2").Формула = Диапазон на формула("C2").Автоматично попълване

    Дестинация:=Диапазон(Клетки(2, 3), Клетки(n, 3)),

    ' Последователно решаване на уравнения с помощта на командата Избор на параметър

    Клетки(i, 3).GoalSeek Цел:=RightSeek,

    ChangingCell:=Cells(i, 2) Next i

    ' Повикване на процедура за плотиране

    Частен субCommandButton2_Click()

    ' Процедура за затваряне на диалоговия прозорец

    Private Sub UserForm_Initialize()

    Процедура за активиране на диалогов прозорец

    ' На клавиша е присвоена функцията на бутона Изчисли.

    ' Функцията на бутона Отказ е присвоена на клавиша.

    CommandButtonl.Default = True CommandButton2.Cancel = True

    Процедура на чертане

    Dim n като цяло число

    ' n - броят редове в диапазона, за който е изградена диаграмата

    Dim RangeAxis като обект

    Dim RangeAxis като обект

    Dim NameCharts като низ

    Dim Range като низ

    Dim RangeX като низ

    Dim SheetName като низ

    n = ActiveSheet.Cells(1, 1).CurrentRegion.Rows.Count

    ' Изтрийте всички предварително изградени диаграми от. работен лист

    ' Създайте нова диаграма и задайте нейния тип

    ' Дефиниране на диапазона, разпределен за стойностите на функцията

    Диапазон = "B2:B" & LTrim(CStr(n)>

    Задайте AxisRange = Sheets(SheetName).Range(Range)

    ' Дефиниране на диапазона, разпределен за стойностите на аргумента

    RangeX = "A2:A" & LTrim(CStr(n))

    Задайте RangeAxisX = Sheets(SheetName).Range(RangeX)

    ActiveChart.Location Къде:=xlLocationAsObject, Име:=Име на лист с

    ActiveChart .HasTitle = True

    .ChartTitle.Characters.Text = "Коренна зависимост от параметър"

    .Axes(xlCategory, xlPrimary).HasTitle = True,

    .Axes(xlValue, xlPrimary).HasTitle = True

    ' Преместете и преоразмерете диаграмата

    ActiveSheet.Shapes(ChartName).ScaleHeight 1.17, msoFalse,

    msoScaleFromBottomRight ActiveSheet.Shapes(ChartName).IncrementLeft 124.5

    Процедурачертането изглежда доста тромаво. Когато го пишете, най-добре е да използвате MacroRecorder, който ще преведе ръчните действия на потребителя за изграждане на диаграма във VBA. И така, за да активирате MacroRecorder, изберете командата Service, Macro, Start Recording (Инструменти, Macro, Record New Macro) и стартирайте MacroRecorder за запис. След като зададете всички параметри в диалоговия прозорец Запис на макрос, който се появява и щракнете върху OK, ще се появи плаваща лента с инструменти с бутон Спиране на записа. Сега всички извършени действия ще бъдат записани, докато не бъде натиснат този бутон. Изградете диаграма по следния алгоритъм:

    Действията, изброени по-горе, ще бъдат преведени от MacroRecorder в следващия макрос.

    ' Macro zapi.ln 27.04.99 (Андрей)

    ActiveChart.Location Where:=xlLocationAsObject, Name:="Sheetl" С

    .Axes(xlCategory, xlPrimary).HasTitle = False