2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




На страницу 1, 2  След.
 
 Аппроксимация
Сообщение10.01.2011, 12:54 
Аватара пользователя
В диелектриках проводимость сильно зависит от температури и пропорциональна, в простейшем случае,$\exp(E_a/KT)$, но подумав , можно вывести такую формулу: $\sigma=$\sigma_0  * \exp(E_a/KT)*\sh(B/KT).
У меня есть графики зависимости проводимости от температуры, и мне надо с них узнать константы $E_a и $B. Иначе говоря мне надо аппроксимировать Экспериментальные точки моей зависимостью.
В первом случае, когда самая, експонента, то нет ничего сложного и все стандартно. А вот когда умножения двоих функций, то не все понятно и однозначно. Меня интересует сам принцип как ето сделать, так как потом буду писать код на С++.

 
 
 
 Re: Аппроксимация
Сообщение10.01.2011, 14:19 
Аватара пользователя
Попробуйте вначале взять логарифм Вашей функции - получится сумма логарифмов, затем разложите их в ряд Тейлора. Сгруппируйте члены по параметрам с необходимой точностью их определения. Ну и дальше стандартно...

 
 
 
 Re: Аппроксимация
Сообщение10.01.2011, 15:12 
Аватара пользователя
Шимпанзе в сообщении #397573 писал(а):
Попробуйте вначале взять логарифм Вашей функции - получится сумма логарифмов, затем разложите их в ряд Тейлора. Сгруппируйте члены по параметрам с необходимой точностью их определения. Ну и дальше стандартно...

Ок.
возьмем натуральний логарифм от зависимочти $\sigma=\sigma_0 exp(ax)sh(bx)$
$ln \sigma =ln [\sigma_0 exp(ax)sh(bx)]$
$ln \sigma =ln {\sigma_0}+ln [exp(ax)sh(bx)] =ln {\sigma_0}+ln [exp(ax)] +ln [sh(bx)]=ln {\sigma_0}+ax +ln[sh(bx)]$
Позначу:
$\ln {\sigma_0}=c=const$
$\ln {\sigma}=y$
тогда:
$y=c+ax +\ln{sh(bx)}$
В результате я получу суму двоих функций:
$y=y_1+y_2$
1)линейная зависимость
$y_1=ax+c$
2)не линейная зависимость.
$y_2=ln [sh(bx)]$
Теперь, по идее, я могу сначала аппроксимировать $y$ одной функцией $y_1$ , потом аппроксимировать $y$ второй фун. $y_2$ , а потом просто их сложить и буду иметь искавшую зависимость. Или я не прав?

-- Пн янв 10, 2011 15:24:56 --

Не линейная зависимость.
$y_2=ln [sh(bx)]$
положем $y_2=y$
поднесу все в $exp$
$exp(y)=sh(bx)$
возьму $arcsh$
$arcsh[exp(y)]=bx$
позначу $arcsh[exp(y)]=y^'$
И того буду иметь, опять , линейную зависимость $y^{'} =bx$
:mrgreen: Задача полностью свелась к линейной. :D
Если правильно предположения:
Цитата:
Теперь, по идее, я могу сначала аппроксимировать одной функцией , потом аппроксимировать второй фун. , а потом просто их сложить и буду иметь искавшую зависимость. Или я не прав?

 
 
 
 Re: Аппроксимация
Сообщение10.01.2011, 15:28 
Ubuntu_linux в сообщении #397549 писал(а):
А вот когда умножения двоих функций, то не все понятно и однозначно. Меня интересует сам принцип как ето сделать, так как потом буду писать код на С++.
В общем случае такие задачи сводятся к задаче нелинейной оптимизации методом наименьших квадратов. Наиболее распространенные численные методы: Гаусса-Ньютона и Левенберга-Марквардта.

Почитать можно, например, здесь: Ф. Гилл, У. Мюррей, М. Райт. Практическая оптимизация (4.7. Методы решения задач о наименьших квадратах).

 
 
 
 Re: Аппроксимация
Сообщение10.01.2011, 15:30 
Аватара пользователя
А в ряд Тейлора не получится, так как , вылезет степень неизвестного коеф. b , а мне этого не надо.

$bx+(bx)^2 +(bx)^3+.....$

 
 
 
 Re: Аппроксимация
Сообщение10.01.2011, 15:47 
Аватара пользователя
Ubuntu_linux в сообщении #397549 писал(а):
Меня интересует сам принцип как ето сделать, так как потом буду писать код на С++.
Я обычно в таких случаях читаю документацию к ROOT. Там подобные вещи уже реализованы.

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

 
 
 
 Re: Аппроксимация
Сообщение10.01.2011, 16:22 
Аватара пользователя
Как я понял, для упрощения исходной зависимости можно пользоваться такими способами:
1) Записать обратную функцию, например:
$ln(x)<-->exp(x)$
$sin(x) <--> arcsin(x)$
$\sqrt{x}< --> x^2$
......

