381 / 4 / 3
Регистрация: 20.03.2013
Сообщений: 43
|
|
1 | |
Сравнение встроенных и математических функций с заданной точностью02.10.2013, 13:25. Показов 2574. Ответов 8
Метки нет (Все метки)
Не смогла понять, как это реализовать, поэтому обращаюсь к вам за помощью.
Нужно сравнить значение встроенной функции VBA с ее математическим аналогом и вычислить разницу между встроенной функцией и математическим аналогом, вычисленным с точностью eps. Иными словами, нужно узнать с точностью до eps величину погрешности, с которой VBA вычисляет математическую функцию. Мой вариант задания - вычислить разницу: где Sqr(2) - встроенная функция VBA Sqr(), а √2 - математический корень. Разницу вычислить с точностью eps = 1E-56. Помогите, буду признательна!
0
|
02.10.2013, 13:25 | |
Ответы с готовыми решениями:
8
Использование математических функций и функций работы со строками Вызов пользовательских функций, как встроенных в Excel Нужно посчитать количество слов без встроенных функций Подпрограмма: Вывести имена и значения всех встроенных и пользовательских свойств заданной рабочей книги... |
1007 / 351 / 59
Регистрация: 28.02.2013
Сообщений: 932
|
||||||
02.10.2013, 14:03 | 2 | |||||
- это про функцию КОРЕНЬ?
А так в модуль :
Добавлено через 1 минуту 1,4142135623731
0
|
381 / 4 / 3
Регистрация: 20.03.2013
Сообщений: 43
|
|
02.10.2013, 14:45 [ТС] | 3 |
Нет, я имела в виду именно математический корень. Но поскольку он, как объяснил преподаватель, представляет собой иррациональное число, то сравнение с математическим корнем достаточно провести с заданной точностью eps.
В моем варианте eps = 1E-56. Вот пример, который приводил преподаватель: Задание - вычислить разницу: где Application.WorksheetFunction.Pi() - встроенная в Excel функция для вычисления числа "пи", а - математическое число "пи". Разницу вычислить с точностью eps = 1E-180. Ответ: 0,000000000000003238462643383279502884197169399375105820974944592307816406286208 99862803482534211706798214808651328230664709384460955058223172535940812848111745 0284102701938521106
0
|
1007 / 351 / 59
Регистрация: 28.02.2013
Сообщений: 932
|
|
02.10.2013, 16:50 | 4 |
пи()=3,14159265358979 в Экселе (это я к тому где взять число Пи с большим числом знаков после запятой).
Вот где найти значение математического корня с таким количеством знаков? Например: а - математический корень из 2 1. Вставляете модуль 2. В модуль код (который выше) 3. в листе Экселя (в ячейке): =abs(Корень_VBA(2)-a)
0
|
6081 / 1325 / 195
Регистрация: 12.12.2012
Сообщений: 1,023
|
|
02.10.2013, 17:03 | 5 |
Очевидно, его надо вычислить в программе. Но как это сделать, я тоже пока не очень соображаю...
Единственный совет, который я могу дать Але-Дашковой сейчас - работать с числами как со строками или с массивами цифр, так как очевидно, что встроенных в VBA числовых типов не хватит для хранения числа с такой точностью. С уважением, Aksima
1
|
здесь больше нет...
3374 / 1672 / 184
Регистрация: 03.02.2010
Сообщений: 1,219
|
|||||||||||
04.10.2013, 13:57 | 6 | ||||||||||
Сообщение было отмечено как решение
Решение
6
|
381 / 4 / 3
Регистрация: 20.03.2013
Сообщений: 43
|
||||||
05.10.2013, 00:31 [ТС] | 7 | |||||
аналитика, спасибо огромное!
Я правильно поняла, что ответ 1,4142135623731E+56?
0
|
26806 / 14485 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
|
||||||
05.10.2013, 03:14 | 8 | |||||
Сообщение было отмечено как решение
Решение
Але-Дашкова, предложенная выше функция дает строку без разделения на целую и дробную части.
Чтоб не копаться в кишках кода, можно поправить уже полученный результат. В функции LongSqr, вместо строки LongSqr = sRes (после строки Debug.Print Timer - sngT) напишите код
1.41421356237309504880168872420969807856967187537694807317
3
|
381 / 4 / 3
Регистрация: 20.03.2013
Сообщений: 43
|
|
05.10.2013, 11:52 [ТС] | 9 |
Сообщение было отмечено как решение
Решение
mobile, спасибо! Долго разбиралась, наконец решила через формулы Excel. Перевести формулы Excel в VBA смогу сама, не переживайте!
2
|
05.10.2013, 11:52 | |
05.10.2013, 11:52 | |
Помогаю со студенческими работами здесь
9
Посмотреть код встроенных математических функций. Открыть cmath Вычисление значений функций с заданной точностью Написание своих функций chr() и ord(), без использования встроенных функций Вычислить выражение c заданной точностью, используя формулы разложения функций в ряд Тейлора Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |