LINUX.ORG.RU
ФорумTalks

на лоре есть специалисты по всем вопросам


0

0

Есть некоторый физический процесс. Есть модель этого процесса в виде

y= const + a^i + b^i + c^i + a^ic^j + b^ic^j + a^ib^jc^k

a,b,c --- переменные.

перед каждым слагаемым стоит коэффициент/подгоночный парамет.

i,j,k пробегают все значения от 1 до (как правило) 3

Преимуществом этой модели является то, что отклонение расчётного значения от эксперимента примерно соответствует точности экспериментальной установки.

Недостатком --- то, что в этой злостной мешанине многочленов сам чёрт ногу сломит. Видя уравнение типа y = (a + b)*c^0.3, я могу сказать, что y зависит от a,b линейно, а от c как c^0.3, а видя мою модель человек ничего такого скзать не сможет.

Задача: упростить модель, перейти к человекочитаемому виду. Нужны какие-нибудь идеи как вообще к этой задаче подступиться. У меня таких идей нет. Лоровцы, на вас уповаю.

*** Угодай идёт возжигать болванку с гномом во славу Патрика.

★★★★★

Попробуйте разложить не по степеням a, b, c, а по функциям от них (напр, exp[a+b], exp[c], exp[a+b]exp[c]).

soomrack ★★★★★
()
Ответ на: комментарий от Xellos

Не помогает. Количество членов немножко уменьшается но это погоды не делает. Вот если бы был способ сказать: вот эти члены похожи на экспоненты, а вот этот кусок синусоиду изображает, то это бы упростило восприятие.

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

ugoday ★★★★★
() автор топика
Ответ на: комментарий от Xellos

Чтобы его построить надо _уже_ иметь информацию в компактном, представимом виде.

ugoday ★★★★★
() автор топика
Ответ на: комментарий от ugoday

Так. Что мы имеем? Мы имеем многообразие в четырёхмерном пространстве, верно? А что мы получить-то хотим в итоге?

Xellos ★★★★★
()
Ответ на: комментарий от soomrack

Вся фишка именно в многочленах. Исходный процесс слишком сложен, чтобы можно было предположить форму функциональной зависимости. Если я предположу, что y зависит от c как y(c)=k*exp(c) и коэффициент k окажется не значимым, то возможны два варианта:

а) y не зависит от c

б) y зависит от с, но не в виде экспоненты, а как нибудь иначе.

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

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

ugoday ★★★★★
() автор топика
Ответ на: комментарий от Xellos

Это переводит нелинейную регрессию в линейную, см. мой ответ сумраку.

ugoday ★★★★★
() автор топика
Ответ на: комментарий от ugoday

>Поскольку количество функций бесконечно, то полный их перебор невозможен, а эврестическое "угадывание" возможных функциональных форм сложно.

Я имел ввиду восстановить функциональную зависимость по коэффициентам для одного конкретного случая, вдруг удастся?

Есть еще другой подход: введение обзначений. Например, обзовем a^ib^jc^k перемешивающим термом, а a^i, b^j, c^k частными потенциалами. Удобства работы с уравнением особо не прибавится, зато может смысл станет более прозрачным. При работе с молекулярными потенциалами (а они расчитываются численно, зачастую в виде разложений по некоторому функциональному базису) это широко распространено. :)

soomrack ★★★★★
()
Ответ на: комментарий от soomrack

> Я имeл ввидy вoccтaнoвить фyнкциoнaльнyю зaвиcимocть пo кoэффициeнтaм для oднoгo кoнкpeтнoгo cлyчaя,

Да, имеет смысл попробывать это. Но я, задавая вопрос, надеялся, что эта задача уже была решена кем либо в общем виде. Наверняка же не я первый придумал этот способ облегчить себе жизнь

> Ecть eщe дpyгoй пoдxoд

Хм, а это мысль. Я подумаю.

ugoday ★★★★★
() автор топика
Ответ на: комментарий от ugoday

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

Sun-ch
()

Знаешь, почему o(n) называется о-малым? потому что оно вносит незначительный вклад в какуюннить сходимость какогоннить ряда(но необходимый для доказательства). Выкидываешь члены третьего, второго и т.п. порядка малости. Тем самым упрощаешь формулу, но это зависит от твоего исследования(что можно а что нельзя выкинуть). Вобщем, для упрощения это сойдет.

vilfred ☆☆
()
Ответ на: комментарий от vilfred

vilfred, не надо меня считать идиотом. Естественно я оставил только значимые слагаемые.

ugoday ★★★★★
() автор топика
Ответ на: комментарий от hatefu1_dead

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

Sun-ch
()
Ответ на: комментарий от Sun-ch

то, что есть модель процесса --- та же аппроксимация. следовательно, эта задача уже решена.

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

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

hatefu1_dead
()

Возможно, я не совсем понял, но все же:

если то, что написано, отражает какую-либо физическую модель, и такой вид зависимости следует из теории, то проблем и нет -- все параметры должны иметь смысл.

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

Так что, на мой взгляд -- если константам нужно придать физический смысл, то и определять их нужно не из какой-то там зависимости, написанной непонятно по каким соображениям, а из какого-нибудь соответствующего физического закона -- который 1. является таковым, то есть отражает физику; 2. константы в нем неизвестны.

Например, если известно, что нечто описывается a\exp{-b/c/x}, которая и есть физический закон, и в которой у a и b есть физический смысл -- то и зависимость брать нужно такую, и определять a и b.

А по поводу

> Преимуществом этой модели является то, что отклонение расчётного

> значения от эксперимента примерно соответствует точности

> экспериментальной установки.

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

В общем, я бы сказал, что нужно подумать, откуда взялась именно такая зависимость (точнее, именно такой ее вид) -- и если она не устраивает, подумать, какую еще можно взять.

Если взять многочлен нужной степени нужного количества неизвестных и "подогнать" параметры в нем -- тогда и можно будет смело говорить

> что y зависит от a,b линейно, а от c как c^0.3 ...

:)

gene
()

Для таких задач удобен метод Монте-Карло. Он решает нелинейные задачи любой

размерности и сложности, но с ограниченной временем точностью.

quickquest ★★★★★
()
Ответ на: комментарий от ugoday

> Что это?

MINUIT -- грубо, программа для поиска минимума chi2.

http://wwwasdoc.web.cern.ch/wwwasdoc/WWW/minuit/minmain/minmain.html

Пусть есть измеряемые величины y_i, с матрицей ошибок C_{ij}. i,j - не обязательно индекс 1,2,3..., это обозначение набора независимых параметров, при которых меряем y (например, y = длина пружины, i = {температура пружины, вес подвешенного к ней груза})

Значения y_i модель параметризует как f_i(a_1,a_2,...a_N), где a_{1..N} -- параметры модели, которые мы хотим подогнать. f_i -- не обязательно какая-то аналитическая функция от "i" и a1..aN. f_i можно записать в виде подпрограммы-функции.

Тупо строим chi2(a1..aN) ~ сумма_по_i,j (y_i - f_i(a1..aN)) C^{-1}_{ij} (y_j - f_j(a1..aN)).

Подсовываем chi2 MINUIT'у, он ищет его минимум, варьируя параметры модели a1...aN в заданных пределах. Если нашел минимум, может построить ковариационную матрицу для a1..aN вблизи минимума, проварьировав chi2, по a_i,a_j.

По рабоче-крестьянски так.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.