2) Если у выражении произведения функций, то можно взять логарифм что преобразует произведения в сумму функций.
2.1) Разбиваем сумму на две задачи.

Таким образом, задача упростилась и дальше все стандартно.

 
 
 
 Re: Аппроксимация
Сообщение10.01.2011, 16:58 
Аватара пользователя

(Ubuntu_linux)

Ubuntu_linux
LaTeX на форуме поставлен в том числе для того, чтобы не писать уродливые обозначения для синуса и арксинуса. И стрелочки в нём тоже есть нормальные.

 
 
 
 Re: Аппроксимация
Сообщение10.01.2011, 17:18 
Ubuntu_linux в сообщении #397648 писал(а):
2.1) Разбиваем сумму на две задачи.

Таким образом, задача упростилась и дальше все стандартно.
А на примере можете показать, как Вы собираетесь "разбивать сумму на две задачи"?

Допустим, есть нелинейная зависимость
$y = 2^{k_1 x} + 3^{k_2 x}$
и набор экспериментальных данных
$y(0) = 2$
$y(1) = 5$
$y(2) = 13$
$y(3) = 35$
("Правильные" значения параметров: $k_1 = 1, k_2 = 1$)

На какие две задачи Вы разобьете эту сумму?

 
 
 
 Re: Аппроксимация
Сообщение10.01.2011, 17:35 
К участникам темы, особенно к топикстартеру: почему тема в разделе "Физика"? Может, в "Программирование" или в "Помогите решить / разобраться (М)"?

 
 
 
 Re: Аппроксимация
Сообщение10.01.2011, 18:21 
Аватара пользователя
pittite в сообщении #397696 писал(а):
К участникам темы, особенно к топикстартеру: почему тема в разделе "Физика"? Может, в "Программирование" или в "Помогите решить / разобраться (М)"?


Все правильно- к физике. К экспериментальной физике. Математики не сразу поймут о чем идет речь. Есть такой предмет "планирование эксперимента".

 
 
 
 Re: Аппроксимация
Сообщение10.01.2011, 18:44 
Шимпанзе в сообщении #397722 писал(а):
Есть такой предмет "планирование эксперимента".

Есть, только к предложенному вопросу он отношения не имеет. Вопрос был поставлен сугубо математический: как наилучшим образом аппроксимировать имеющиеся экспериментальные данные вполне конкретной математической моделью: $f(\alpha,\beta,\gamma)=\alpha(e^{\beta/T}-e^{\gamma/T})$. И тут уж, как ни крутись -- задача останется математически нетривиальной.

