Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Алгоритмы > Поиск уравнения прямой в


Автор: Alex1984 22.5.2006, 21:15
Нееобходимо найти уравнение прямой проходящей через точки в четирех мерном пространсве 
f(x1,x2,x3)=а1*х1+а2*х1+а3*х1+а4
Найти а1,а2,а3,а4 ?

Заданы координаты точки (i) x1(i) x2(i) x3(i) и значение функции в этой точке F(i) 

Автор: Fin 22.5.2006, 21:25
smile Одно уравнение с четырьмя неизвестными. Имеет множество решений. Бери смело любое .
Одно из решений a1=0; a2=0; a3=0; a4=f(i)
С математической точки зрения такая система не имеет решения. 

Автор: Alex1984 22.5.2006, 21:39
Точек не одна, а много. Черезе точки прямая проводиться без проблем, через три, уже не очень гладко, а через десять?

http://www.exponenta.ru/educat/systemat/tarasevich/3_3_1.asp
идна переменная, а нужно болтьше двух 

Автор: skyboy 22.5.2006, 22:44
Цитата(Alex1984 @  22.5.2006,  21:39 Найти цитируемый пост)
 через три, уже не очень гладко

В пространстве любой мерности необходимо 2 точки, чтоб однозначно определить прямую. 3 точки либо дадут прямую, либо не дадут. Вобщем, для 4 - мерного пространства необходимо 8 координат. А не 4.
 

Автор: Alex1984 22.5.2006, 23:17
Приметр задачи, нужно постоить прямую, проходящую через комнату (комната в одном конце отапливаемая), по которой (средняя температура в окресности точки пространсва) темепратура будет меняться линейно. Тоесть вектор изменения температуры в комнате

Добавлено @ 23:22 
Известны координаты точки измерения, и температура в ней, точек много и не находяться на одной прямой. Теость через облако точек нужно провести прямую, растояние от которой были бы минимальными до всех точек, четвертым критерием служит само значерие функции.
http://www.exponenta.ru/educat/systemat/tarasevich/3_3_1.asp
вот одна переменная и значение функции (к примеру, описать и решить задачу могу), а нужно три переменных и значение функции. 

Автор: Akina 23.5.2006, 09:30
Аппроксимация на прямую. Например по методу наименьших квадратов.

PS. Предвидя - количество размерностей значения не имеет. 

Автор: Alex1984 25.5.2006, 20:25
да, но в предыдущем топике никто не сказал ничего толкового 

Автор: maxim1000 25.5.2006, 22:16
Цитата(Alex1984 @  25.5.2006,  19:25 Найти цитируемый пост)
да, но в предыдущем топике никто не сказал ничего толкового  

в http://forum.vingrad.ru/index.php?showtopic=95388 был предложен алгоритм
до его полной реализации не дошло
всё остановилось на фразе "не работает" без объяснений 

Автор: Aloha 28.5.2006, 19:29
Alex1984
Цитата
Приметр задачи, нужно постоить прямую, проходящую через комнату (комната в одном конце отапливаемая), по которой (средняя температура в окресности точки пространсва) темепратура будет меняться линейно.

Давай на минуту немного упростим задачу. А именно, предположим, что наша комната двумерна. Тогда распределение температуры в нашей двумерной комнате T(x,y) есть поверхность (в 3-х мерном пространстве). Известно, что существуют поверхности (назовем их экзотическими), имеющие прямолинейную образующую, например конус, цилиндр (эллиптический, гиперболический, параболический), однополостной гиперболоид, гиперболический параболоид (последние две поверхности имеют по два семейства прямолинейных образующих). Очевидно, что в таких случаях рассматриваемая задача будет иметь множество точных решений (по прямолинейной образующей температура и будет меняться линейно).

(Перечисляя поверхности, имеющие прямолинейную образующую я забыл сказать про плоскость). smile 

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

Автор: Alex1984 29.5.2006, 16:44
maxim1000, вроде получилось найти решение, в маткаде заработало, выложу файл плзже, так как не дома сейчас. 
Вы были правы, но не получилось тогда. Принцип МНК реализовал постороением системы уравнений, каждое из которых частные производные по каждой переменной. Напишу работающую прогу на Паскалу, в соответствующем топике представлю к обозрению 

Автор: Akina 29.5.2006, 17:32
Alex1984, я с тебя фигею... какие к дьяволу частные производные??? тупейшая система из 4 линейных уравнений...

 

Автор: Earnest 29.5.2006, 17:46
Akina, это же задача на минимизацию, так что формально эти уравнения действительно получаются из приравнивания частных производных нулю. Только для линейного случая это уже столько раз написано, что никто и не вспоминает...  

Автор: Akina 29.5.2006, 18:19
Цитата(Earnest @  29.5.2006,  18:46 Найти цитируемый пост)
это же задача на минимизацию, так что формально эти уравнения действительно получаются из приравнивания частных производных нулю.

НЕТ, НЕТ И ЕЩЕ РАЗ НЕТ.
Это не абстрактный алгоритм минимизации, а МЕТОД НАИМЕНЬШИХ КВАДРАТОВ.
Уравнение, на которое выполняется аппроксимация - ЛИНЕЙНОЕ ОТНОСИТЕЛЬНО ВСЕХ АРГУМЕНТОВ.
Резюме - производные НЕ ТРЕБУЮТСЯ.

Как выглядит решение? рассказываю.

Имеется уравнение аппроксимации:
F = A*X + B*Y + C*Z + D
Имеется набор экспериментальных значений 
Xi, Yi, Zi, Fi
При верных значениях коэффициентов A, B, C, D значение выражения
S = Sum( (A*X + B*Y + C*Z + D - F)^2 ) 
минимально.
То есть изменение любого из коэффициентов A, B, C, D приведет к увеличению этой суммы.
Следовательно производная этой суммы по любому коэффициенту равна нулю:
dS / dA = 0
dS / dB = 0
dS / dC = 0
dS / dD = 0

