Страницы: 1
RSS
написание програмного кода тригонометрической функции
 
доброе время суток. столкнулся с задачей, написать программный код тригонометрической функции:  y= 2sin(piX)+( sin3piX / 3X). написал как умею мне пишет ошибку. подскажите пожалуйста, в чем ошибка?
Sub Функция()
Dim x As Integer, y As Integer, a As Integer, b As Integer, c As Integer
a = 2 * Sin(3, 14 * x)
b = Sin(3 * 3, 14 * x)
c = 3 * x
y = a + (b / c)
End Sub
 
Типа такого что-то. Не проверял
Код
Sub Функция(x)
a = 2 * Sin(3, 14 * x)
b = Sin(3 * 3, 14 * x)
c = 3 * x
Функция = a + (b / c)
End Sub
Скажи мне, кудесник, любимец ба’гов...
 
Код
Sub test()
    Debug.Print myF(0.5)
End Sub

Function myF(x As Double) As Double
    If x = 0 Then
        myF = "oo"
    Else
        myF = 2 * Sin(WorksheetFunction.Pi * x) + Sin(3 * WorksheetFunction.Pi * x) / 3 / x
    End If
End Function
 
спасибо. сейчас попробую.
 
Можно π узнать и без помощи Excel: Atn(1) * 4
:)
Владимир
 
что то не работает, подставляю Х пишет ошибку. может не в ту степь пошел.
задание: Написать программный код, используя процедуру и функцию. Функцию разместить в категории «Математические».
 
Цитата
Виталий Улюкин: y= 2sin(piX)+( sin3piX / 3X)
Код
Изменено: Jack Famous - 12.04.2022 17:48:46
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Цитата
написал:
Функцию разместить в категории «Математические».
Код
Sub AddToCategory()
    Application.MacroOptions Macro:="myF", Category:=3
End Sub
 
Цитата
sokol92 написал: Можно π узнать и без помощи Excel: Atn(1) * 4
Добрый день, Владимир!
А я Pi через константу объявляю, она один раз вычисляется на стадии компиляции.
Код
Const Pi As Double = 3.14159265358979 + 3.10862446895044E-15

Точность при этом более 15 значащих цифр, как у WorksheetFunction.pi и у Atn(1)*4
 
Цитата
Jack Famous написал:
Static pi#, f As Boolean:   If Not f Then f = True: pi = Atn(1) * 4
Алексей, добрый день!
f  вроде как лишняя,
достаточно: If pi = 0 Then pi = Atn(1) * 4
Изменено: ZVI - 12.04.2022 17:45:57
 
Цитата
sokol92: Atn(1) * 4
приветствую! Забыл уже про это - спасибо  :idea:

ZVI, приветствую!
Не знал, что константы можно вычислять - спасибо  :idea:
А по скорости мой вариант со статичной переменной тоже не должен уступать — хотя даже вычислять Atn(1)*4 для каждого вызова не сильно долго и разницу вряд ли будет заметно (на уровне листа) :D

Цитата
ZVI: f  вроде как лишняя
привычка — вторая натура  :D Тут лишняя — поправил
Изменено: Jack Famous - 12.04.2022 17:49:14
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Цитата
ZVI написал:
А я Pi через константу объявляю,
Здравствуйте, Владимир! Я столько цифр не знаю.  :)
Владимир
 
Цитата
Jack Famous написал: А по скорости ...
Да, за наносекундами здесь мало кто гоняется  ;)
 
Цитата
sokol92 написал:
столько цифр  не знаю .  
Да и я тоже, это VBA знает своё :)
?WorksheetFunction.pi
3,14159265358979
?WorksheetFunction.pi - 3.14159265358979
3,10862446895044E-15
?WorksheetFunction.pi - (3.14159265358979 + 3.10862446895044E-15)
0
 
Цитата
Виталий Улюкин написал: что то не работает, подставляю Х пишет ошибку. может не в ту степь пошел.
'Матрос на зебре' Вам все написал, его код нужно вставить в VBA -модуль (в VBE - Insert- Module).
Потом запустить AddToCategory.
Потом, в ячейку A1 записать значение X, например: 1
А в B1 - формулу: =myF(A1)
Меняйте значение X в A1 и смотрите, что посчитается в B1.
Приложите свой пример книги XLSM сюда если не получается.
Изменено: ZVI - 12.04.2022 18:16:09
 
Цитата
ZVI: ?WorksheetFunction.pi - 3.14159265358979
заставили-таки показать всё  :D
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Спасибо огромное!!!!! всё заработало.
Страницы: 1
Наверх