Fryazino.NET Forum || Hard&Soft || Численные методы
>> Привет, Гость! Войдите! : вход | поиск | правила | банлист
Автор
Численные методы (1) 1 для печати | RSS 2.0
Ar@kel
Участник
licq:6610
Посоветуйте пожалуйста какой нибудь численный метод для решения системы нелинейных уравнений. Основное требование к нему - большая область сходимости. Скорость сходимости устроит линейная.
основная задачка такая:
есть матрица из узлов, (в случае2*2 квадрат с сопротивлениями на ребрах, для 3*3 на каждом ребре получает 2 сопротивления, а внутри крест, на каждой стороне которого по сопротивлению), к матрицы можно подключать источники тока/напряжения как угодно (только к внешним узлам) и мерить общее сопротивление. Так вот задача стоит в том, что бы по нескольким замерам результирующего сопротивления определить значения всех сопротивлений внутри матрицы.
IP
Pavia
Участник
программирование
licq:1754
цитата:
Посоветуйте пожалуйста какой нибудь численный метод для решения системы нелинейных уравнений.

Для решения вашей задачи не требуется. Да и система линейная.

Распишите суммы которые у вас получаются. И по вычитайте по складывайте замеры с предыдущех замеров. Примерно так если мерим сточку i,j то вычесть i-1,j и вычесть i,j-1 и прибавить i-1,j-1.

На границах похожим образом. Вот с углами не получится.
IP
Ar@kel
Участник
licq:6610
To Pavia
Может я не так объяснил. попробую ещё раз: берем листок рисуем 3*3 точек и соединям их по 4 степеням свободы(по диагонале нельзя), между каждыми двумя точками ставим сопротивление. должны получить некоторую эквивалентную схему из 12 сопротивлений. Для измерений можем как угодно подключатся к внешним точкам.
Собственно вся проблема состоит в том что при увелечений числа сопротивлений (расширения матрицы) начальное приближение стремится к корню. А градиентным спуском тоже невозможно воспользоватся, потому что каждое подключение по сути новая функция, и поэтому получаем N функций у которых минимум находится в одной точке(x1...xn).
IP
Silencer
Участник
licq:1661
To Ar@kel
цитата:
Посоветуйте пожалуйста какой нибудь численный метод для решения системы нелинейных уравнений.

А всяческие оптимизационные методы не подходят? В зависимости от сложности поверхности функции - метод тяжелого шарика, симплексный, метод деформируемых конфигураций..
IP
Ar@kel
Участник
licq:6610
To Silencer
к сожалению я не зпраю аналитического вида функции, жа и к тому же каждое новое подключение это новая функция. Если пременимо к градинтным методам, то у меня стоит вопрос как найти точку которая явдяется минимум для нескольких точек.
ЗЫ
мне видимо мозгов не достаент но поа не понимают этих оптимизауионных методов
IP
Silencer
Участник
licq:1661
To Ar@kel
цитата:
мне видимо мозгов не достаент но поа не понимают этих оптимизауионных методов


Рассматривается многомерная поверхность функции. Для методов поисковой оптимизации критично наличие "оврагов", и.т.д. И разные методы по-разному чувствительны к "пересеченной местности".

Тяжелый шарик - мат. модель поведения шарика, которые обладает массой, поверхности задается коэффициент трения. Очевидно что для обычной, достаточно гладкой функции, шарик скатится в точку оптимума.

Симплексный - менее чувствителен к оврагам, в нем по поверхности катают тетраэдр (ну пирамидку), который каждый раз (каждую итерацию) перекатывается вершиной в сторону минимума (происходит оценка, куда стоит перекатиться и перекат, после выбора направления переката).

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

Но очень неплохо представлять вид поверхности функции... неплохо начать с 2-х измерений..
Сообщение изменено Silencer от 2011-04-17 22:49:38
IP
Ar@kel
Участник
licq:6610
To Silencer
Вся загвоздка состоит в том, что мне надо найти точку минимума функций, причем из услоия задачи я знаю что она она одна для всех. Проблема стоит в том, что область начального приближения очень велика и включает в себя несколько экстремумов. Надо как то связть метод поиска локального экстремума для каждой функции (измерения) с тем что точка этого жкстремума одна для всех функций
IP
Silencer
Участник
licq:1661
To Ar@kel
На примере метода тяжелого шарика можно поиграть с коэффициентом трения, при слабом трении шарик будет проскакивать локальные экстремумы по инерции. Также можно играть с точностью поиска (ну типа шарик очень большой), и менять точность на каждой итерации, а итерацию проводить по всем измерениям (по каждой функции системы). На следующей итерации увеличивать точность и вводить ограничения с учетом того что было определено на прошлой итерации.

Идеально, конечно, было бы привести систему уравнений к одной многомерной функции.. Обычно всегда так делают.
IP
Ar@kel
Участник
licq:6610
To Silencer
я бы с радостью привел бы, только сейчас я имею суммарное сопротивление result[i] где i - номер измерения. i = 0..количество сопротивлений
ну и могу посчить f[i](x1...xn), т.е. значение функции(измерения) от значения сопротивления.
аналитический вид функция я не знаю (на самом деле это правила киргхофа, выраженные с помощью метода узловых потенциалов, но вручную записовать систему для каждой размерности матрицы меня как то смущает, тем более задача как раз и стоит так, что бы не на бумаге а на машине решить нахождения сопротивлений).
IP
Ar@kel
Участник
licq:6610
В общем получил для метода ньютона сходимость +-6%. причем первый корень имеет 0,005 погрешность, следующий 0.01 , 12 - 0.06. Подумал бы что не плохо пройтись каким нибудь методом для грубого нахождения начального приближения, а потом запустить ньютона.
Немного модифицировал формулы для градиентного метода: раньше было result - fi(X), где result результат по измерению, а теперь я считаю |result-fi(X)|, это конечно плодит дополнительные локальные минимумы, но зато точно можно найти корни.
Пока не получилось получить сходимость потому что xi начинают колебатся вокруг корня и иногда это приводит к тому что методом начинает расходится.
IP
asd
Участник
aka маленький
клевая задачка ...
наверное, многослойные/уровневые ГИСы надобно диагностировать?
IP
Ar@kel
Участник
licq:6610
To asd
В идеале матрица представляет собой человеческое тело, далее считаем распределение сопротивлений, и по изменению сопротивления от нормальных значений можем диагностировать болезнь, модель не без изъянов, но это пока что первые шаги)
IP
asd
Участник
aka маленький
To Ar@kel
Аааааа!
патентный поиск проводили?
а то может уже все известно, осталось только напильником подпилить)...
IP
Страницы(1): 1

Хотите создавать темы и отправлять сообщения? Выполните Вход или Зарегистрируйтесь!




Напишите нам

µƒorum © fryazino.net