Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Регуляризация Тихонова в MathCAD
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Математика и Физика
Ufauser
Добрый вечер, Коллеги.
В моей работе встал вопрос об использовании регуляризации Тихонова. Интернет не блещет примерами, есть лишь один пример в MathCAD12. Однако, набрав листинг я не получил результата, похожего на разобранный пример.

Функция Y0(x) почему-то пошла вдоль оси абсцисс. Если кто-то сталкивался с подобной проблемой, прошу помощи.
Vallen2006
Цитата(Ufauser @ Dec 11 2011, 01:37) *
Добрый вечер, Коллеги.
В моей работе встал вопрос об использовании регуляризации Тихонова. Интернет не блещет примерами, есть лишь один пример в MathCAD12. Однако, набрав листинг я не получил результата, похожего на разобранный пример.

Функция Y0(x) почему-то пошла вдоль оси абсцисс. Если кто-то сталкивался с подобной проблемой, прошу помощи.


Попробуйте изменить параметр регуляризации lambda. Можно попвтаться найти его исходя из невязки, но как правило это дает завышенное значение.
Major
1. Для начала протестируйте код на rhs без шума (в этом случае лямбда надо установить в ноль при поиске решения).
Когда ПР равен нулю метод Тихонова полностью эквивалентен методу максимального правдоподобия (МНК может быть реализацией поиска решения). Если на данных без шума вы сможете получить решение, то можно двигаться дальше.

2. можно запостить хелп либо линку на функцию lsolve (не пользуюсь маткадом)?

Ufauser
Цитата(Vallen2006 @ Dec 12 2011, 07:26) *
Попробуйте изменить параметр регуляризации lambda. Можно попвтаться найти его исходя из невязки, но как правило это дает завышенное значение.

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

Цитата(Major @ Dec 12 2011, 09:55) *
1. Для начала протестируйте код на rhs без шума (в этом случае лямбда надо установить в ноль при поиске решения).
Когда ПР равен нулю метод Тихонова полностью эквивалентен методу максимального правдоподобия (МНК может быть реализацией поиска решения). Если на данных без шума вы сможете получить решение, то можно двигаться дальше.

2. можно запостить хелп либо линку на функцию lsolve (не пользуюсь маткадом)?

2. "lsolve(M, v) Returns the solution x for the linear system of equations M·x = v, using LU decomposition. The BLAS/LAPACK libraries (http://www.intel.com/software/products/mkl/features/lin_alg.htm) from Intel are used.

Arguments:
M is a real or complex matrix. If the matrix is square, it must be non-singular.
v is a real or complex vector or matrix having the same number of rows as M. "

1. к сожалению, я не понимаю что такое RHS без шума. Как раз на примере из учебника хотел понять и решить свое уравнение (Максвелла для E,B,H,D в обратном радиоканале)
"Когда ПР равен нулю метод Тихонова полностью эквивалентен методу максимального правдоподобия (МНК может быть реализацией поиска решения). Если на данных без шума вы сможете получить решение, то можно двигаться дальше." спасибо, попробую. Опишусь, если получится.
Major
RHS без шума это праваю часть уравнения задать без шума.
В вашем случае надо установить сигма равной нулю.

ПР - параметр регуляризации (лямбда).
Если решаете задачу без шума, то лямбда можно установить равной нулю.

Если в задаче с шумом или без шума установить лямбда=0, то получим метод наименьших квадратов (МНК).
Этот метод дает решение по критерия максимального правдоподобия (МП-оценку).
Оценка ОНК является лучшей в классе несмещенных оценка (теорема гаусса-маркова).
Это означает что дисперсия оценки будет минимальная и оценка имеет нулевое смещение.

Регуляризация позволяет позволяет снизить дисперсию, но плата за это смещение результата.
Ее можно рассматривать как некий вид оптимальной фильтрации.
Обычно регуляризацию Тихонова записывают в виде минимизации функционала.
То что записано у вас это приведение у уравнению Эйлера.
A'*Au+au=A'f
u - искомый вектор,
f - правая часть (rhs)
A - оператор (A' транспонированный).


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

У вас походе ошибка в коде:
вы написали Y0(x), а надо Y0(X)

Как-то так. Позже дополню еще.





Ufauser
Цитата(Major @ Dec 12 2011, 16:06) *
RHS без шума это праваю часть уравнения задать без шума.
В вашем случае надо установить сигма равной нулю.

У вас походе ошибка в коде:
вы написали Y0(x), а надо Y0(X)

"посидел еще немножко" до 5ти утра.
ни приравнивание сигмы к нулю, ни изменение х на Х в коде к решению не привели. Появилось подозрение, что к учебнику Маткад 12 шел диск с программой, а в этих листингах НЕПОЛНЫЙ ее текст.
Как результат, скорее всего там за "принт скрином" осталась часть кода программы.

Кто-нибудь может объяснить, как решить y=kx методом Тихонова, если k тоже плавает?
Major
Matlab подойдет?
Ufauser
Цитата(Major @ Dec 15 2011, 09:14) *
Matlab подойдет?

все, что угодно. Мне важно понять, как задавать уравнения, чтобы вытаскивать и невязку и ПР. Сам я в Мейпл привык работать с института еще. В маткад ударился только потому, что единственный пример в интернете именно для него разобран))))
Xenia
А почему клин сошелся на регуляризации Тихонова? Почему бы не решить задачу по-простецки - обычной регрессией, аки методом наименьших квадратов?
Ufauser
Цитата(Xenia @ Dec 15 2011, 16:08) *
А почему клин сошелся на регуляризации Тихонова? Почему бы не решить задачу по-простецки - обычной регрессией, аки методом наименьших квадратов?

Ксения, представьте себе город. Ваш, в котором Вы живете.
Представьте себе, что там есть сотовая связь.
Базовая станция(БС) излучает в "свободное пространство" города, Мобильная Станция(МС) "ловит" излучение. Вопрос в том, что расчетная зона покрытия может не совпасть с реальной. Вот посчитали Вам, что на улице Ленина у Вас будет связь. Вы вышли с МС, и не смогли позвонить, "палочек" на антенне нет. )
Начинаем изучать канал связи в прямую и обратную сторону.
Фундаментальный подход - посчитать волну с помощью уравнений Максвелла. Однако, в уравнении типа D=eE явно есть "косяки"
Ну не совпадает эксперимент и расчет.
Начинаем думать, возможно, ошибка кроется в e=1 для воздуха. (тем более, что японец посчитал диэлектрическую проницаемость не просто для воздуха, а для СУхого воздуха при частоте 0,9МГц), начинаем решать уравнение Тихонова, которое имеет ту же структуру с регуляризационными параметрами. Собственно, мне интересно, что получится именно этим способом. Так понятно объяснил?
Ufauser
Цитата(Major @ Dec 15 2011, 09:14) *
Matlab подойдет?

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



решение изначальной задачи в Маткаде завершено. До смешного просто все.
В листинге нет вот этой формулы YO(X)=7X. Они не ввели функцию, к которой должна стремиться исходная.

Вот результат -
Major
Файл подгрузил.
По сути регуляризации я писал выше.
Проверить можно вызывая reg_solver_test(20,0.08).
Первый параметр мощность шума, второй альфа.
Будут вопросы, пишите.

P.S. Был в отъезде, поэтому долго не отвечал.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.