2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки


Правила форума


В этом разделе нельзя создавать новые темы.

Если Вы хотите задать новый вопрос, то не дописывайте его в существующую тему, а создайте новую в корневом разделе "Помогите решить/разобраться (М)".

Если Вы зададите новый вопрос в существующей теме, то в случае нарушения оформления или других правил форума Ваше сообщение и все ответы на него могут быть удалены без предупреждения.

Не ищите на этом форуме халяву, правила запрещают участникам публиковать готовые решения стандартных учебных задач. Автор вопроса обязан привести свои попытки решения и указать конкретные затруднения.

Обязательно просмотрите тему Правила данного раздела, иначе Ваша тема может быть удалена или перемещена в Карантин, а Вы так и не узнаете, почему.



Начать новую тему Ответить на тему
 
 МНК для плоскости.
Сообщение12.10.2010, 09:57 


05/03/09
5
Здравствуйте. У меня есть облако точек в 3-х мерном пространстве и мне необходимо вписать плоскость по МНК. Почему то нигде алгоритма не нашел, а как сделать МНК для трехмерного случая не знаю, может кто подскажет метод?

 Профиль  
                  
 
 Re: МНК для плоскости.
Сообщение12.10.2010, 10:04 
Заслуженный участник


11/05/08
32166
Вам надо найти аппроксимирующую функцию $z=Ax+By+C$ -- или переменные $x,y,z$ равноправны? Это две совершенно разные задачи.

 Профиль  
                  
 
 Re: МНК для плоскости.
Сообщение12.10.2010, 10:19 


05/03/09
5
Ну да, я сделал обычный мнк, то есть минимизировал сумму квадратов отклонений для этой функции $z=Ax+By+C$, где A B C коэффициенты которые нужно найти. Получилось уравнение прямой в трехмерном пространстве.

 Профиль  
                  
 
 Re: МНК для плоскости.
Сообщение12.10.2010, 10:30 
Заслуженный участник


11/05/08
32166
luckydevil в сообщении #361228 писал(а):
Получилось уравнение прямой в трехмерном пространстве.

Какая ж это прямая, когда это плоскость.

 Профиль  
                  
 
 Re: МНК для плоскости.
Сообщение12.10.2010, 10:35 
Заблокирован по собственному желанию
Аватара пользователя


18/05/09
3612
Здесь было.

 Профиль  
                  
 
 Re: МНК для плоскости.
Сообщение12.10.2010, 11:07 


05/03/09
5
Прямая, это потому что я неправильно x,y подставил. Но сейчас тоже не работает:
Возвел в квадрат, нашел частные производные, получил систему

$
\left\{ \begin{array}{l}
a\sum x^2+b\sum xy+c\sum x-\sum  xz,\\
a\sum xy+b\sum y^2+c\sum y-\sum  yz,\\
a\sum x+b\sum y+cN-\sum  z,
\end{array} \right.
$
Попробовал в Матлабе
Код:
x=1:10;
x=ones(10,1)*x;
y=1:2:20;
y=ones(10,1)*y;
y=y';
z=1*x+2*y+3;
X=sum(sum(x));
Y=sum(sum(y));
Z=sum(sum(z));
X2=sum(sum(x.*x));
XY=sum(sum(x.*y));
XZ=sum(sum(x.*z));
Y2=sum(sum(y.*y));
YZ=sum(sum(z.*y));
A=[X2 XY X;XY Y2 Y;X Y 10];
f=[XZ YZ Z]';
r=A\f

 Профиль  
                  
 
 Re: МНК для плоскости.
Сообщение12.10.2010, 11:22 
Заслуженный участник


11/05/08
32166
luckydevil в сообщении #361240 писал(а):
Код:
x=1:10;
x=ones(10,1)*x;
y=1:2:20;
y=ones(10,1)*y;
y=y';
z=1*x+2*y+3;

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

 Профиль  
                  
 
 Re: МНК для плоскости.
Сообщение12.10.2010, 11:48 


05/03/09
5
И правда, бред. Я пробовал и векторы с данными, и так чтобы точки не лежали на прямой.
Для прямой все работает. А для плоскости не знаю как. Вот как для прямой:
Код:
x=1:10;
y=1:2:20;
z=1*x+2*y+3+rand(1,10)*5;
X=(sum(x));
Y=(sum(y));
Z=(sum(z));
X2=(sum(x.*x));
XY=(sum(x.*y));
XZ=(sum(x.*z));
Y2=(sum(y.*y));
YZ=(sum(z.*y));
Z2=sum(z.*z);
A=[X2 XY X;XY Y2 Y;X Y 10]
% A=[X2 XY XZ;XY Y2 YZ;XZ XY Z2];
f=[XZ YZ Z]';
r=A\f

figure, plot3(x,y,z,x,y,r(1)*x+r(2)*y+r(3))

 Профиль  
                  
 
 Re: МНК для плоскости.
Сообщение12.10.2010, 12:07 
Заслуженный участник


11/05/08
32166
А Вас не настораживает сообщение, которое выдаёт Матлаб:

Код:
Warning: Matrix is close to singular or badly scaled.
         Results may be inaccurate. RCOND = 9.057764e-018.
?

И действительно, матрица ну просто жутко singular, причём не случайно. Эта матрица вообще никакого отношения к МНК не имеет.

 Профиль  
                  
 
 Re: МНК для плоскости.
Сообщение13.10.2010, 20:26 


29/09/06
4552
Задача довольно простая.
Вам нужно минимизировать сумму $$\sum (A x_i + B y_i +Cz_i + D)^2 \text{~~при условии~~} A^2+B^2+C^2=1.$$ (Именно при этом условии указанная сумма есть сумма квадратов отклонений от плоскости.) Поиск условного минимума --- известная в матане задачка. В системе цетра тяжести точек получим с необходимостью $D=0$, и задача сведётся к поиску собственных значений матрицы М из сообщения, на которое Вам уже указали. Чисто решить кубическое уравнение. Нужно взять наименьшее собственное значение; соотв. собственный вектор --- искомый вектор $(A,B,C)$.

 Профиль  
                  
 
 Re: МНК для плоскости.
Сообщение05.09.2021, 19:18 


06/11/20
1
Недавно самому надо было сделать эту задачу ... решения НИГДЕ нормального не нашел, пришлось самому вникать .
Вот работающий код для матлаба
код: [ скачать ] [ спрятать ]
Используется синтаксис Matlab M
clear;
clc;
%(1, 1, 7), (1, 2, 9), (2, 1, 10), (2, 2, 11), (2, 3, 12). собственно наши измерения с неточностями
x = [1 1 2 2 2]'
y = [1 2 1 2 3]'
z = [7 9 10 11 12]'
% поделим ур-е плоскости на коэф с не равный нулю a/c*x + b/c*y +z +d/c=0
A = [x(1) y(1) 1;
    x(2) y(2) 1;
    x(3) y(3) 1;
    x(4) y(4) 1;
    x(5) y(5) 1];
b0 = [-z(1),- z(2),-z(3),-z(4),-z(5)]'
xr=A\b0
norm(A)*norm(A') % число обусловленностей
res1=xr(1) % a/c (*)
res2=xr(2) % b/c (**)
res3=xr(3) % d/c
%a^2+b^2+c^2=1 (***), осталось только решить систему из ур-ий
%(*),(**),(***) чтобы найти a,b,c , после чего d=res3*c

 i  Pphantom:
Поздновато, но пусть будет, только код надо бы оформлять с использованием соответствующего тэга. Поправил.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 11 ] 

Модераторы: Модераторы Математики, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group