![]() |
|
![]() ![]() ![]() |
|
Alex1984 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 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 Решение такой задачи только МНК |
|||
|
||||
maxim1000 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 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 |
|||
|
||||
Dark Elf |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 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 - значения функции |
|||
|
||||
Alex1984 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 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 |
|||
|
||||
maxim1000 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 33 Всего: 110 |
вот тут как раз ничего непонятного: просто я ошибся ![]() там x*xt
чтобы не переписывать все формулы, можно просто ввести ещё одну переменную, которая во всех измерениях равна единице... -------------------- qqq |
|||
|
||||
Alex1984 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 299 Регистрация: 6.3.2005 Где: Киев Репутация: нет Всего: 2 |
||||
|
||||
maxim1000 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 33 Всего: 110 |
обычное умножение матрицы 3x1 на матрицу 1x3 получается матрица 3x3: (x1*x1 x1*x2 x1*x3) (x2*x1 x2*x2 x2*x3) (x3*x1 x3*x2 x3*x3) -------------------- qqq |
|||
|
||||
Alex1984 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 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) понимаю, А сумма как выглядить ![]() |
|||
|
||||
Dark Elf |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 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)) |
|||
|
||||
maxim1000 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 33 Всего: 110 |
обычная сумма матриц надо выписать эту матрицу для каждого измерения и потом все их покомпонентно сложить... -------------------- qqq |
|||
|
||||
Alex1984 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 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 |
|||
|
||||
maxim1000 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 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 |
|||
|
||||
Alex1984 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 299 Регистрация: 6.3.2005 Где: Киев Репутация: нет Всего: 2 |
Вот что написал http://forum.vingrad.ru/index.php?showtopi...mp;#entry735179 , но что не так?
|
|||
|
||||
maxim1000 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 33 Всего: 110 |
насколько я увидел, там используется x[i,4], которое нигде не заполняется
предполагается, что там будут единицы (ну или просто на него не умножать) что касается общего совета: сделать возможность менять размерность аргумента функции f и поотлаживать на размерности 1, где всё просто и понятно и можно отследить... -------------------- qqq |
|||
|
||||
Alex1984 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 299 Регистрация: 6.3.2005 Где: Киев Репутация: нет Всего: 2 |
Не работает
![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Алгоритмы" | |
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Алгоритмы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |