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

Matlab之Gauss-Newton法

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
这一题就是已知初始点,然后求某一点到三个圆的距离的和的最小值。使用的就是大名鼎鼎的Gauss-Newton方法。这里要求雅克比行列式,由函数 jacobian可以求出。所以这就减少了许多不必要的麻烦。
6 S, Z4 s7 k# E3 v. o4 |
5 W, k' a: g( [4 r' U+ u

代码如下:         
! ^1 `# U, z/ z- l: _' ^


( U3 V* a5 h/ }; k

  • # x9 v8 J6 ]. C( B' B* b9 w

    , R0 F# M5 G$ P4 G/ k% using Gauss-Newton method  i5 S# v3 H" p# g9 v2 Z& r
    2 }/ a: Z% `( a' q

  • % O. G. q# A: C7 r5 ?
    8 Q! _  y+ i* k& {# ?
    % initial point(0,0)8 S, [. r$ {. c  x& U- W

    ' s( a2 B! L- g7 ^2 ~

  • 3 m/ m8 G! e/ g+ |+ R( W  u
    . B" z& W7 _$ l: b3 }% f
    % 1、with circul point (0,1),(1,1),(0,-1)
    * l  u4 p- f$ u' |& t' g# p, L

    / z% U& ]1 f& {9 u

  • 8 i  @* R4 D& ]6 D, `
    - b7 Z: }8 r( t9 [/ X
    % 2、with circul point (-1,0),(1,1),(1,-1); k/ ^  e2 ?8 R% W: L( `

    1 P, R9 f) n7 t. g; f

  • & n% i8 L7 Z4 F8 W( b" @' [
    . R5 K- F3 }8 |6 m6 j1 }& I
    % its radius is 1
    3 P, ~. Q& G. B* L$ B1 W

    2 ^  Q* x' Z& Y8 k& \
  • / k% y$ F; R; y9 Q- z% V9 o/ Z
    # F; A  H8 x: t( ~% `* _! p
    % output :the sum of distance is the minist( l- P5 x5 t7 ^& @
    0 Y& _" G% P" N8 ?1 u

  • - T  I( @3 `+ r' n( B& n( w
    8 {1 h) Z$ m+ A
    function page_237_1) ^0 a# T7 Q9 u- G4 R
    % B' m8 s, I, e% o7 ?, G3 m0 `  i

  • 4 t1 P- p* b# v$ k
    . Q! p$ E1 b/ M8 H$ c
    format long, c8 X) Q, I5 d/ X6 ~: G+ M  r

    ! `; O( |+ |! k6 a- G9 v, j

  •   q9 c2 J0 O% d( o- e
    2 V' ]2 D( b; [! v- z
    syms x y
    , b; N( x: X( M4 e+ {
    ; {- u- Y8 D0 e' G: k, h

  • ! m/ s, x% n" y7 b9 P( [+ n

    * M( V# b$ Q: D9 W7 i3 p" Ir1      = sqrt(x^2+(y-1)^2) - 1;" _5 z5 g/ p7 t. y4 p& x

    + x0 o$ V+ l3 ~' d- b0 e

  • $ ^# s1 Q( n* z2 D( B

    9 d- n# u+ Y& u) t% Jr2      = sqrt((x-1)^2+(y-1)^2) - 1;7 w0 ^8 j  o/ q9 n( n

    3 \$ g7 `  P- I9 w0 i

  • ' ~* p" G- ]/ p. b
    / \; a* D% |+ j
    r3      = sqrt(x^2+(y+1)^2) - 1;6 w5 V* M: o" S

    6 P+ I1 Y$ N0 u  i4 V2 Q, T

  • * \  S" Y' V7 L, M3 \

    ( `+ U, Y8 f: L' xrxk     = [r1;r2;r3];
    7 f% |; p4 p1 A& k/ Z: i
    6 _  e$ B) N7 C  B" S( D3 }

  • / m7 T- }$ O, A- Q$ ]6 S, W5 E

    # R( n0 \8 z0 x5 \* wDrx     = jacobian([r1;r2;r3]);
    5 ~& E1 y0 p" T% ^; I
    - G7 x1 }" S0 O8 W! Z
  • 0 d  b+ k2 ~; Q$ N8 r
    + n2 S8 k% D1 o5 j( @: E
    DrxT    = Drx';
    # C: r/ X$ j' x! L. k8 Q) N$ u

    5 _; ~& Z+ o% R1 z! d
  • 5 b2 [; l2 n' C% |5 c' j( G) Z
    ) r% W% D% @( N! F
    DrxTdrx = DrxT*Drx;                 %Dr(xk)TDr(xk)
    . c, v* ~6 `9 m! W1 B6 w

    6 A: Q$ |. t0 p% n: x, Q6 }
  • + V# g; s3 Q  `0 s' l

    5 a4 X4 `. c& T* a9 {  @0 Q6 kDrxTrxk = -1*DrxT*rxk;              %Dr(xk)Tr(xk)
    , t- O3 m! D# O# v) R0 T
    " a" Z& Q) |( P% N$ n7 d% d

  • 7 B+ r" a0 v2 H; ~5 t$ Z8 j

    4 {$ f0 Q$ z( [- m! {2 n) u8 F% S2 Y%vk     = DrxTrxk\DrxTdrx;
    * \) q! X% X! N1 o: i3 z& e
    5 C  N3 z$ ?! j) r" T! v+ X' x

  • 0 ?7 `* c$ A+ D% _' B( |

    0 ]8 x+ a. V% F1 Y, Q: j/ {- EDrxTdrx_= subs(DrxTdrx,{x,y},{0,0});
    # ]. P3 l: W6 M6 k# r3 |
    9 p9 ^% o) Q$ u" E9 A" p0 [3 h" V9 C
  • 1 C) y7 h0 l+ a5 A8 K
    9 ]9 M$ j0 O; F
    DrxTrxk_= subs(DrxTrxk,{x,y},{0,0});& }0 A# K. U: x9 Q0 c; |) w

    / S7 H6 V$ T9 y8 K# k

  • , H8 A2 K( L) a; h
    6 y) A, E! S0 B. ]
    xy      = zeros(2,1);* y+ d* c  @( h+ r

    ) a$ I7 A: R5 Z' Y0 W

  • 3 d3 g8 J. V: [) N: O: W* R: j; K# ]

    5 g$ V" ?; s9 E% p  t% }9 m! Ofor k = 1:151 y8 {( l4 W0 _

    8 Y3 l1 V' y" Y1 i; Z2 G
  • . _, V* G+ \8 O" q0 @! t
    9 Q$ a2 }- q! y- G$ g' I& j
        v       = DrxTdrx_\DrxTrxk_;+ m; ^) ^; P4 @$ Z

    , }. W: p8 H  x$ E: C& q0 o
  • 0 F1 v- B8 h3 K1 {3 \, F

    ) v8 B9 H  _. |9 M  s    xy      = xy+v;      / n0 w1 Z+ t) A3 g

    / \3 y7 P3 C4 p6 A; |# q- O

  • . P4 u( @: ?4 E  {2 q! R) \9 A+ Z
    & F3 C5 F/ N' Q; _, O. A& V5 X
        DrxTdrx_= subs(DrxTdrx,{x,y},{xy(1),xy(2)});
    " N1 D6 E+ i- |( N( h) [5 ~* h1 H

    + I& `; Z2 d6 [- e1 y/ R
  • $ d) ?* W) E0 c
    9 d" G$ ?, i8 [5 X! W0 E
        DrxTrxk_= subs(DrxTrxk,{x,y},{xy(1),xy(2)});
    ; e0 |. A/ M8 e  Y

    & T( q6 E) `9 c0 G1 K
  • ' I3 Q+ h8 v# p4 e0 z

    . B! V$ n* s0 [/ p" T; nend
    7 z2 Z0 K; j2 ?5 n" S, s
    / M# }1 K3 z1 d4 {. U# i

  • ! }& \5 a2 |6 i* i
    2 {% E+ W: ~: x6 y  F" T4 R$ ]
    disp('a with circular initial vector(0,0),Centers(0,1), (1,1), (0,?1)and all radii 1,the point is');# {* b1 y2 K$ i6 [9 \

    ! x* P) y1 q( l7 o' m% S7 [6 w
  • " \- W8 Q- n! S9 s! U

    2 D% }, O5 R6 [* Zvpa(xy,6)( u! {( i, B5 N0 b" W/ T
    " y1 v9 U& R- ?. t( ~

  • + ?2 g5 h3 j/ |( J$ \7 {" f3 K& h6 _& Q4 L; Z; s! e

1 Z& n/ W# |. ]

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-10-6 23:04 , Processed in 0.125000 second(s), 23 queries , Gzip On.

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

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

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