2014 dxdy logo

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

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




Начать новую тему Ответить на тему
 
 метод наименьших квадратов в Mathematica
Сообщение09.08.2012, 16:24 


20/04/12
114
возможно ли запихнуть в LeastSquares это уравнение?
и почему пишет Solve::svars: Equations may not give solutions for all "solve" variables. >>
вроде кол-во уравнений равно кол-ву неизвестных

Код:
CForm[Solve[(m31 x1 + m32 y1 + 1) u1 == (m11 x1 + m12 y1 + m13) &&
   (m31 x1 + m32 y1 + 1) v1 == (m21 x1 + m22 y1 + m23) &&
   (m31 x2 + m32 y2 + 1) u2 == (m11 x2 + m12 y2 + m13) &&
   (m31 x2 + m32 y2 + 1) v2 == (m21 x2 + m22 y2 + m23) &&
   (m31 x3 + m32 y3 + 1) u3 == (m11 x3 + m12 y3 + m13) &&
   (m31 x3 + m32 y3 + 1) v3 == (m21 x3 + m22 y3 + m23) &&
   (m31 x4 + m32 y4 + 1) u4 == (m11 x4 + m12 y4 + m13) &&
   (m31 x4 + m32 y4 + 1) v4 == (m21 x4 + m22 y4 + m23) &&
   (m31 x5 + m32 y5 + 1) u5 == (m11 x5 + m12 y5 + m13) &&
   (m31 x5 + m32 y5 + 1) v5 == (m21 x5 + m22 y5 + m23) &&
   (m31 x6 + m32 y6 + 1) u6 == (m11 x6 + m12 y6 + m13) &&
   (m31 x6 + m32 y6 + 1) v6 == (m21 x6 + m22 y6 + m23) &&
   (m31 x7 + m32 y7 + 1) u7 == (m11 x7 + m12 y7 + m13) &&
   (m31 x7 + m32 y7 + 1) v7 == (m21 x7 + m22 y7 + m23) &&
   (m31 x8 + m32 y8 + 1) u8 == (m11 x8 + m12 y8 + m13) &&
   (m31 x8 + m32 y8 + 1) v8 == (m21 x8 + m22 y8 + m23) &&
   (m31 x9 + m32 y9 + 1) u9 == (m11 x9 + m12 y9 + m13) &&
   (m31 x9 + m32 y9 + 1) v9 == (m21 x9 + m22 y9 + m23) &&
   (m31 x10 + m32 y10 + 1) u10 == (m11 x10 + m12 y10 + m13) &&
   (m31 x10 + m32 y10 + 1) v10 == (m21 x10 + m22 y10 + m23) &&
   dx == x2 - x1 &&
   dy == y2 - y1 &&
   dx == x4 - x3 &&
   dy == y4 - y3 &&
   dx == x6 - x5 &&
   dy == y6 - y5 &&
   dx == x8 - x7 &&
   dy == y8 - y7 &&
   dx == x10 - x9 &&
   dy == y10 - y9
  , {dx, dy, m11, m12, m13, m21, m22, m23, m31, m32,
   x1, x2, x3, x4, x5, x6, x7, x8, x9, x10,
   y1, y2, y3, y4, y5, y6, y7, y8, y9, y10}]]

Solve::svars: Equations may not give solutions for all "solve" variables. >>

