|
2 / 2 / 0
Регистрация: 04.12.2015
Сообщений: 9
|
|
Численное решение нелинейных уравнениний, УКАЗАТЕЛЬ НА ФУНКЦИЮ, как?25.11.2019, 22:21. Показов 1685. Ответов 10
Метки нет (Все метки)
Добрый день, уважаемые коллеги!
При выполнении кое-каких расчетов в Exel потребовалось численно решать нелинейные уравнения. Когда уравнений было 2-3 делал в лоб - на каждое уравнение создавал свой экземпляр процедуры (например, деления отрезка попалам) и добавлял новую цифру в название . Сильно доставало, но для 2-3 было терпимо. Сейчас по прикидкам мне нудно будет решить по более 10 - при таком подходе будет капец. Метод Бисекций, хорд, Ньютона * 10-15 = 30-45!! Короче, спасайте! Требуется отработанный пример построения подобных конструкций. Бегло погуглил здесь на форуме, вроде бы какие-то обходные варианты по указателям в природе существуют, но как-то там все не очень очевидно и требует вдумчивого домысливания и как следствие - отладки. Если начну с нуля вникак сам, зависну на неделю две и сильно отвлекусь от основной задачи на второстепенную, что прямо сейчас не хотелось бы. Исходя из общих соображений - задача до банальности типовая, може кто реализовывал ее через указатели или, может, какие другие способы, поделитесь наработками. ОЧень надо. Спасибо.
0
|
|
| 25.11.2019, 22:21 | |
|
Ответы с готовыми решениями:
10
Численное решение нелинейных уравнений
|
|
1847 / 1162 / 354
Регистрация: 11.07.2014
Сообщений: 4,107
|
|
| 26.11.2019, 10:40 | |
|
tems-ya, ничего ужасного здесь нет, не сгущайте краски, а то всех здесь перепугаете. Если переменные уравнений связаны друг с другом,то метод Ньютона-Рафсона Xi+1=Xi-(F')-1*F. А если хотите, то пришлите 3-4 уравнения, посмотрю. Вы, видимо, решаете уравнения последовательно?
0
|
|
|
2 / 2 / 0
Регистрация: 04.12.2015
Сообщений: 9
|
|
| 26.11.2019, 12:02 [ТС] | |
|
Нет, речь идет о численном решени большого количества независимых и никак не связанных друг с другом уравнений в одном файле (для сравнения несколькими численными методами)
В нормальных языках это реализуется просто. Пишется процедура(функция) ОДНА (на каждый метод), которая реализует все требуемые вычисления (тело алгоритма). Далее в эту процедуру просто передается указатель(ссылка) на конкретную функцию, которую нужно решить в данный конкретный момент. Если функций 100, то просто 100 раз вызывается ОДНА процедура со всеми 100 разными функциями. Ну это в нормальных языках. В VBA чтобы решить данное уравнение нужно в теле процедуры ЯВНО указывать функцию, для которой проводится решение. Если таких функций 100, то я должен наплодить 100 процедур (например бисекций), которые будут отличаться друг от друга только названием вызывамой функции. 100 функций + 100 процедур для их решения одним методом + 100 процедур для их решения другим методом ... далее думаю понятно. Уже при 3 методах и 3 функциях ориентироваться и что-то модифицировать в коде стало не комфортно. Мой вопрос был о том, как, каким образом можно оптимизировать всю эту описанную процедуру вычислений избежать лобового решения задачи.
0
|
|
|
1847 / 1162 / 354
Регистрация: 11.07.2014
Сообщений: 4,107
|
|
| 26.11.2019, 13:37 | |
|
tems-ya, если не хотите писать 100 функций, напишите одну, в которой? в зависимости от параметра I, будет считаться нужная функция через Select Case I
0
|
|
|
2 / 2 / 0
Регистрация: 04.12.2015
Сообщений: 9
|
|
| 26.11.2019, 13:53 [ТС] | |
|
Некрасиво это... И неправильно идеологически. Я думал, может кто разобрался, как все-таки через укзатель можно функцию вызвать на VBA.
Но похоже это высший пилотаж. Те кто все это может осилить VBA походу не жалуют. Вызов любых функций по указателю http://bbs.vbstreets.ru/viewtopic.php?f=68&t=36100 А здесь я только в самых общих чертах понял http://www.realcoding.net/arti... telyu.html Примерчик бы реально работающий, жизненный, а не искуственные конструкции, которые непонятно как адаптировать для себя.
0
|
|
|
Супер-модератор
|
|||||||||||
| 26.11.2019, 18:47 | |||||||||||
|
Вызов по указателю - решение в VBA достаточно смелое. Можно поступить традиционно. Передать функцию параметром в другую функцию в VBA нельзя. Но можно передать объект:
Или даже так:
0
|
|||||||||||
|
2 / 2 / 0
Регистрация: 04.12.2015
Сообщений: 9
|
||||||
| 27.11.2019, 12:03 [ТС] | ||||||
|
Спасибо.
Так несколько лучше, конечно. Поправил немного для наших реалий.
Или я ошибаюсь, и их как-то все-таки все можно запихнуть в один файл (класс)?
0
|
||||||
|
2 / 2 / 0
Регистрация: 04.12.2015
Сообщений: 9
|
|
| 27.11.2019, 13:51 [ТС] | |
|
"Карфаген должне быть разрущен..."
ttp://bbs.vbstreets.ru/viewtopic.php?f=15&t=42930 вот попалось по теме, кажется тоже.
1
|
|
|
2 / 2 / 0
Регистрация: 04.12.2015
Сообщений: 9
|
|
| 27.11.2019, 16:33 [ТС] | |
|
Спасибо. Думаю что нет, это более приемлемо.
0
|
|
|
Супер-модератор
|
||
| 27.11.2019, 16:37 | ||
|
tems-ya, определите интерфейс для функции двух переменных.
![]() Добавлено через 34 секунды Добавлено через 1 минуту А можно в интерфейсе iCall определить еще одну функцию - с двумя переменными.
0
|
||
| 27.11.2019, 16:37 | |
|
Помогаю со студенческими работами здесь
11
Численное решение системы нелинейных уравнений методом Зейделя и Ньютона Численное решение нелинейных уравнений и обыкновенных дифференциальных уравнений Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает
монорепозиторий в котором находятся все исходники.
При создании нового решения, мы просто добавляем нужные проекты
и имеем. . .
|
|
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение:
В этой книге («Подход, основанный на вариантах использования») Ивар утверждает,
что архитектура программного обеспечения — это
структуры,. . .
|
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога
Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
|
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip
На первой гифке отладочные линии отключены, а на второй включены:. . .
|
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем.
. . .
|