Другие языки программирования и технологии

Вопрос по VBA(В Excel) Нужно решить y=x^2*cos(2x)+1 в 0->50 промежутке Дайте польный ответ или подзказки

Allabargan Rejepov
Allabargan Rejepov
143
Таблицу делаешь из 2 колонок. В одной пишешь x: 0, 1, 2,...50, а во второй:
= A1*A1*cos(2*A1) + 1
А через VBA цикл пишешь:
Sub Macros
Dim x As Integer, y As Double
Cells(1,1) = "X": Cells(1,2) = "Y"
For x = 0 To 50
y = x*x*cos(2*x) + 1
Cells(x+2, 1) = x
Cells(x+2, 2) = y
Next x
End Sub
Женя Свирида
Женя Свирида
85 956
Лучший ответ
Макрос Удачника надо дополнить шагом цикла по X около 0.0001 (это точность нахождения корня) чтобы получить плавную кривую. Перед циклом задать флаг B=1, означающий, что решение ищется, причем Y >0. В конце цикла оператором IF проверяешь, пересекла ли кривая ось X.
IF ((y <= 0) AND (B > 0)) OR ((y>0) AND (B < 0) )
Then B=-B : Print X
End IF
переключая флаг и печатая корень уравнения.
При малом шаге программа не зависит от констант, заложенных в уравнение, и от функции под косинусом. И график можно построить. Первое значение можно и вручную подобрать x1=1.18, если при нём вычислить производную, она показывает, что кривая достаточно круто пересекает ось Х, а не касается её, поэтому флаг B будет работать правильно, переключая свой знак, а с ростом X будет сильно расти амплитуда за счёт квадрата, корни будут встречаться почти с равномерным шагом, а производная будет в корневых точках ещё круче (и можно повысить точность за счёт малого шага).
Alexey Zhyk
Alexey Zhyk
70 042