List(List(Rule(dx,-x1 + x2),Rule(dy,(m31*(x1 - x2))/m32),Rule(m11,(m12*m31)/m32),
    Rule(m13,m12/m32),Rule(m21,(m22*m31)/m32),Rule(m23,m22/m32),Rule(x4,-x1 + x2 + x3),
    Rule(x6,-x1 + x2 + x5),Rule(x8,-x1 + x2 + x7),Rule(x10,-x1 + x2 + x9),
    Rule(y1,(-1 - m31*x1)/m32),Rule(y2,(-1 - m31*x2)/m32),Rule(y3,(-1 - m31*x3)/m32),
    Rule(y4,(-1 + m31*x1 - m31*x2 - m31*x3)/m32),Rule(y5,(-1 - m31*x5)/m32),
    Rule(y6,(-1 + m31*x1 - m31*x2 - m31*x5)/m32),Rule(y7,(-1 - m31*x7)/m32),
    Rule(y8,(-1 + m31*x1 - m31*x2 - m31*x7)/m32),Rule(y9,(-1 - m31*x9)/m32),
    Rule(y10,(-1 + m31*x1 - m31*x2 - m31*x9)/m32)),
   List(Rule(dx,-x1 + x2),Rule(dy,(m31*(x1 - x2))/m32),Rule(m11,0),Rule(m12,0),Rule(m13,0),
    Rule(m21,(m22*m31)/m32),Rule(m23,m22/m32),Rule(x4,-x1 + x2 + x3),
    Rule(x6,-x1 + x2 + x5),Rule(x8,-x1 + x2 + x7),Rule(x10,-x1 + x2 + x9),
    Rule(y1,(-1 - m31*x1)/m32),Rule(y2,(-1 - m31*x2)/m32),Rule(y3,(-1 - m31*x3)/m32),
    Rule(y4,(-1 + m31*x1 - m31*x2 - m31*x3)/m32),Rule(y5,(-1 - m31*x5)/m32),
    Rule(y6,(-1 + m31*x1 - m31*x2 - m31*x5)/m32),Rule(y7,(-1 - m31*x7)/m32),
    Rule(y8,(-1 + m31*x1 - m31*x2 - m31*x7)/m32),Rule(y9,(-1 - m31*x9)/m32),
    Rule(y10,(-1 + m31*x1 - m31*x2 - m31*x9)/m32)),
   List(Rule(dx,-x1 + x2),Rule(dy,0),Rule(m11,0),Rule(m13,m12/m32),Rule(m21,0),
    Rule(m23,m22/m32),Rule(m31,0),Rule(x4,-x1 + x2 + x3),Rule(x6,-x1 + x2 + x5),
    Rule(x8,-x1 + x2 + x7),Rule(x10,-x1 + x2 + x9),Rule(y1,-(1/m32)),Rule(y2,-(1/m32)),
    Rule(y3,-(1/m32)),Rule(y4,-(1/m32)),Rule(y5,-(1/m32)),Rule(y6,-(1/m32)),
    Rule(y7,-(1/m32)),Rule(y8,-(1/m32)),Rule(y9,-(1/m32)),Rule(y10,-(1/m32))),
   List(Rule(dx,0),Rule(dy,-y1 + y2),Rule(m12,0),Rule(m13,m11/m31),Rule(m22,0),
    Rule(m23,m21/m31),Rule(m32,0),Rule(x1,-(1/m31)),Rule(x2,-(1/m31)),Rule(x3,-(1/m31)),
    Rule(x4,-(1/m31)),Rule(x5,-(1/m31)),Rule(x6,-(1/m31)),Rule(x7,-(1/m31)),
    Rule(x8,-(1/m31)),Rule(x9,-(1/m31)),Rule(x10,-(1/m31)),Rule(y4,-y1 + y2 + y3),
    Rule(y6,-y1 + y2 + y5),Rule(y8,-y1 + y2 + y7),Rule(y10,-y1 + y2 + y9)),
   List(Rule(dx,-x1 + x2),Rule(dy,(m31*(x1 - x2))/m32),Rule(m11,0),Rule(m12,0),Rule(m13,0),
    Rule(m21,0),Rule(m22,0),Rule(m23,0),Rule(x4,-x1 + x2 + x3),Rule(x6,-x1 + x2 + x5),
    Rule(x8,-x1 + x2 + x7),Rule(x10,-x1 + x2 + x9),Rule(y1,(-1 - m31*x1)/m32),
    Rule(y2,(-1 - m31*x2)/m32),Rule(y3,(-1 - m31*x3)/m32),
    Rule(y4,(-1 + m31*x1 - m31*x2 - m31*x3)/m32),Rule(y5,(-1 - m31*x5)/m32),
    Rule(y6,(-1 + m31*x1 - m31*x2 - m31*x5)/m32),Rule(y7,(-1 - m31*x7)/m32),
    Rule(y8,(-1 + m31*x1 - m31*x2 - m31*x7)/m32),Rule(y9,(-1 - m31*x9)/m32),
    Rule(y10,(-1 + m31*x1 - m31*x2 - m31*x9)/m32)),
   List(Rule(dx,-x1 + x2),Rule(dy,0),Rule(m11,0),Rule(m12,0),Rule(m13,0),Rule(m21,0),
    Rule(m23,m22/m32),Rule(m31,0),Rule(x4,-x1 + x2 + x3),Rule(x6,-x1 + x2 + x5),
    Rule(x8,-x1 + x2 + x7),Rule(x10,-x1 + x2 + x9),Rule(y1,-(1/m32)),Rule(y2,-(1/m32)),
    Rule(y3,-(1/m32)),Rule(y4,-(1/m32)),Rule(y5,-(1/m32)),Rule(y6,-(1/m32)),
    Rule(y7,-(1/m32)),Rule(y8,-(1/m32)),Rule(y9,-(1/m32)),Rule(y10,-(1/m32))),
   List(Rule(dx,0),Rule(dy,-y1 + y2),Rule(m11,0),Rule(m12,0),Rule(m13,0),Rule(m22,0),
    Rule(m23,m21/m31),Rule(m32,0),Rule(x1,-(1/m31)),Rule(x2,-(1/m31)),Rule(x3,-(1/m31)),
    Rule(x4,-(1/m31)),Rule(x5,-(1/m31)),Rule(x6,-(1/m31)),Rule(x7,-(1/m31)),
    Rule(x8,-(1/m31)),Rule(x9,-(1/m31)),Rule(x10,-(1/m31)),Rule(y4,-y1 + y2 + y3),
    Rule(y6,-y1 + y2 + y5),Rule(y8,-y1 + y2 + y7),Rule(y10,-y1 + y2 + y9)),
   List(Rule(dx,0),Rule(dy,-y1 + y2),Rule(m11,0),Rule(m12,0),Rule(m13,0),Rule(m21,0),
    Rule(m22,0),Rule(m23,0),Rule(m32,0),Rule(x1,-(1/m31)),Rule(x2,-(1/m31)),
    Rule(x3,-(1/m31)),Rule(x4,-(1/m31)),Rule(x5,-(1/m31)),Rule(x6,-(1/m31)),
    Rule(x7,-(1/m31)),Rule(x8,-(1/m31)),Rule(x9,-(1/m31)),Rule(x10,-(1/m31)),
    Rule(y4,-y1 + y2 + y3),Rule(y6,-y1 + y2 + y5),Rule(y8,-y1 + y2 + y7),
    Rule(y10,-y1 + y2 + y9)),List(Rule(dx,0),Rule(dy,0),
    Rule(m13,(m12 + m12*m31*x1 - m11*m32*x1)/m32),
    Rule(m23,(m22 + m22*m31*x1 - m21*m32*x1)/m32),Rule(x2,x1),Rule(x3,x1),Rule(x4,x1),
    Rule(x5,x1),Rule(x6,x1),Rule(x7,x1),Rule(x8,x1),Rule(x9,x1),Rule(x10,x1),
    Rule(y1,(-1 - m31*x1)/m32),Rule(y2,(-1 - m31*x1)/m32),Rule(y3,(-1 - m31*x1)/m32),
    Rule(y4,(-1 - m31*x1)/m32),Rule(y5,(-1 - m31*x1)/m32),Rule(y6,(-1 - m31*x1)/m32),
    Rule(y7,(-1 - m31*x1)/m32),Rule(y8,(-1 - m31*x1)/m32),Rule(y9,(-1 - m31*x1)/m32),
    Rule(y10,(-1 - m31*x1)/m32)),List(Rule(dx,0),Rule(dy,0),Rule(m12,0),
    Rule(m13,-(m11*x1)),Rule(m23,(m22 + m22*m31*x1 - m21*m32*x1)/m32),Rule(x2,x1),
    Rule(x3,x1),Rule(x4,x1),Rule(x5,x1),Rule(x6,x1),Rule(x7,x1),Rule(x8,x1),Rule(x9,x1),
    Rule(x10,x1),Rule(y1,(-1 - m31*x1)/m32),Rule(y2,(-1 - m31*x1)/m32),
    Rule(y3,(-1 - m31*x1)/m32),Rule(y4,(-1 - m31*x1)/m32),Rule(y5,(-1 - m31*x1)/m32),
    Rule(y6,(-1 - m31*x1)/m32),Rule(y7,(-1 - m31*x1)/m32),Rule(y8,(-1 - m31*x1)/m32),
    Rule(y9,(-1 - m31*x1)/m32),Rule(y10,(-1 - m31*x1)/m32)),
   List(Rule(dx,0),Rule(dy,0),Rule(m13,(m12 + m12*m31*x1 - m11*m32*x1)/m32),
    Rule(m21,(m11*m22)/m12),Rule(m23,
     (m12*m22 + m12*m22*m31*x1 - m11*m22*m32*x1)/(m12*m32)),Rule(x2,x1),Rule(x3,x1),
    Rule(x4,x1),Rule(x5,x1),Rule(x6,x1),Rule(x7,x1),Rule(x8,x1),Rule(x9,x1),Rule(x10,x1),
    Rule(y1,(-1 - m31*x1)/m32),Rule(y2,(-1 - m31*x1)/m32),Rule(y3,(-1 - m31*x1)/m32),
    Rule(y4,(-1 - m31*x1)/m32),Rule(y5,(-1 - m31*x1)/m32),Rule(y6,(-1 - m31*x1)/m32),
    Rule(y7,(-1 - m31*x1)/m32),Rule(y8,(-1 - m31*x1)/m32),Rule(y9,(-1 - m31*x1)/m32),
    Rule(y10,(-1 - m31*x1)/m32)),List(Rule(dx,0),Rule(dy,0),
    Rule(m13,(m11 - m12*m31*y1)/m31),Rule(m23,(m21 - m22*m31*y1)/m31),Rule(m32,0),
    Rule(x1,-(1/m31)),Rule(x2,-(1/m31)),Rule(x3,-(1/m31)),Rule(x4,-(1/m31)),
    Rule(x5,-(1/m31)),Rule(x6,-(1/m31)),Rule(x7,-(1/m31)),Rule(x8,-(1/m31)),
    Rule(x9,-(1/m31)),Rule(x10,-(1/m31)),Rule(y2,y1),Rule(y3,y1),Rule(y4,y1),Rule(y5,y1),
    Rule(y6,y1),Rule(y7,y1),Rule(y8,y1),Rule(y9,y1),Rule(y10,y1)),
   List(Rule(dx,0),Rule(dy,0),Rule(m11,0),Rule(m12,0),Rule(m13,0),
    Rule(m23,(m22 + m22*m31*x1 - m21*m32*x1)/m32),Rule(x2,x1),Rule(x3,x1),Rule(x4,x1),
    Rule(x5,x1),Rule(x6,x1),Rule(x7,x1),Rule(x8,x1),Rule(x9,x1),Rule(x10,x1),
    Rule(y1,(-1 - m31*x1)/m32),Rule(y2,(-1 - m31*x1)/m32),Rule(y3,(-1 - m31*x1)/m32),
    Rule(y4,(-1 - m31*x1)/m32),Rule(y5,(-1 - m31*x1)/m32),Rule(y6,(-1 - m31*x1)/m32),
    Rule(y7,(-1 - m31*x1)/m32),Rule(y8,(-1 - m31*x1)/m32),Rule(y9,(-1 - m31*x1)/m32),
    Rule(y10,(-1 - m31*x1)/m32)),List(Rule(dx,0),Rule(dy,0),Rule(m12,0),
    Rule(m13,-(m11*x1)),Rule(m22,0),Rule(m23,-(m21*x1)),Rule(x2,x1),Rule(x3,x1),
    Rule(x4,x1),Rule(x5,x1),Rule(x6,x1),Rule(x7,x1),Rule(x8,x1),Rule(x9,x1),Rule(x10,x1),
    Rule(y1,(-1 - m31*x1)/m32),Rule(y2,(-1 - m31*x1)/m32),Rule(y3,(-1 - m31*x1)/m32),
    Rule(y4,(-1 - m31*x1)/m32),Rule(y5,(-1 - m31*x1)/m32),Rule(y6,(-1 - m31*x1)/m32),
    Rule(y7,(-1 - m31*x1)/m32),Rule(y8,(-1 - m31*x1)/m32),Rule(y9,(-1 - m31*x1)/m32),
    Rule(y10,(-1 - m31*x1)/m32)),List(Rule(dx,0),Rule(dy,0),
    Rule(m13,(m11 - m12*m31*y1)/m31),Rule(m21,(m11*m22)/m12),
    Rule(m23,-((m22*(-m11 + m12*m31*y1))/(m12*m31))),Rule(m32,0),Rule(x1,-(1/m31)),
    Rule(x2,-(1/m31)),Rule(x3,-(1/m31)),Rule(x4,-(1/m31)),Rule(x5,-(1/m31)),
    Rule(x6,-(1/m31)),Rule(x7,-(1/m31)),Rule(x8,-(1/m31)),Rule(x9,-(1/m31)),
    Rule(x10,-(1/m31)),Rule(y2,y1),Rule(y3,y1),Rule(y4,y1),Rule(y5,y1),Rule(y6,y1),
    Rule(y7,y1),Rule(y8,y1),Rule(y9,y1),Rule(y10,y1)),
   List(Rule(dx,0),Rule(dy,0),Rule(m11,0),Rule(m12,0),Rule(m13,0),Rule(m22,0),
    Rule(m23,-(m21*x1)),Rule(x2,x1),Rule(x3,x1),Rule(x4,x1),Rule(x5,x1),Rule(x6,x1),
    Rule(x7,x1),Rule(x8,x1),Rule(x9,x1),Rule(x10,x1),Rule(y1,(-1 - m31*x1)/m32),
    Rule(y2,(-1 - m31*x1)/m32),Rule(y3,(-1 - m31*x1)/m32),Rule(y4,(-1 - m31*x1)/m32),
    Rule(y5,(-1 - m31*x1)/m32),Rule(y6,(-1 - m31*x1)/m32),Rule(y7,(-1 - m31*x1)/m32),
    Rule(y8,(-1 - m31*x1)/m32),Rule(y9,(-1 - m31*x1)/m32),Rule(y10,(-1 - m31*x1)/m32)),
   List(Rule(dx,0),Rule(dy,0),Rule(m11,0),Rule(m12,0),Rule(m13,0),
    Rule(m23,(m21 - m22*m31*y1)/m31),Rule(m32,0),Rule(x1,-(1/m31)),Rule(x2,-(1/m31)),
    Rule(x3,-(1/m31)),Rule(x4,-(1/m31)),Rule(x5,-(1/m31)),Rule(x6,-(1/m31)),
    Rule(x7,-(1/m31)),Rule(x8,-(1/m31)),Rule(x9,-(1/m31)),Rule(x10,-(1/m31)),Rule(y2,y1),
    Rule(y3,y1),Rule(y4,y1),Rule(y5,y1),Rule(y6,y1),Rule(y7,y1),Rule(y8,y1),Rule(y9,y1),
    Rule(y10,y1)))

 Профиль  
                  
 
 Re: метод наименьших квадратов в Mathematica
