Родились сегодня:
Rosiam


Лидеры рейтинга

ID: 226425

Konstantin Shvetski

Модератор

724

Россия, Северодвинск


ID: 259041

Алексеев Владимир Николаевич

Мастер-Эксперт

326

Россия, пос. Теплоозёрск, ЕАО


ID: 401284

Михаил Александров

Академик

279

Россия, Санкт-Петербург


ID: 325460

CradleA

Мастер-Эксперт

212

Беларусь, Минск


ID: 400815

alexleonsm

6-й класс

130


ID: 400669

epimkin

Профессионал

120


ID: 401888

puporev

Профессор

111

Россия, Пермский край


8.8.15

09.05.2021

JS: 2.8.21
CSS: 4.5.5
jQuery: 3.6.0
DataForLocalStorage: 2021-05-11 18:46:03-standard


Установка, настройка и работа в пакете Microsoft Office.

Администратор раздела: Megaloman (Мастер-Эксперт)

Консультация онлайн # 200490

Раздел: Пакет MSOffice
Автор вопроса: 23071996 (Посетитель)
Дата: 25.03.2021, 19:03 Консультация закрыта
Поступило ответов: 1

Здравствуйте! Прошу помощи в следующем вопросе:
Помогите написать в макросе 2 задачки.
Извиняюсь что не прописываю формулой, заранее огромное спасибо

Ответ # 280857 от Megaloman
Здравствуйте, 23071996!

Задача 3.11
Функция задана, вычислить её значения в заданных точках не представляет труда. Однако задание требует построения касательной в заданной точке.
Получим уравнение касательной.



Вот макрос, который создаёт рабочий лист, помещает на него заданную затабулированную заданную функцию и касательную к ней с заданными условиями, строит графики функции и касательной.
Код
Sub Job_3_1()

    Const x1 = 0, x2 = 4, xd = 0.2, x0 = 0.5
    
    Const R1 = "A1"     'Адрес левой верхней ячейки с данными
'    Const R1 = "B2"     'Адрес левой верхней ячейки с данными
    
    Dim i, Nx, x
    Dim Fx0, F1x0
    Dim R2, RRfunk
    Dim WorkSh, DiagName
    
    Nx = Round((x2 - x1) / xd, 0) + 1
    ReDim Dann(1 To Nx, 1 To 3)
    
    Fx0 = x0 * Sin(2 * x0)
    F1x0 = Sin(2 * x0) + 2 * x0 * Cos(2 * x0)
    x = x1
    For i = 1 To Nx
        Dann(i, 1) = x
        Dann(i, 2) = x * Sin(2 * x)
        Dann(i, 3) = F1x0 * (x - x0) + Fx0
        x = x1 + xd * i
    Next
    
    Sheets.Add After:=Sheets(Sheets.Count)
    
    R2 = Range(R1).Offset(Nx - 1, 2).Address
    Range(R1 + ":" + R2) = Dann
    
    RRfunk = Range(R1).Offset(0, 1).Address
    RRfunk = RRfunk + ":" + R2
    
    WorkSh = ActiveSheet.Name
    Range(RRfunk).Select
    
    ActiveSheet.Shapes.AddChart.Select
    
    With ActiveChart
        DiagName = Replace(.Name, WorkSh + " ", "")
        .ChartType = xlLine
        .SetSourceData Source:=Range("'" + WorkSh + "'!" + RRfunk)
        .PlotArea.Select
        .SeriesCollection(1).XValues = "=" + WorkSh + "!" + R1 + ":" + Range(R1).Offset(Nx - 1, 0).Address
        With .Axes(xlCategory)
            .TickLabels.NumberFormat = "# ##0.0"
            .CrossesAt = 1
            .AxisBetweenCategories = False
        End With
    End With
    
    With ActiveSheet.Shapes(DiagName)
        .ScaleWidth 1.1437, msoFalse, msoScaleFromBottomRight
        .ScaleHeight 1.366, msoFalse, msoScaleFromBottomRight
        .ScaleWidth 1.4025, msoFalse, msoScaleFromTopLeft
        .ScaleHeight 1.085, msoFalse, msoScaleFromTopLeft
    End With
    
    Range("A1").Select
