Математический форум Math Help Planet
http://mathhelpplanet.com/

Аппроксимация точек прямой и параболой с помощью МНК
http://mathhelpplanet.com/viewtopic.php?f=37&t=31467
Страница 1 из 4

Автор:  Mariya111 [ 27 фев 2014, 20:53 ]
Заголовок сообщения:  Задание 6

Помогите пожалуйста решит задание 6.

Изображение

Автор:  Talanov [ 28 фев 2014, 07:20 ]
Заголовок сообщения:  Re: Задание 6

Наберите "Линейная регрессия, МНК", вывалится ваша тема с примерами.

Автор:  Avgust [ 28 фев 2014, 11:59 ]
Заголовок сообщения:  Re: Аппроксимация точек прямой и параболой с помощью МНК

Поскольку жизнь не стоит на месте и появляются новые методы, то предлагаю свой подход к решению задачи аппроксимации. Сначала первый пример. Рассмотрю более сложный вариант, где аппроксимация параболой.

▼ Свой подход к решению задачи аппроксимации
Составляю текстовой файл данных с именем xy.txt

2 -2.5
3 -6.7
4 -7.9
5 -8.5
6 -6.7
7 -6.3
8 -3.3
9 0.3
10 4
11 9.2


Далее составляю простенькую программу аппроксимации методом Монте-Карло:

open #1,"xy.txt","r"
dim x(100),y(100)
z=.001
for i=1 to 10
input #1 x(i),y(i)
next i
a0=1:b0=-1:c0=1
s1=10^150:nn=1000000
for j=1 to nn
a=a0*(1+z*(ran()-.5))
b=b0*(1+z*(ran()-.5))
c=c0*(1+z*(ran()-.5))
s=0
for i=1 to 10
x=x(i):y=y(i)
f=a*x^2+b*x+c
s=s+(y-f)^2
next i
if s<=s1 then
print a,b,c,s
ak=a:bk=b:ck=c:sk=s:s1=s
a0=a:b0=b:c0=c
fi
next j


Запускаю ее и нахожу коэффициенты параболы с оптимальными коэффициентами

[math]y=0.491661x^2-4.95401x+4.53217[/math]

Результаты полностью совпали. При этом минимальная сумма квадратов отклонений равна 3.21

Теперь вторая задача:
Файл данных
0.5 6.5
1.0 5.5
1.5 4.5
2.5 3.0
4.0 2.5


Программа

open #1,"xy2.txt","r"
dim x(100),y(100)
z=.001
for i=1 to 5
input #1 x(i),y(i)
next i
a0=-1:b0=1
s1=10^150:nn=1000000
for j=1 to nn
a=a0*(1+z*(ran()-.5))
b=b0*(1+z*(ran()-.5))
s=0
for i=1 to 5
x=x(i):y=y(i)
f=a*x+b
s=s+(y-f)^2
next i
if s<=s1 then
print a,b,s
ak=a:bk=b:sk=s:s1=s
a0=a:b0=b
fi
next j
print ak,bk,sk


Результат

[math]y=-1.14285 x+6.57142[/math]

Изображение

Минимальная сумма квадратов отклонений 1.143

Мой метод хорош тем, что можно быстро производить аппроксимации самыми сложными функциями. На эти две задачи я потратил всего 10 минут (с учетом набивки данных и корректировки программ).
PS По поводу второй задачи: я бы смог полностью сделать задание, но никак не разгляжу степень при числе 3.

Автор:  Talanov [ 28 фев 2014, 12:14 ]
Заголовок сообщения:  Re: Аппроксимация точек прямой и параболой с помощью МНК

Avgust писал(а):
PS По поводу второй задачи: я бы смог полностью сделать задание, но никак не разгляжу степень при числе 3.

А вы ее найдите. По МНК.

Автор:  mad_math [ 28 фев 2014, 14:42 ]
Заголовок сообщения:  Re: Аппроксимация точек прямой и параболой с помощью МНК

Mariya111 писал(а):
Помогите решить пожалуйста номер 6.
Вы инвалид без ручек, ножек и мозга? Не можете в сервисе static.php?p=onlayn-mnk-i-regressionniy-analiz свои данные вбить?

Автор:  Talanov [ 28 фев 2014, 15:14 ]
Заголовок сообщения:  Re: Аппроксимация точек прямой и параболой с помощью МНК

mad_math писал(а):
Вы инвалид без ручек, ножек и мозга? Не можете в сервисе static.php?p=onlayn-mnk-i-regressionniy-analiz свои данные вбить?

А для чего там нужен мозг, ноги и руки?

Автор:  Mariya111 [ 28 фев 2014, 16:24 ]
Заголовок сообщения:  Re: Аппроксимация точек прямой и параболой с помощью МНК

Спасибо большое :good: , степень у тройки 2-х

Автор:  mad_math [ 28 фев 2014, 16:44 ]
Заголовок сообщения:  Re: Аппроксимация точек прямой и параболой с помощью МНК

Talanov
Talanov писал(а):
А для чего там нужен мозг, ноги и руки?
Руки, чтобы вбить данные и переписать решение, мозг, чтобы это проконтролировать и проанализировать результат. Ноги, чтобы отнести всё преподавателю.

Автор:  Avgust [ 28 фев 2014, 18:48 ]
Заголовок сообщения:  Re: Аппроксимация точек прямой и параболой с помощью МНК

Я Вас удивлю, если скажу: приближение [math]y=3^{2-x}+2[/math] - очень плохое. Оно даже хуже, чем линейная аппроксимация, поскольку сумма квадратов отклонений равна 1.652. Гораздо лучшую аппроксимацию получим по моей же программе:

open #1,"xy2.txt","r"
dim x(100),y(100)
z=.001
for i=1 to 5
input #1 x(i),y(i)
next i
a0=2:b0=2
s1=10^150:nn=1000000
for j=1 to nn
a=a0*(1+z*(ran()-.5))
b=b0*(1+z*(ran()-.5))
s=0
for i=1 to 5
x=x(i):y=y(i)
f=3^(a-x)+b
s=s+(y-f)^2
next i
if s<=s1 then
print a,b,s
ak=a:bk=b:sk=s:s1=s
a0=a:b0=b
fi
next j
print ak,bk,sk


Оптимальная кривая такой же конструкции выглядит так:

[math]y=3^{1.79267-x}+2.71102[/math]

Минимум квадратичных отклонений всего 0.568

Моя аппроксимация графически выглядит так

Изображение

Сопоставление двух кривых см.
http://www.wolframalpha.com/input/?i=pl ... %3D0..7%29

Автор:  mad_math [ 28 фев 2014, 19:06 ]
Заголовок сообщения:  Re: Аппроксимация точек прямой и параболой с помощью МНК

Avgust
Вообще-то по этой задаче Mariya111 ещё вчера создала отдельную тему viewtopic.php?f=37&t=31297 а Вы сейчас засоряете чужую, для этого не предназначенную тему.

Страница 1 из 4 Часовой пояс: UTC + 3 часа [ Летнее время ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/