A A A A Автор Тема: Помогите расчитать период!  (Прочитано 2125 раз)

0 Пользователей и 1 Гость просматривают эту тему.

SD

  • Гость
Помогите расчитать период!
« : 22 Фев 2007 [20:58:36] »
Здавствуйте!
Я увлёкся темой периодических процессов в практической (наблюдательной) астрономии.
В том числе тема- переменные звёзды.

У меня такая задача.

Дано:
X- переменная величина
F(X)- переодическая функция одной переменной (блеск, температура звезды, яркость и т.д.)
T(X)- период этой функции

Уравнение вида: F(x)= A*Cos[ 2*pI* X/T(x) + ФИ ]+ B, где A- амплитуда, вычисляемая по формулам; B- вычисляемая по формулам среднее (постоянная величина); pI- число пи; X- переменная; T(x)- период; ФИ- начальная фаза
Кроме того , известно, что период T(X) тоже переменная величина!
Значения переодической функции F(X) имеют погрешности измерений!

Найти:
1. Уравнение этой периодической функции
2. Уравнение периода T(x) этой функции
3. Погрешность расчёта периода T(x)


Спасибо.

Оффлайн Штрель > 1

  • ****
  • Сообщений: 449
  • Благодарностей: 3
    • Сообщения от Штрель > 1
Re: Помогите расчитать период!
« Ответ #1 : 23 Фев 2007 [13:02:44] »
SD,
готовой формулы нет чтобы подставить и получить все искомые величины.
Для начала нужно почитать теорию метода наименьших квадратов (МНК). Затем освоить какой-нибудь язык программирования и написать программку для своих расчетов.
Если коротко, то для ваших расчетов нужен т.н. линеаризованный МНК. Сперва подбирается функция, которая приблизительно описывает ваши данные, затем в моменты наблюдений вычисляются производные функции по искомым параметрам. В вашем случае это будут
dF/dA, dF/dB, dF/dT, dF/dФИ.
Если период меняется, то нужно добавить производные функции по производным периода. Далее запускается стандартная процедура МНК.
В свое время я все это считал на программируемом калькуляторе. Сейчас все проще. Можно самому, как я уже сказал, написать свою программку, а если вникать и программировать лениво, то можно воспользоваться готовыми возможностями любого из совр. мат. пакетов: Mathematica, Maple, Matlab и т.п.
Очки -3.5D.

SD

  • Гость
Re: Помогите расчитать период!
« Ответ #2 : 23 Фев 2007 [13:49:48] »
Поздравляю всех мужчин с 23 февраля!!!

Спасибо, a243 за отзыв!
Я "Методом наименьших квадратов" пользовался, но погрешность получалась большая. Этот метод очень хорошо работает для окололинейных функций, а у меня периодическая сильно нелинейная функция.
Уравнение вида  F(x)= A*Sin(2pI*X/T(x)) + B, где A, B- постоянные, вычисляемые по формулам; X- переменная; T(x)- период
Здесь начальную фазу я не использолвал.
Попробовал использовать ряд Фурье, но я не знаю, как вычислить период T(X) для функции F(x)= A0 + СУММА [ An*Sin(2pI*n*X/T(x)) + ФИn], , где F(x)- периодическая функция одной переменной X; A0, An- параметры ряда Фурье; n- номер гармоники; СУММА расчитывается в пределе от n=1 до N; N- число наблюдений; ФИn- фаза.
Кроме того , известно, что период T(X) тоже переменная величина!

