Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Метод наименьших квадратов для, трех перемеенных. ОЧЕНЬ СРОЧНО 
:(
    Опции темы
Alex1984
Дата 10.5.2006, 12:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 299
Регистрация: 6.3.2005
Где: Киев

Репутация: нет
Всего: 2



нужна программа АПРОКСИМАЦИИ ФУНКЦИИ НЕСКОЛЬКИХ ПЕРЕМЕННЫХ (Больше двух) мтодом наименьших квадратов.
F(x,y,z) 
Задана таблица 
...............x..y..z..F(x,y,z)
...............1..2..1.....5 
...............4..5..6....18
...............1..2..6.....8 
...............1..5..12...19
нужна найти функцию по данным таблици.
Напишите или растолкуте как прога должна выглядеть, для одной переменной понятно. А как матрица для нескольких переменных будет выглядеть. Не могу разобраться 

http://www.ibss.iuf.net/marecol/52/21.htm
Решение такой задачи только МНК 
PM MAIL WWW ICQ   Вверх
maxim1000
Дата 10.5.2006, 12:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 33
Всего: 110



аппроксимируется линейной?
тогда записываем e(x1,x2,x3)=a1*x1+a2*x2+a3*x3-F(x1,x2,x3)=at*x-F(x)
a - вектор (столбец) из a1,a2,a3
x - вектор (столбец) из x1,x2,x3
t - значок транспонирования
e^2(a,x)=at*x*xt*a-2*F(x)*at*x+F^2(x)
суммируем, выносим за скобки, получаем:
at*(сумма всех xt*x)*a-2*at*(сумма всех F(x)*x)+(сумма всех F^2(x))->min по a
все суммы вычисляем
первую называем A
вторую - b
третью, на самом деле, можно даже не вычислять - от a она не зависит - это просто число, и на минимизацию оно влиять не будет
получаем:
atAa-2*at*b->min
a=(A^-1)*b
P.S.
все вопросыреализации - сюда 


--------------------
qqq
PM WWW   Вверх
Dark Elf
Дата 10.5.2006, 12:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 576
Регистрация: 26.12.2003
Где: Брисбен

Репутация: 1
Всего: 10



Матрица будет следующей:

(Sai2)x1 + (Saibi)x2 + … + (Saili)xn - Saifi = 0
(Saibi)x1 + (Sbi2)x2 + … + (Sbili)xn - Sbifi = 0
………………………………………………
(Sliai)x1 + (Slibi)x2 + … + (Sli2)xn - Slifi = 0

Где S - это значок "сигма" (сумма)

x1, x2, x3... xn - аргументы функции.
fi - значения функции 


--------------------
PM MAIL WWW ICQ Skype GTalk Jabber MSN   Вверх
Alex1984
Дата 10.5.2006, 13:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 299
Регистрация: 6.3.2005
Где: Киев

Репутация: нет
Всего: 2



должно для линии общее уравнение f(x1,x2,x3)=а1*х1+а2*х1+а3*х1+а4
Матрица М4х4 состоящая из сумм
Вводим матрицу 3*n (х1[1] х2[1] х3[1]) и f[1] до n (n-число точек).
...............x1..x2...x3..F(x,y,z)
................1....2....1.....5 
................4....5....6....18
................1....2....6.....8 
................1....5...12...19
Конкретній пример из 4-х точек.
m[1.1]=n
m[1.2]=Sx1[i]
для одной переменной, как для трех буде?
Не понимаю.
atAa-2*at*b->min суть метода. но xt*x всегда число  

Это сообщение отредактировал(а) Alex1984 - 10.5.2006, 14:14
PM MAIL WWW ICQ   Вверх
maxim1000
Дата 10.5.2006, 17:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 33
Всего: 110



Цитата(Alex1984 @  10.5.2006,  12:46 Найти цитируемый пост)
но xt*x всегда число

вот тут как раз ничего непонятного: просто я ошибся smile
там x*xt
Цитата(Alex1984 @  10.5.2006,  12:46 Найти цитируемый пост)
должно для линии общее уравнение f(x1,x2,x3)=а1*х1+а2*х1+а3*х1+а4

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


--------------------
qqq
PM WWW   Вверх
Alex1984
Дата 10.5.2006, 23:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 299
Регистрация: 6.3.2005
Где: Киев

Репутация: нет
Всего: 2



Цитата(maxim1000 @  10.5.2006,  12:40 Найти цитируемый пост)
сумма всех x*xt
 Как это выглядеть будет?

  

Это сообщение отредактировал(а) Alex1984 - 10.5.2006, 23:46
PM MAIL WWW ICQ   Вверх
maxim1000
Дата 11.5.2006, 00:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 33
Всего: 110



Цитата(Alex1984 @  10.5.2006,  22:46 Найти цитируемый пост)
Как это выглядеть будет?

обычное умножение матрицы 3x1 на матрицу 1x3
получается матрица 3x3:
(x1*x1  x1*x2  x1*x3)
(x2*x1  x2*x2  x2*x3)
(x3*x1  x3*x2  x3*x3) 


--------------------
qqq
PM WWW   Вверх
Alex1984
Дата 11.5.2006, 07:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 299
Регистрация: 6.3.2005
Где: Киев

Репутация: нет
Всего: 2



F(x)*x и x*xt матрица такого вида
(x1*x1  x1*x2  x1*x3)
(x2*x1  x2*x2  x2*x3)
(x3*x1  x3*x2  x3*x3)  понимаю,
А сумма как выглядить smile . Помоему долго слишком сижу уже и голова не соображает. Нужно доделать и отдохнуть уже. Помогите закончить 
PM MAIL WWW ICQ   Вверх
Dark Elf
Дата 11.5.2006, 09:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 576
Регистрация: 26.12.2003
Где: Брисбен

Репутация: 1
Всего: 10



Сумма каждого рядка будет такая:

(x1*x1  x1*x2  x1*x3) = (x1*F(x))
(x2*x1  x2*x2  x2*x3) = (x2*F(x))
(x3*x1  x3*x2  x3*x3) = (x3*F(x))
 


--------------------
PM MAIL WWW ICQ Skype GTalk Jabber MSN   Вверх
maxim1000
Дата 11.5.2006, 11:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 33
Всего: 110



Цитата(Alex1984 @  11.5.2006,  06:32 Найти цитируемый пост)
А сумма как выглядить 

обычная сумма матриц
надо выписать эту матрицу для каждого измерения и потом все их покомпонентно сложить... 


--------------------
qqq
PM WWW   Вверх
Alex1984
Дата 16.5.2006, 08:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 299
Регистрация: 6.3.2005
Где: Киев

Репутация: нет
Всего: 2



maxim1000, задаем четыре значения по каждой точке (три координаты и значение функции в этой точке) таких точек много. через них нужно провести прямую (найти уравнение прямой) методом наименьших квадратов. тоесть получить функцию вида  
f(x1,x2,x3)=а1*х1+а2*х1+а3*х1+а4
Как это зделать. прошу расказать как для мення. не могу в упор разобраться.
очень прога нужна

http://kr.cs.ait.ac.th/~radok/math/mat7/inter.htm
также, только для трех переменных, тут для одной  
для двух
http://www.bsu.edu/web/jkshim/mathandstat/...leastsquare.htm 

Это сообщение отредактировал(а) Alex1984 - 16.5.2006, 08:48
PM MAIL WWW ICQ   Вверх
maxim1000
Дата 16.5.2006, 10:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 33
Всего: 110



1. выписываем последовательность векторов (x1,x2,x3,1)(n)
2. для каждого вектора считаем матрицу
(x1*x1 x1*x2 x1*x3 x1*1)
(x2*x1 x2*x2 x2*x3 x2*1)
(x3*x1 x3*x2 x3*x3 x3*1)
(1*x1 1*x2 1*x2 1*1)
получится N матриц
3. все их покомпонентно складываем - получаем одну "суммарную" A
4. выписываем последовательность векторов (x1*F(x),x2*F(x),x3*F(x),1*F(x))
5. все их складываем, получаем "суммарный" вектор b
6. решаем систему Ax=b
x - нужные нам параметры (если опять ничего не напутал) 


--------------------
qqq
PM WWW   Вверх
Alex1984
Дата 18.5.2006, 09:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 299
Регистрация: 6.3.2005
Где: Киев

Репутация: нет
Всего: 2



Вот что написал http://forum.vingrad.ru/index.php?showtopi...mp;#entry735179 , но что не так? 
PM MAIL WWW ICQ   Вверх
maxim1000
Дата 18.5.2006, 12:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 33
Всего: 110



насколько я увидел, там используется x[i,4], которое нигде не заполняется
предполагается, что там будут единицы (ну или просто на него не умножать)

что касается общего совета: сделать возможность менять размерность аргумента функции f и поотлаживать на размерности 1, где всё просто и понятно и можно отследить... 


--------------------
qqq
PM WWW   Вверх
Alex1984
Дата 21.5.2006, 09:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 299
Регистрация: 6.3.2005
Где: Киев

Репутация: нет
Всего: 2



Не работает smile 
PM MAIL WWW ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.1268 ]   [ Использовано запросов: 20 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.