F(X)=0, метод решения систем нелинейных уравнений
Модератор: Admin
-
- Сообщения: 1776
- Зарегистрирован: Вс май 01, 2005 9:02 pm
p
Последний раз редактировалось алексей_алексей Пт июн 17, 2016 9:38 am, всего редактировалось 1 раз.
-
- Сообщения: 1817
- Зарегистрирован: Сб ноя 13, 2004 3:06 pm
- Откуда: п.г.т. Излучинск
- Контактная информация:
Короче говоря, у него есть как-бы нелинейная функция с базисами (1, 1/x, log10(x)). Да, похоже, что суперпозиция базиса с коэффициентами находится в показатели степени десятки.
Точки с данными у него - это давления при какой-то температуре. Т.е. иксом является как-бы T, а игриком - p, т.е. f(x) = p(T). Параметрами же являются коэффициенты при базисных функциях, типа как у меня в примере коэффициенты при иксах. У меня базис алгебраический, а у него нелинейный.
Проблема видимо в том, что ему нужно подобрать нелинейную аппроксимирующую функцию под вид данных, либо она уже имеется как заданная или стандартизованная, или из законов физики процесса. Потом найти решатель, который бы справлялся с этой нелинейной функцией в плане поиска коэффициентов базиса по заданному набору точек p(T).
Да, функция у него, похоже, круто уходит в бесконечность, но x^2 тоже не плохо в бесконечность уходит. Минимум он просит найти для невязки функции и точек с данными. Я же ведь также нахожу для квадратного уравнения. Три параметра - три свободных коэффициента, полностью определяющих параболу. Там на самом деле не нужно больше трёх точек для точного восстановления, но я взял 5 точек и добавил к ним шума, чтобы посмотреть как вообще этот принцип работает. По графику видно, что по крайней мере, в этот шум найденная парабола укладывается, а её коэффициенты, с учётом случайного разброса данных, похожи на заданные.
Точки с данными у него - это давления при какой-то температуре. Т.е. иксом является как-бы T, а игриком - p, т.е. f(x) = p(T). Параметрами же являются коэффициенты при базисных функциях, типа как у меня в примере коэффициенты при иксах. У меня базис алгебраический, а у него нелинейный.
Проблема видимо в том, что ему нужно подобрать нелинейную аппроксимирующую функцию под вид данных, либо она уже имеется как заданная или стандартизованная, или из законов физики процесса. Потом найти решатель, который бы справлялся с этой нелинейной функцией в плане поиска коэффициентов базиса по заданному набору точек p(T).
Да, функция у него, похоже, круто уходит в бесконечность, но x^2 тоже не плохо в бесконечность уходит. Минимум он просит найти для невязки функции и точек с данными. Я же ведь также нахожу для квадратного уравнения. Три параметра - три свободных коэффициента, полностью определяющих параболу. Там на самом деле не нужно больше трёх точек для точного восстановления, но я взял 5 точек и добавил к ним шума, чтобы посмотреть как вообще этот принцип работает. По графику видно, что по крайней мере, в этот шум найденная парабола укладывается, а её коэффициенты, с учётом случайного разброса данных, похожи на заданные.
-
- Сообщения: 1776
- Зарегистрирован: Вс май 01, 2005 9:02 pm
w
Последний раз редактировалось алексей_алексей Пт июн 17, 2016 9:38 am, всего редактировалось 1 раз.
-
- Сообщения: 1776
- Зарегистрирован: Вс май 01, 2005 9:02 pm
s
Последний раз редактировалось алексей_алексей Пт июн 17, 2016 9:38 am, всего редактировалось 1 раз.
-
- Сообщения: 1817
- Зарегистрирован: Сб ноя 13, 2004 3:06 pm
- Откуда: п.г.т. Излучинск
- Контактная информация:
Алексей Борисович, я типа не понял, а где моя типа медаль или типа печенька за труды праведные? Если товарищ из Израиля специалист, то он и без меня разберётся, куда уж мне, самокатному...
И вообще, инженеры сами по себе не склонны усложнять себе жизнь, составляя системы нелинейных уравнений. Что это за инженер, который ставит себе научную задачу? Они практики, +/- 10-15% - это результат, а вы тут такие ужасные невязки показываете. Таких же инженеров, которые ещё и научные работники, не так много, да и переводятся потихоньку.
П.С. Да, кстати, я реализовал нелинейную регрессию в лоб, получается. Судя по теме рядом, это можно сделать проще при помощи genfit().Видимо в этой функции идут по восстановленной кривой при помощи производных по параметрам, а варьируется шаг суммарной невязкой (или её квадратом) и это влияет на шаг по параметру решателя диффура. Интересно как там она внутри реализована... надо подумать.
И вообще, инженеры сами по себе не склонны усложнять себе жизнь, составляя системы нелинейных уравнений. Что это за инженер, который ставит себе научную задачу? Они практики, +/- 10-15% - это результат, а вы тут такие ужасные невязки показываете. Таких же инженеров, которые ещё и научные работники, не так много, да и переводятся потихоньку.
П.С. Да, кстати, я реализовал нелинейную регрессию в лоб, получается. Судя по теме рядом, это можно сделать проще при помощи genfit().Видимо в этой функции идут по восстановленной кривой при помощи производных по параметрам, а варьируется шаг суммарной невязкой (или её квадратом) и это влияет на шаг по параметру решателя диффура. Интересно как там она внутри реализована... надо подумать.
-
- Сообщения: 1776
- Зарегистрирован: Вс май 01, 2005 9:02 pm
s
Последний раз редактировалось алексей_алексей Пт июн 17, 2016 9:38 am, всего редактировалось 1 раз.
-
- Сообщения: 1776
- Зарегистрирован: Вс май 01, 2005 9:02 pm
уравнения от UMP-а
s
Последний раз редактировалось алексей_алексей Пт июн 17, 2016 9:39 am, всего редактировалось 1 раз.
-
- Сообщения: 1817
- Зарегистрирован: Сб ноя 13, 2004 3:06 pm
- Откуда: п.г.т. Излучинск
- Контактная информация:
Ну, не знаю, Алексей Борисович, это конечно красиво смотрится и всё такое, но чем это лучше, скажем, вот этого: http://en.smath.info/forum/yaf_postsm79 ... x#post7901
В плане демонстрации. Я вот от алгебраической регрессии почему-то к нелинейной перейти не могу, решатель долго думать начинает.
Там производные по параметрам простые, когда параметры - множители, а вот когда типа вот так: f(x,a) = a[1] + a[2] * exp( a[3] * x ) - вот тут возникают проблемы. Даже на таком простом вроде бы случае. Проблема в данном случае - это порождение сложного выражения из-за обилия точек и двойного дифференцирования.
Несмотря на то, что вы органически не перевариваете всё алгебраическое, тем не менее, в качестве демонстрации работы решателя на основе метода я показываю примеры документов по восстановлению коэффициентов алгебраических кривых по "опытным данным" (критерий минимума суммы квадратов невязки):
http://en.smath.info/forum/yaf_postsm80 ... x#post8079
В плане демонстрации. Я вот от алгебраической регрессии почему-то к нелинейной перейти не могу, решатель долго думать начинает.
Там производные по параметрам простые, когда параметры - множители, а вот когда типа вот так: f(x,a) = a[1] + a[2] * exp( a[3] * x ) - вот тут возникают проблемы. Даже на таком простом вроде бы случае. Проблема в данном случае - это порождение сложного выражения из-за обилия точек и двойного дифференцирования.
Несмотря на то, что вы органически не перевариваете всё алгебраическое, тем не менее, в качестве демонстрации работы решателя на основе метода я показываю примеры документов по восстановлению коэффициентов алгебраических кривых по "опытным данным" (критерий минимума суммы квадратов невязки):
http://en.smath.info/forum/yaf_postsm80 ... x#post8079
-
- Сообщения: 1817
- Зарегистрирован: Сб ноя 13, 2004 3:06 pm
- Откуда: п.г.т. Излучинск
- Контактная информация:
Постановка задачи могла бы выглядеть так:
Как видно из предыдущего моего поста, для алгебраических кривых (суммы степеней x) эта система очень просто решается методом даже на SMath. Для K = 4 параметров и M = 10 точек - t = 2 секунды работы интерпретатора.
Заставить же решить что-то посложнее степенных функций у меня пока не получилось. Именно, когда параметр "входит внутрь" нелинейности.
Это ведь нелинейная оптимизационная задача, так?

