找回密码
 注册
关于网站域名变更的通知
查看: 465|回复: 1
打印 上一主题 下一主题

Matlab之Gauss-Newton法

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2020-12-18 10:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
这一题就是已知初始点,然后求某一点到三个圆的距离的和的最小值。使用的就是大名鼎鼎的Gauss-Newton方法。这里要求雅克比行列式,由函数 jacobian可以求出。所以这就减少了许多不必要的麻烦。
/ m6 A2 L1 s) T% v  O, r% H0 k- C7 x% s$ K

代码如下:         
# D( |2 K% _0 h4 G  }

! X/ ~8 S* v) u( A* |2 t$ e
  • * g" q, ]2 h5 k0 k% g8 M
    9 f9 i( f) A4 n$ I$ L' x9 X
    % using Gauss-Newton method) ~, y4 {6 H; e! \& s. E
    2 O0 }. i0 F# l% N. Q
  • % Q$ j3 M2 T4 T7 J

    - o" O" n; w, o% initial point(0,0)
    : K) B' ^( `1 @- M7 R

    5 w! E& g7 K( w2 |( Z4 q

  • ' |  W/ w4 f) _% `
    , Q! p0 o& S. S* M) O9 M
    % 1、with circul point (0,1),(1,1),(0,-1)
    7 f: v! Q  R9 s- `- L+ h$ X

    0 ?- m+ ^# h' I3 J8 l& b3 \( P, I
  • : H% ?- f. X* J

    9 ~; I+ p" p& B# t% 2、with circul point (-1,0),(1,1),(1,-1)
    / q# ^$ F3 P3 [0 P8 `5 g9 W$ j

    , g5 e% u& J+ O( H! F( L1 c

  • 4 |: ~0 Q/ }6 d. k
    1 r2 |$ ^7 j  q, U' J8 L$ q$ ~
    % its radius is 1* z5 J2 K- j1 M7 ?

    1 f+ ~$ Z  \4 Z; y  ]
  • + f* ?! \- y- Q) R
    & m$ G7 X  g8 O$ B& B9 R
    % output :the sum of distance is the minist
    / h9 B( N! Y  V9 O

    5 C- u( Z" W+ G) ]) ?  P0 m: q& ~7 b/ F5 n0 G
  • / Q" w7 g$ D9 d3 X# N
    : r9 [. _' F& W/ d6 w
    function page_237_1
    ' y+ T. S3 V" {: l: H

    5 d6 E4 v/ l1 |( Q: @
  • ) t6 l. z  B; d& K
    * z* [" D) J( \3 j% P
    format long2 Z1 T. F4 C+ ^! |) q. h) \$ D1 P3 W
    / V5 \& S, D( ~6 a/ a  f! H

  • $ A% n- \5 A' h

    + d6 u8 k% G; y6 lsyms x y  `- I& H& V/ S$ y) v/ w8 v
      b( y8 K- u4 N7 e1 @4 R; b

  • ! x6 p1 u, n' R6 o  ~, I

    3 u1 ]9 C& Y8 n. z) q' m! kr1      = sqrt(x^2+(y-1)^2) - 1;
    / C' F% D0 Q' V3 V

    + l2 b' V7 m$ ~) M

  • & `, h! [" j" B9 g1 p4 a6 p
      L* m) `/ e" u2 s- Z0 t0 y
    r2      = sqrt((x-1)^2+(y-1)^2) - 1;
    , f* s) B! O" C( Z5 @
    ' p5 h+ H" y  O; t8 i
  • . c; W2 A6 X. Z" n8 a" m0 F9 M
    , c; Y$ T# |- L) M2 m. a2 g" y4 a
    r3      = sqrt(x^2+(y+1)^2) - 1;
    , D( x+ M. @/ C
    ) S/ r, w" e' Y
  • : J3 ~) ]# F1 A$ h  Z

    & |3 b- J' T6 y- B- Arxk     = [r1;r2;r3];
    9 C7 |# M+ n$ X* A" H
    - s( t9 W$ M% C1 [4 Y
  • 3 D9 B1 @% }' d! h
    7 z% o# @! a! [
    Drx     = jacobian([r1;r2;r3]);
    + J& T$ V* ^# h  T
    ( Z: ]" y, G+ O
  • 7 s  C  O6 |7 V/ @! |: S1 q

    ; Y6 _  \, q! eDrxT    = Drx';* S4 Q  b- A5 S3 E5 f5 t
    1 [9 Y7 u6 K7 j/ S: Z0 q! y2 j" W

  • 0 `% A' V' W" ~( f" j( ?9 `
    - F. U* j0 T9 C% d
    DrxTdrx = DrxT*Drx;                 %Dr(xk)TDr(xk), a, q6 T/ n9 D4 n/ q) ?8 s' X) B/ g* n
    9 [6 l" ^5 j8 a  e- E5 x
  • 8 ~3 k. k% j$ c1 g+ B

    # t( T7 e0 N' d: Y% {7 BDrxTrxk = -1*DrxT*rxk;              %Dr(xk)Tr(xk)
    # d" y7 W/ Y$ o" j
    * d8 r# H5 y) b: k& T
  • " T/ W; L. g- Z9 y& _0 s- i! P! x
    0 ~5 f0 k8 a& v; i5 N1 z; W
    %vk     = DrxTrxk\DrxTdrx;
    7 m+ G" Z$ f5 R- ^% E
    % ~, W  W( F* Q3 J
  • # h5 W3 x1 e: n/ r
    ) {( `6 g9 h2 Z, x0 l3 M7 ?- d
    DrxTdrx_= subs(DrxTdrx,{x,y},{0,0});
    6 }1 S. T9 I/ x
    " _% _2 ^* h, |  `2 U, G4 h9 v

  • ; S/ z4 x- f% N4 Y& [! z

    $ S; B$ K: L9 r' ODrxTrxk_= subs(DrxTrxk,{x,y},{0,0});
    : y4 g4 ?$ T/ Z, J) L
    : S) y+ J# r$ `3 I: X) {
  • 0 s6 q. {! S& u- u

    9 H! Y$ \; |) L# c! Y- b" ?xy      = zeros(2,1);/ Y! U! _0 T+ y- x

    ) O+ J" X. Y+ H
  • % U8 [5 a8 Z' K6 g$ y  W6 T& r
    7 n1 \6 Q$ G0 P
    for k = 1:15* p8 T" d! U) I6 q' f* Q( R
    : V! f) O- W6 s& y' l5 e
  • 2 U: a8 D" c* K

    & c, H, h3 e; E' F5 P    v       = DrxTdrx_\DrxTrxk_;
    # q& T, u& V3 E$ ^1 `; d  E$ C

      r# F' W3 c9 v  C

  • / W  g; u# E* D1 O

    7 V& [6 ?, \& x9 [& {& W9 F    xy      = xy+v;      / J& P; P+ h8 J, x; N
    $ M- U1 [3 S/ F2 V0 U/ D
  • : |0 L5 g* u9 V  E
    9 R& Q% I' @$ ^$ K- H( M$ p# T
        DrxTdrx_= subs(DrxTdrx,{x,y},{xy(1),xy(2)});9 z2 H. [( W1 v' j* O

    ( L1 y6 L6 F: P4 A$ R

  • 2 i, v: W, b5 c$ M

    $ d' s/ S: O% E7 `" [5 _! {+ f! _: L  y8 \    DrxTrxk_= subs(DrxTrxk,{x,y},{xy(1),xy(2)});( L! O# ~) j" y/ I+ y& e
    8 W0 S! l$ X6 O
  • , e$ @9 A9 j. f4 c" [

    + C& Q% w0 z/ @$ @2 o& Qend
    8 G* ^8 v9 f6 F4 W* V) x
    5 J5 Q( P# U& ~1 O% F+ P

  • * N( i- F/ e  U5 u

    % h, A, O5 s6 G) Wdisp('a with circular initial vector(0,0),Centers(0,1), (1,1), (0,?1)and all radii 1,the point is');
    + y+ a. Z9 O+ n" M6 C9 H6 Z1 e8 w* _
    8 r! t3 z* g2 n* K0 B1 [

  • 7 l7 l0 P+ O  M8 h% e
    8 T0 L/ V" p( T
    vpa(xy,6)) y3 U# _6 H9 P4 x) o

    * h' u- h/ u" I3 X% Y9 k8 v4 m

  • . `% }3 W! l2 h7 E. C, i
    , `+ ~% Y: v+ C2 }
: q/ v& o" X, V4 V+ a5 A

该用户从未签到

2#
发表于 2020-12-18 11:13 | 只看该作者
Matlab之Gauss-Newton法
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-11-24 03:49 , Processed in 0.140625 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表