Разработка, производство и продажа радиоэлектронной аппаратуры
|
Требуется программист в Зеленограде - обработка данных с датчиков; ColdFire; 40 тыс.
e-mail: jobsmp@pochta.ru
|
Ну, во-первых, вместо A/(B+C*x) лучше сразу перейти к 1/(D+E*x). D=B/A, E=C/A. Все равно относительно трех неизвестных A,B,C Вы решения скорей всего не найдете. Они у Вас скорей всего склестятся и Вы не разберете, где A, где С, где B. А D и E уж точно друг с дружкой не склестятся.
1)Можно разложить y(D,E,x) в ряд Тейлора, но не относительно x, а относительно D,E. В окрестности точки D0,E0. И ограничиться например только линейными членами в разложении, т.е. приращениями dD,dE. Но предварительно нужно будет выбрать начальное приближение для D,E - D0,E0. В результате всего Вы получите полином с неизвестными dD,dE. С полиномом все просто. Вы легко определите dD,dE. Используя их скорректируете начальные значения D0,E0. Получите следующее приближение для D,E - D1,E1. Далее посмотрите, какая у Вас получилась ошибка. Если она вас устраивает - значит все, решение найдено. Если не устраивает - повторяете, но уже в окрестности D1,E1. Находите новые приращения dE,dD. Корректируете D1,E1. И т.д. До тех пор, пока Вас не будет удовлетворять ошибка. Это я вам вкратце метод Ньютона рассказал:-)
В более сложных случаях нужно еще и скорость изменения D,E от итерации к итерации контролировать, определять попадание в локальные минимумы среднекв. ошибки, уметь из них выбираться.
Есть другой метод. Он может оказаться много проще. Возьмите в ваших экспер. данных не y, а обратную величину, 1/y. Тогда вы ее сможете аппроксимировать зависимостью (B+C*x)/A=D+E*x. Уж с ней-то Вы должны справиться легко:-)
А вообще была какая-то программа, забыл название, у нее огромный выбор функций, которыми она аппроксимировала.
Составить ответ | Вернуться на конференцию
Ответы