Как видно из предыдущего моего поста, для алгебраических кривых (суммы степеней x) эта система очень просто решается методом даже на SMath. Для K = 4 параметров и M = 10 точек - t = 2 секунды работы интерпретатора.
Заставить же решить что-то посложнее степенных функций у меня пока не получилось. Именно, когда параметр "входит внутрь" нелинейности.
Это ведь нелинейная оптимизационная задача, так?
-
- Сообщения: 1776
- Зарегистрирован: Вс май 01, 2005 9:02 pm
s
Последний раз редактировалось алексей_алексей Пт июн 17, 2016 9:39 am, всего редактировалось 1 раз.
-
- Сообщения: 1817
- Зарегистрирован: Сб ноя 13, 2004 3:06 pm
- Откуда: п.г.т. Излучинск
- Контактная информация:
Да в ряд-то разложить каждый может, ещё со времён дедушки Ньютона, он был спец. Да, с заменой это тема, но хотелось как у О.Бендера - сразу.
А на счёт численного Якобиана я всё равно попробую. Считать оно может будет и дольше, зато это можно реализовать без символьных вычислений. Над точностью можно поработать, всё-таки нахождение производной и численная аппроксимация - это как-бы на порядки разные задачи, если их реализовывать в отдельной программе, а не в математическом пакете. Интеграторы интегрируют же и ничего, пусть дифференциаторы дифференцируют. Если будут проблемы банально на окружности в начальную точку вернуться, то даа...
А на счёт численного Якобиана я всё равно попробую. Считать оно может будет и дольше, зато это можно реализовать без символьных вычислений. Над точностью можно поработать, всё-таки нахождение производной и численная аппроксимация - это как-бы на порядки разные задачи, если их реализовывать в отдельной программе, а не в математическом пакете. Интеграторы интегрируют же и ничего, пусть дифференциаторы дифференцируют. Если будут проблемы банально на окружности в начальную точку вернуться, то даа...
-
- Сообщения: 1776
- Зарегистрирован: Вс май 01, 2005 9:02 pm
s
Последний раз редактировалось алексей_алексей Пт июн 17, 2016 9:40 am, всего редактировалось 1 раз.
-
- Сообщения: 1776
- Зарегистрирован: Вс май 01, 2005 9:02 pm
s
Последний раз редактировалось алексей_алексей Пт июн 17, 2016 9:40 am, всего редактировалось 1 раз.