Подскажите, как при помощи " Метода наименьших квадратов" найти фазу ФИ: F(x)= A*Cos[ (2pI* X/T(x) + ФИ)
(Фукнкция одной переменной)


P.S. Попробую ваш совет- поискать ответ в Maple, Matlab.

Оффлайн Штрель > 1

  • ****
  • Сообщений: 449
  • Благодарностей: 3
    • Сообщения от Штрель > 1
Re: Помогите расчитать период!
« Ответ #3 : 23 Фев 2007 [15:11:48] »
Будет проще, если вы приведете рисунок с данными. Тогда можно будет прицельнее советовать.
В вашем случае, возможно, действительно проще разложить экспер.кривую в ряд Фурье, тогда переменный период просто приведет к возникновению доп. гармоник.
Представить ряд лучше в виде

F(x)=Сумма_по_i[Ai cos(2Pi x/Ti)+Bi sin(2Pi x/Ti)],

тогда фаза находится из выражения

ФИi=arctg(Bi/Ai).

Успехов!

Александр

Очки -3.5D.

Оффлайн dims

  • *****
  • Сообщений: 11 735
  • Благодарностей: 124
  • Пожалуй, стоит ограничиться обменом мнениями
    • Skype - virafon
    • Сообщения от dims
    • Мой блог
Re: Помогите расчитать период!
« Ответ #4 : 23 Фев 2007 [18:21:48] »
На всякий случай скажу, что широко распространённая программа Excel позволяет подобрать параметры любой функции так, чтобы она выдавала нужные (полученные из эксперимента) данные. Нужно только угадать вид функции и примерно угадать значения параметров.

В данном примере, на первый взгляд, первое сделано, а второе нетрудно.
Димс.
Я прекратил участие в форуме.

SD

  • Гость
Re: Помогите расчитать период!
« Ответ #5 : 23 Фев 2007 [18:38:05] »
Вот ,для примера, данные:

или в табл виде:
x   F(x) Real
1   115
2   65
3   87
4   74
5   81
6   115
7   93
8   81
9   88
10   86
11   120
12   122
13   116
14   80
15   97
16   114
17   94
18   89
19   124
20   90
21   86
22   113
Попробуйте найти для этих данных зависимость.

Для ряда Фурье:
F(x)=Сумма_по_i[Ai cos(2Pi x/Ti)+Bi sin(2Pi x/Ti)]
Я считал число гармоник N=10.
При постоянном периоде T=3.2дня,  погрешность относит= 12.06% (приходящаяся в среднем на одну точку)
-//-           Т=5,49, погрешность относит= 11.99%
-//-           Т=7,36, погрешность относит= 11.44% , т.е. очень большие!
При увеличении гармоник до N=40, погрешность уменьшается на доли процента, а далее опять быстро растёт.


При T=7.36, N гармоник=10, число точек n=22, получим коэффициенты ряда Фурье:
a(n)                       b(n)
-0,621857                      -5,529013
1,51                       5,856786
-3,812778                       0,6891267
-0,353112                      -0,140857
4,48569                 -2,73708
2,088475                      -2,487916
0,52148                       0,1502522
0,2877555                       0,176216
1,234044                      -0,1000874
-0,204606                       0,3348371
Возможно и периоды менее 0,01 дня, но я пока не нашёл с меньшей погрешностью.

Оффлайн Штрель > 1

  • ****
  • Сообщений: 449
  • Благодарностей: 3
    • Сообщения от Штрель > 1
Re: Помогите расчитать период!
« Ответ #6 : 24 Фев 2007 [12:02:34] »
Периодограмма показывает, что нет одного ярко выраженного периода. Есть суперпозиция нескольких.
Данные (вычтено среднее значение) неплохо описываются такой кривой:
-10.1623 + 2679.83 Cos[0.598399 x] - 5472.87
      Cos[0.661388 x] - 1003.11 Cos[0.739198 x] + 5689.45
      Cos[0.837758 x] - 1128.59 Cos[0.966644 x] - 460.497
      Cos[1.1424 x] - 71.1117 Cos[1.39626 x] - 13.8655 Cos[
      1.7952 x] - 4.29569 Cos[2.51327 x] + 459.639 Sin[0.598399 x] - 6065.77
Sin[0.661388 x] + 9798.85 Sin[0.739198 x] - 2374.46 Sin[0.837758 x] - 1882.46
Sin[0.966644 x] + 73.0512 Sin[1.1424 x] + 28.0714 Sin[1.39626 x] - 11.1905
Sin[1.7952 x] + 2.43121 Sin[2.51327 x]

График прилагаю.

Успехов!
Очки -3.5D.

SD

  • Гость
Re: Помогите расчитать период!
« Ответ #7 : 25 Фев 2007 [01:14:38] »
Спасибо, Александр, за предоставленный материал относительно расчётов нахождения зависимости с помощью ряда Фурье!
Действительно,  предложенная Вами функциональная зависимость очень хорошо описывает данный процесс- средняя погрешность относит=2,2003% !!!

В этой зависимости есть одно "но". Посчитаем некоторые значения предложенной функции:
X=23, Y teor=-95.25 ,
X=24, Y teor=-804.63,
X=25, Y teor=-1407.13,
X=26, Y teor=-615.09,
X=27, Y teor=+1996.66,
X=28, Y teor=+4902.56!
Если учесть, что X- это время (в днях), то данная зависимость при экстраполяции не совсем подходит. (Y практически находится в пределе примерно от +10 до +170.)
У меня также выведена зависимость, похожая на Вашу, с помощью ряда Фурье (число гармоник, как и у Вас, я взял n=9). У неё погрешность больше, чем у Вашей и равна 3,4453%. Она при экстраполяции даёт такие значения:
X=23, Y teor=111.1 ,
X=24, Y teor=68.4,
X=25, Y teor=84.1 и т.д., т. е. начинается новый цикл с периодом Т contanta=22 дня, что для этого процесса не совсем подходит, так как есть предположение, что зависимость имеет переменный период.
Ниже прилагаю свои расчёты (коэфф. Фурье и график этой функции).

Оффлайн Михаил_Никитин

  • ***
  • Сообщений: 195
  • Благодарностей: 0
  • Воинствующий атеист
    • Сообщения от Михаил_Никитин
Re: Помогите расчитать период!
« Ответ #8 : 25 Фев 2007 [11:54:39] »
Общие соображения по теме: для качественной экстраполяции нужен в несколько раз больший наблюдательный материал. Ряд Фурье корректен, только если колебание периодично с периодом 22 дня, а, судя по графику, период намного больше. Искомое колебание может оказаться суммой нескольких с близкими периодами, при этом каждое будет иметь свой ряд Фурье по своей наименьшей частоте, IMHO, искать формулу следует именно в этом виде (неизвестно: количество рядов, периоды, коэффициенты). Смотреть, что подходит. Еще при этом имеет смысл оценить инструментальную погрешность измерений. 

В качестве примеров именно таких звезд: Бетельгейзе и Мю Цефея.
...Но я стрелой проник туман!

Оффлайн Штрель > 1

  • ****
  • Сообщений: 449
  • Благодарностей: 3
    • Сообщения от Штрель > 1
Re: Помогите расчитать период!
« Ответ #9 : 25 Фев 2007 [13:48:37] »
Я подозревал, что Вы захотите проэкстраполировать. Используемый Вами и нами подход категорически не подходит для этого. Найденный ряд Фурье удовлетворительно описывает данные только ВНУТРИ интервала. Причем, это мог быть и простой степенной ряд, ряд по ортогональным полиномам и т.п. Если делать прогноз, то надо смотреть в сторону авторегрессий и калмановских фильтров.
Очки -3.5D.

SD

  • Гость
Re: Помогите расчитать период!
« Ответ #10 : 25 Фев 2007 [18:09:14] »
Подскажите пожалуйста, кто знает, где можно скачать бесплатно, условно-платно рабочие версии, демо-версии программ по статистике (STATISTICA, Stata, ...), математ. пакетов ( Mathcad, Maple, Matlab, Mathematica, ...) на РУССКОМ ЯЗЫКЕ. :( ???