Я пытаюсь выполнить некоторую оценку параметров и хочу выбирать оценки параметров, которые минимизируют квадратную ошибку в предсказанном уравнении около 30 переменных. Если бы уравнение было линейным, я бы просто вычислил 30 частных производных, поставил их равными нулю и использовал решатель линейного уравнения. Но, к сожалению, уравнение нелинейное, а также его производные.
Если бы уравнение было по одной переменной, я бы просто использовал метод Ньютона (также известный как Ньютон-Рафсон). Веб богат примерами и кодами для реализации метода Ньютона для функций одной переменной.
Учитывая, что у меня около 30 переменных, , как я могу запрограммировать числовое решение этой проблемы с помощью метода Newton? У меня есть уравнение в замкнутой форме и могу вычислить первую и вторую производные, но я не знаю, как исходить оттуда. Я нашел большое количество обработок в Интернете, но они быстро попадают в тяжелую матричную нотацию. Я нашел что-то умеренно полезное в Википедии, но мне трудно перевести его в код.
В тех случаях, когда я беспокоюсь о разрыве, в матричной алгебре и матричных инверсиях. Я могу инвертировать матрицу с решателем линейного уравнения, но я беспокоюсь о том, чтобы получить правильные строки и столбцы, избегая ошибок транспонирования и т.д.
Чтобы быть конкретным:
-
Я хочу работать с таблицами, сопоставляя переменные с их значениями. Я могу написать функцию такой таблицы, которая возвращает квадратную ошибку, учитывая такую таблицу как аргумент. Я также могу создавать функции, возвращающие частную производную по любой заданной переменной.
-
У меня есть разумная стартовая оценка для значений в таблице, поэтому я не беспокоюсь о конвергенции.
-
Я не уверен, как написать цикл, который использует оценку (таблицу значений для каждой переменной), функцию и таблицу функций с частичной производной для создания новой оценки.
Последнее, с чем мне хотелось бы помочь. Любую прямую помощь или указатели на хорошие источники будут тепло оценены.
Edit: Поскольку у меня есть первая и вторая производные в закрытой форме, я хотел бы воспользоваться ими и избежать более медленных методов схождения, таких как поиск симплексов.