End Sub



Задача 3.12
Для оптимизации вычислений преобразуем приведенную формулу к виду:






Вот макрос, реализующий этот алгоритм:
Код
Sub Job_3_2()

Const x = 1.5
Const N = 16

Dim Fx, Yi, dY, Zi, i

Fx = 0
Yi = x
dY = x ^ 0.2
Zi = -1

For i = 1 To N
    Yi = Yi * dY
    Zi = Zi * (-0.25)
    Fx = Fx + Sin(Yi) * Zi
Next

MsgBox "x=" + CStr(x) + vbCrLf + "F(x)=" + CStr(Fx)

End Sub

Так как ничего не было сказано о способе ввода данных, значение x задаётся константой.

В прилагаемом файле ya210327.xlsm (33.6 кб) приведенные макросы, два рабочих листа с решением задач без макросов, как дополнительный контроль работы макроса, а также созданный макросом лист по задаче 3.11



Megaloman

Мастер-Эксперт
27.03.2021, 01:43
5
Мини-форум консультации # 200490

q_id

Megaloman

Мастер-Эксперт

ID: 137394

1

= общий =    25.03.2021, 23:30
23071996:

к задаче 3.12:




Последнее редактирование 26.03.2021, 00:33 Megaloman (Мастер-Эксперт)

=====
Нет времени на медленные танцы

q_id

Megaloman

Мастер-Эксперт

ID: 137394

2

= общий =    26.03.2021, 00:15
23071996:

Вы уверены, что задачу 3.11 надо решать макросом?

=====
Нет времени на медленные танцы

q_id

23071996

Посетитель

ID: 404319

3

= общий =    26.03.2021, 09:09
Megaloman:

Да, нужно на языке VBA это все расписать. Можете написать к задаче 3.11 если Вас не затруднит, к сожалению я не соображу как это все правильно прописать. Заранее спасибо

q_id

Megaloman

Мастер-Эксперт

ID: 137394

4

= общий =    26.03.2021, 15:45
23071996:

к задаче 3.11
С функцией всё понятно. Но надо получить уравнение касательной.




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

Последнее редактирование 26.03.2021, 15:48 Megaloman (Мастер-Эксперт)

=====
Нет времени на медленные танцы

q_id

Megaloman

Мастер-Эксперт

ID: 137394

5

= общий =    27.03.2021, 16:48
23071996:

Не задавайте несколько разных вопросов в одном.
Не задавайте несколько разных, не связанных с друг другом вопросов, в одном. Это не запрещено (если все вопросы относятся к теме рассылки), но вероятность того, что Вы получите на них ответы, будет гораздо выше, если Вы зададите их по отдельности. Например, мало кому из экспертов захочется отвечать на вопрос, в котором просто перечислено несколько задач из задачника. Отвечать на такие вопросы неудобно, ответы трудно читаются в выпусках рассылок, затрудняется обсуждение в форуме. Поэтому большинство экспертов просто игнорируют вопросы, в которых под видом одного дано несколько вопросов или задач. Гораздо лучше, если Вы в одном вопросе спросите про решение одной проблемы, особенно, если Вы покажете, что пытались решить ее самостоятельно, и укажете, что именно вызвало трудности. Тогда многие захотят Вам помочь.

Правила портала
Если в одном запросе несколько вопросов, есть вероятность, что часть вопросов у кого-то вызывают затруднения и требуют уточнения, а часть может быть решена быстро и ответы могут быть доведены до Вас быстрее. Задавая несколько вопросов в одном, Вы осложняете жизнь экспертам и, в конечном итоге, себе.

=====
Нет времени на медленные танцы

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

Лучшие эксперты раздела

CradleA

Мастер-Эксперт

Рейтинг: 212

Megaloman

Мастер-Эксперт

Рейтинг: 109

Зенченко Константин Николаевич

Старший модератор

Рейтинг: 73

SFResid

Мастер-Эксперт

Рейтинг: 2

Степанов Иван /REDDS

4-й класс

Рейтинг: 1

Лысков Игорь Витальевич

Мастер-Эксперт

Рейтинг: 0