Посмотрим что они есть аналитически. Например первое
dS / dA =
d( Sum( (A*X + B*Y + C*Z + D - F)^2 ) ) / dA =
2 * ( Sum( (A*X + B*Y + C*Z + D - F)^2 ) ) * ( d( Sum(A*X + B*Y + C*Z + D - F) ) / dA ) = 
2 * ( Sum(A*X + B*Y + C*Z + D - F) * X) = 
2 * ( Sum(A*X^2) + Sum(B*X*Y) + Sum(C*X*Z) + Sum(D*X) - Sum(F*X) ) =
2 * ( A*Sum(X^2) + B*Sum(B*X*Y) + C*Sum(X*Z) + D*Sum(X) - Sum(F*X) ) = 0

Убираем двойку (если 2*N=0, то N=0 - очевидно):
A*Sum(X^2) + B*Sum(X*Y) + C*Sum(X*Z) + D*Sum(X) = Sum(F*X)
Аналогично:
A*Sum(X*Y) + B*Sum(Y^2) + C*Sum(Y*Z) + D*Sum(Y) = Sum(F*Y)
A*Sum(X*Z) + B*Sum(Y*Z) + C*Sum(Z^2) + D*Sum(Z) = Sum(F*Z)
A*Sum(X) + B*Sum(Y) + C*Sum(Z) + D*Sum(1) = Sum(F)

Sum(1) в последнем уравнении равно N - числу экспериментальных точек.
Подсчитать суммы для заданного набора экспериментальных точек - дело плевейшее. 
А после подсчета и подстановки получаем линейную систему из 4 уравнений с 4 неизвестными 
A, B, C, D 
которую можно решать любым доступным способом.

Вот и все, собсно...   

Автор: Earnest 30.5.2006, 08:04
Кто же спорит, так все и есть. Только:
Цитата(Akina @  29.5.2006,  19:19 Найти цитируемый пост)
Следовательно производная этой суммы по любому коэффициенту равна нулю:
dS / dA = 0
dS / dB = 0
dS / dC = 0
dS / dD = 0

Производная по одному из параметров и есть частная производная.
И задача эта - на минимизацию функции 4 параметров (у тебя - S).
Точно так же решается задача, когда искомая функция является не прямой, а параболой или другой полиномиальной кривой, только коэффициентов и уравнений будет больше.
 

Автор: Akina 30.5.2006, 08:56
Earnest, речь о том что зависимость - линейная, следовательно вместо численного подсчета частных производных надо посидеть 5 минут с карандашом в руке и получить аналитическое решение системы. 

Автор: maxim1000 30.5.2006, 10:45
Цитата(Akina @  30.5.2006,  07:56 Найти цитируемый пост)
речь о том что зависимость - линейная

минимизируемая зависимость квадратичная

Цитата(Akina @  30.5.2006,  07:56 Найти цитируемый пост)
вместо численного подсчета частных производных надо посидеть 5 минут с карандашом в руке и получить аналитическое решение системы.

а где писалось, что частные производные определялись численными методами? smile 

Автор: Earnest 30.5.2006, 11:14
maxim1000 ответил за меня.
Подписываюсь.

Добавлено @ 11:18 
Только
Цитата(maxim1000 @  30.5.2006,  11:45 Найти цитируемый пост)
минимизируемая зависимость квадратичная

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

Автор: maxim1000 30.5.2006, 11:30
Цитата(Earnest @  30.5.2006,  10:14 Найти цитируемый пост)
В данном контексте обычно говорят об исходной зависимости, и имеется в виду ее линейность по параметрам, а не по координатам.

но ведь не её частные производные обсуждаются 

Автор: Aloha 30.5.2006, 18:39
В http://forum.vingrad.ru/index.php?showtopic=95388&view=findpost&p=732670 Alex1984 формулировал условие задачи следующим образом:
Цитата
задаем четыре значения … (три координаты и значение функции в этой точке) таких точек много. через них нужно провести прямую (найти уравнение прямой) методом наименьших квадратов. тоесть получить функцию вида  
f(x1,x2,x3)=а1*х1+а2*х1+а3*х1+а4

из чего следует, что нужно получить уравнение прямой, удовлетворяющей каким-то условиям.
y = a*x + b               есть уравнение прямой в двумерном пространстве.
z = a*x + b*y + c      есть уравнение плоскости (а не прямой) в трехмерном пространстве (т.е. фактически двумерное подпространство, базис которого может быть выражен через коэффициенты a, b, c).
Если, используя МНК-метод, мы найдем в результате коэффициенты уравнения:
T = a*x + b*y + c*z + d
то мы фактически получим описание трехмерного подпространства исходного 4-х мерного пространства T, x, y, z.
Остается лишь решить, какую конкретную прямую в нем выбрать.  smile

Математика МНК-метода в случае линейной модели достаточно простая (ее подробно изложил Akina). В любом случае все сведется к решению системы линейных уравнений.
Мне кажется вопрос не в том, как получить результат с помощью МНК-метода, а в том, как потом полученные результаты интерпретировать.   

Автор: maxim1000 30.5.2006, 19:34
Цитата(Aloha @  30.5.2006,  17:39 Найти цитируемый пост)
из чего следует, что нужно получить уравнение прямой, удовлетворяющей каким-то условиям

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

Автор: Alex1984 2.6.2006, 19:38
Получилось, не могу пока программу вывесиить так как не дома захожу в инет 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)