Другое дело, что здесь есть одно облегчающее обстоятельство. По смыслу задачи в первом приближении хорошей моделью является всё-таки чистая экспонента: $g(\alpha,\beta)=\alpha\,e^{\beta/T}$. Эта модель уже линеаризуется, и вот если для неё найти оптимальную пару $(\alpha_0,\beta_0)$, то можно надеяться, что и для более продвинутой модели (с добавочной экспонентой) хорошим начальным приближением будет тройка $(\alpha_0,\beta_0,0)$. Настолько хорошим, что, скорее всего, даже метод Ньютона с этого приближения уже быстро сойдётся. А метод Ньютона с точки зрения объёма вычислений -- штука крайне дешёвая для трёх параметров.

 
 
 
 Re: Аппроксимация
Сообщение10.01.2011, 18:50 
Аватара пользователя
Maslov в сообщении #397685 писал(а):
Ubuntu_linux в сообщении #397648 писал(а):
2.1) Разбиваем сумму на две задачи.

Таким образом, задача упростилась и дальше все стандартно.
А на примере можете показать, как Вы собираетесь "разбивать сумму на две задачи"?

Допустим, есть нелинейная зависимость
$y = 2^{k_1 x} + 3^{k_2 x}$
и набор экспериментальных данных
$y(0) = 2$
$y(1) = 5$
$y(2) = 13$
$y(3) = 35$
("Правильные" значения параметров: $k_1 = 1, k_2 = 1$)

На какие две задачи Вы разобьете эту сумму?

Вот на быструю руку, проверил моим способом:
$k_1=1.79$
$k_2=1.13$

 
 
 
 Re: Аппроксимация
Сообщение10.01.2011, 19:45 
Ubuntu_linux в сообщении #397732 писал(а):
Вот на быструю руку, проверил моим способом:
$k_1=1.79$
$k_2=1.13$
Ваше решение "на быструю руку" дает $y(3) \approx 82.8$ (вместо 35).
На мой взгляд, это не очень хороший результат.

 
 
 
 Re: Аппроксимация
Сообщение10.01.2011, 20:16 
Аватара пользователя
ewert в сообщении #397727 писал(а):
Шимпанзе в сообщении #397722 писал(а):
Есть такой предмет "планирование эксперимента".

Есть, только к предложенному вопросу он отношения не имеет. Вопрос был поставлен сугубо математический: как наилучшим образом аппроксимировать имеющиеся экспериментальные данные вполне конкретной математической моделью: $f(\alpha,\beta,\gamma)=\alpha(e^{\beta/T}-e^{\gamma/T})$. И тут уж, как ни крутись -- задача останется математически нетривиальной.

Другое дело, что здесь есть одно облегчающее обстоятельство. По смыслу задачи в первом приближении хорошей моделью является всё-таки чистая экспонента: $g(\alpha,\beta)=\alpha\,e^{\beta/T}$. Эта модель уже линеаризуется, и вот если для неё найти оптимальную пару $(\alpha_0,\beta_0)$, то можно надеяться, что и для более продвинутой модели (с добавочной экспонентой) хорошим начальным приближением будет тройка $(\alpha_0,\beta_0,0)$. Настолько хорошим, что, скорее всего, даже метод Ньютона с этого приближения уже быстро сойдётся. А метод Ньютона с точки зрения объёма вычислений -- штука крайне дешёвая для трёх параметров.


Сразу видно, что Вы такой же экспериментатор как я химик. :-)

-- Пн янв 10, 2011 21:36:43 --

Maslov в сообщении #397773 писал(а):
Ubuntu_linux в сообщении #397732 писал(а):
Вот на быструю руку, проверил моим способом:
$k_1=1.79$
$k_2=1.13$
Ваше решение "на быструю руку" дает $y(3) \approx 82.8$ (вместо 35).
На мой взгляд, это не очень хороший результат.


Вы меня извините, четыре экспериментальные точки при двух неизвестных параметрах (!?)- считайте что никакого эксперимента вообще не было. Удивительно, что какой -то результат вообще есть....

 
 
 [ Сообщений: 26 ]  На страницу 1, 2  След.


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group