Сообщение09.08.2012, 17:29 
Аватара пользователя


11/06/12
10390
стихия.вздох.мюсли
Вам лишь бы запихнуть в бедную Математику что-нибудь необозримое ;-) Может быть, попробуете записать это в матричном виде?

 Профиль  
                  
 
 Re: метод наименьших квадратов в Mathematica
Сообщение10.08.2012, 08:58 


20/04/12
114
дело как раз в том ,что я прикинул

было 30 неизвестных и 30 уравнений
потом мы убрали
Цитата:
dx == x2 - x1 &&
dy == y2 - y1 &&
dx == x4 - x3 &&
dy == y4 - y3 &&
dx == x6 - x5 &&
dy == y6 - y5 &&
dx == x8 - x7 &&
dy == y8 - y7 &&
dx == x10 - x9 &&
dy == y10 - y9

получили 20 уравнений и 20 неизвестных и еще надо убрать 12 уравнений
а потом если мы пытаемся подставлять, то относительно $m_{ij}$ получается уже не линейная система.

 Профиль  
                  
 
 Re: метод наименьших квадратов в Mathematica
Сообщение10.08.2012, 11:11 


20/04/12
114
понял что можно сделать так Normal[CoefficientArrays[]]
только как из этого выделить нужное чтобы привести к $AX=B$ и запихнуть в LeastSquares?

-- 10.08.2012, 12:41 --

нет всё таки система то получается нелинейная. :-(

 Профиль  
                  
 
 Re: метод наименьших квадратов в Mathematica
Сообщение10.08.2012, 17:08 


20/04/12
114
попробовал решить с числами, не смог дождаться результата.

Цитата:
Clear[x1]; Clear[x2]; Clear[x3]; Clear[x4]; Clear[x5]; Clear[x6]; \
Clear[x7]; Clear[x8]; Clear[x9]; Clear[x10]
Clear[y1]; Clear[y2]; Clear[y3]; Clear[y4]; Clear[y5]; Clear[y6]; \
Clear[y7]; Clear[y8]; Clear[y9]; Clear[y10];
u1 = 60.5 ; u2 = 71; u3 = 172; u4 = 178; u5 = 21.5; u6 = 35.9; u7 = \
130; u8 = 139; u9 = 148; u10 = 157;
v1 = 102; v2 = 62.9; v3 = 80.4; v4 = 37.1; v5 = 250; v6 = 197; v7 = \
186; v8 = 133; v9 = 243; v10 = 183;
NSolve[u1 == (m13 + m11 x1 + m12 y1)/(1 + m31 x1 + m32 y1) &&
v1 == (m23 + m21 x1 + m22 y1)/(1 + m31 x1 + m32 y1) &&
u2 == (m13 + m11 x2 + m12 y2)/(1 + m31 x2 + m32 y2) &&
v2 == (m23 + m21 x2 + m22 y2)/(1 + m31 x2 + m32 y2) &&
u3 == (m13 + m11 x3 + m12 y3)/(1 + m31 x3 + m32 y3) &&
v3 == (m23 + m21 x3 + m22 y3)/(1 + m31 x3 + m32 y3) &&
u4 == (m13 + m11 x4 + m12 y4)/(1 + m31 x4 + m32 y4) &&
v4 == (m23 + m21 x4 + m22 y4)/(1 + m31 x4 + m32 y4) &&
u5 == (m13 + m11 x5 + m12 y5)/(1 + m31 x5 + m32 y5) &&
v5 == (m23 + m21 x5 + m22 y5)/(1 + m31 x5 + m32 y5) &&
u6 == (m13 + m11 x6 + m12 y6)/(1 + m31 x6 + m32 y6) &&
v6 == (m23 + m21 x6 + m22 y6)/(1 + m31 x6 + m32 y6) &&
u7 == (m13 + m11 x7 + m12 y7)/(1 + m31 x7 + m32 y7) &&
v7 == (m23 + m21 x7 + m22 y7)/(1 + m31 x7 + m32 y7) &&
u8 == (m13 + m11 x8 + m12 y8)/(1 + m31 x8 + m32 y8) &&
v8 == (m23 + m21 x8 + m22 y8)/(1 + m31 x8 + m32 y8) &&
u9 == (m13 + m11 x9 + m12 y9)/(1 + m31 x9 + m32 y9) &&
v9 == (m23 + m21 x9 + m22 y9)/(1 + m31 x9 + m32 y9) &&
u10 == (m13 + m11 x10 + m12 y10)/(1 + m31 x10 + m32 y10) &&
v10 == (m23 + m21 x10 + m22 y10)/(1 + m31 x10 + m32 y10) &&
dx == x2 - x1 && dx == x4 - x3 && dx == x6 - x5 && dx == x8 - x7 &&
dx == x10 - x9 && dy == y2 - y1 && dy == y4 - y3 && dy == y6 - y5 &&
dy == y8 - y7 && dy == y10 - y9
, {dx, dy, m11, m12, m13, m21, m22, m23, m31, m32,
x1, x2, x3, x4, x5, x6, x7, x8, x9, x10,
y1, y2, y3, y4, y5, y6, y7, y8, y9, y10}]



попробовал переписать без деления, тоже самое.
Цитата:
Clear[x1]; Clear[x2]; Clear[x3]; Clear[x4]; Clear[x5]; Clear[x6]; \
Clear[x7]; Clear[x8]; Clear[x9]; Clear[x10]
Clear[y1]; Clear[y2]; Clear[y3]; Clear[y4]; Clear[y5]; Clear[y6]; \
Clear[y7]; Clear[y8]; Clear[y9]; Clear[y10];
u1 = 60.5 ; u2 = 71; u3 = 172; u4 = 178; u5 = 21.5; u6 = 35.9; u7 = \
130; u8 = 139; u9 = 148; u10 = 157;
v1 = 102; v2 = 62.9; v3 = 80.4; v4 = 37.1; v5 = 250; v6 = 197; v7 = \
186; v8 = 133; v9 = 243; v10 = 183;
NSolve[u1 (1 + m31 x1 + m32 y1) == (m13 + m11 x1 + m12 y1) &&
v1 (1 + m31 x1 + m32 y1) == (m23 + m21 x1 + m22 y1) &&
u2 (1 + m31 x2 + m32 y2) == (m13 + m11 x2 + m12 y2) &&
v2 (1 + m31 x2 + m32 y2) == (m23 + m21 x2 + m22 y2) &&
u3 (1 + m31 x3 + m32 y3) == (m13 + m11 x3 + m12 y3) &&
v3 (1 + m31 x3 + m32 y3) == (m23 + m21 x3 + m22 y3) &&
u4 (1 + m31 x4 + m32 y4) == (m13 + m11 x4 + m12 y4) &&
v4 (1 + m31 x4 + m32 y4) == (m23 + m21 x4 + m22 y4) &&
u5 (1 + m31 x5 + m32 y5) == (m13 + m11 x5 + m12 y5) &&
v5 (1 + m31 x5 + m32 y5) == (m23 + m21 x5 + m22 y5) &&
u6 (1 + m31 x6 + m32 y6) == (m13 + m11 x6 + m12 y6) &&
v6 (1 + m31 x6 + m32 y6) == (m23 + m21 x6 + m22 y6) &&
u7 (1 + m31 x7 + m32 y7) == (m13 + m11 x7 + m12 y7) &&
v7 (1 + m31 x7 + m32 y7) == (m23 + m21 x7 + m22 y7) &&
u8 (1 + m31 x8 + m32 y8) == (m13 + m11 x8 + m12 y8) &&
v8 (1 + m31 x8 + m32 y8) == (m23 + m21 x8 + m22 y8) &&
u9 (1 + m31 x9 + m32 y9) == (m13 + m11 x9 + m12 y9) &&
v9 (1 + m31 x9 + m32 y9) == (m23 + m21 x9 + m22 y9) &&
u10 (1 + m31 x10 + m32 y10) == (m13 + m11 x10 + m12 y10) &&
v10 (1 + m31 x10 + m32 y10) == (m23 + m21 x10 + m22 y10) &&
dx == x2 - x1 && dx == x4 - x3 && dx == x6 - x5 && dx == x8 - x7 &&
dx == x10 - x9 && dy == y2 - y1 && dy == y4 - y3 && dy == y6 - y5 &&
dy == y8 - y7 && dy == y10 - y9
, {dx, dy, m11, m12, m13, m21, m22, m23, m31, m32,
x1, x2, x3, x4, x5, x6, x7, x8, x9, x10,
y1, y2, y3, y4, y5, y6, y7, y8, y9, y10}]



попробовал для афинных преобразований m31=m32=0
(убрал 2 переменные и убрал 2 уравнения)
получил почему, то что не решений
Цитата:
Clear[x1]; Clear[x2]; Clear[x3]; Clear[x4]; Clear[x5]; Clear[x6]; \
Clear[x7]; Clear[x8]; Clear[x9]; Clear[x10]
Clear[y1]; Clear[y2]; Clear[y3]; Clear[y4]; Clear[y5]; Clear[y6]; \
Clear[y7]; Clear[y8]; Clear[y9]; Clear[y10];
u1 = 60.5 ; u2 = 71; u3 = 172; u4 = 178; u5 = 21.5; u6 = 35.9; u7 = \
130; u8 = 139; u9 = 148; u10 = 157;
v1 = 102; v2 = 62.9; v3 = 80.4; v4 = 37.1; v5 = 250; v6 = 197; v7 = \
186; v8 = 133; v9 = 243; v10 = 183;
m32 = 0; m31 = 0;
NSolve[u1 (1 + m31 x1 + m32 y1) == (m13 + m11 x1 + m12 y1) &&
v1 (1 + m31 x1 + m32 y1) == (m23 + m21 x1 + m22 y1) &&
u2 (1 + m31 x2 + m32 y2) == (m13 + m11 x2 + m12 y2) &&
v2 (1 + m31 x2 + m32 y2) == (m23 + m21 x2 + m22 y2) &&
u3 (1 + m31 x3 + m32 y3) == (m13 + m11 x3 + m12 y3) &&
v3 (1 + m31 x3 + m32 y3) == (m23 + m21 x3 + m22 y3) &&
u4 (1 + m31 x4 + m32 y4) == (m13 + m11 x4 + m12 y4) &&
v4 (1 + m31 x4 + m32 y4) == (m23 + m21 x4 + m22 y4) &&
u5 (1 + m31 x5 + m32 y5) == (m13 + m11 x5 + m12 y5) &&
v5 (1 + m31 x5 + m32 y5) == (m23 + m21 x5 + m22 y5) &&
u6 (1 + m31 x6 + m32 y6) == (m13 + m11 x6 + m12 y6) &&
v6 (1 + m31 x6 + m32 y6) == (m23 + m21 x6 + m22 y6) &&
u7 (1 + m31 x7 + m32 y7) == (m13 + m11 x7 + m12 y7) &&
v7 (1 + m31 x7 + m32 y7) == (m23 + m21 x7 + m22 y7) &&
u8 (1 + m31 x8 + m32 y8) == (m13 + m11 x8 + m12 y8) &&
v8 (1 + m31 x8 + m32 y8) == (m23 + m21 x8 + m22 y8) &&
u9 (1 + m31 x9 + m32 y9) == (m13 + m11 x9 + m12 y9) &&
v9 (1 + m31 x9 + m32 y9) == (m23 + m21 x9 + m22 y9) &&
u10 (1 + m31 x10 + m32 y10) == (m13 + m11 x10 + m12 y10) &&
v10 (1 + m31 x10 + m32 y10) == (m23 + m21 x10 + m22 y10) &&
dx == x2 - x1 && dx == x4 - x3 && dx == x6 - x5 && dx == x8 - x7 &&
dx == x10 - x9 && dy == y2 - y1 && dy == y4 - y3 && dy == y6 - y5
, {dx, dy, m11, m12, m13, m21, m22, m23,
x1, x2, x3, x4, x5, x6, x7, x8, x9, x10,
y1, y2, y3, y4, y5, y6, y7, y8, y9, y10}]

 Профиль  
                  
 
 Re: метод наименьших квадратов в Mathematica
Сообщение13.08.2012, 10:25 


20/04/12
114
дождался решения первых двух, в 1 написало опять же нет решений, во втором что их много и выводится только пересечение с какой то гиперплоскостью.

как трактовать, что решений нет логически (ближе к физическому миру)? задача поставлено неверно или противоречиво? или не хватает каких то данных?
возможно можно как то дополнительно проанализировать уравнения?

 Профиль  
                  
 
 Re: метод наименьших квадратов в Mathematica
Сообщение13.08.2012, 11:01 
Заслуженный участник


25/02/11
1797
Если вы хотите ответы на такие вопросы, имеет смысл разбираться с самой задачей, ее геометрическим (физическим?) смыслом. А здесь стоит начинать с постановки задачи, а не с выписывания необозримых систем. Или дополнять их, по крайней мере. Разбираться в эти буквах вряд ли будет много желающих :-)

 Профиль  
                  
 
 Re: метод наименьших квадратов в Mathematica
Сообщение14.08.2012, 16:53 


20/04/12
114
post604680.html#p604680
вот тут постановка

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

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



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

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


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

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