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

Matlab之Gauss-Newton法

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
这一题就是已知初始点,然后求某一点到三个圆的距离的和的最小值。使用的就是大名鼎鼎的Gauss-Newton方法。这里要求雅克比行列式,由函数 jacobian可以求出。所以这就减少了许多不必要的麻烦。 9 p5 N* R8 M! P  C
, T! c  x) s$ P8 q+ I) _

代码如下:         + S0 M! B. Z" b( B6 w

6 T8 |2 O; D( F7 t6 o! {

  •   Q' L: Z; @; _0 }4 p' E/ H
      m# v  V$ j! y: H; I8 H' M! U1 t
    % using Gauss-Newton method( h/ P  ~! e/ I+ X

    ; o! F6 {# ~3 e, B
  • 4 N( Z3 r  K7 B( y1 Y

    ) ], a/ h1 c+ y% initial point(0,0)
    6 v  J2 m4 P  }  |* m) n, A
    & x" }& D2 |! R  }$ Q& Y9 L

  • 3 _) z6 Y0 g# T1 y# t* n

    * g6 G% C3 v' D/ s% 1、with circul point (0,1),(1,1),(0,-1)1 V0 a0 X( d: z  }1 K

    2 |" C2 C3 j" G0 y$ T. q
  • , K  O3 O1 h' W; O

    ! D( e" B% O9 z5 L9 M, E% 2、with circul point (-1,0),(1,1),(1,-1)3 c# S" X1 A1 B( t) e. J3 ^: b

    : W. d( q' [2 H6 k1 v$ D4 P, x
  • % e, E, E0 C4 {( _5 T; p& S& n

    8 m3 ]6 x- D6 v5 R- \% its radius is 11 v/ s8 ]1 L) H4 }' R
    % a. }) m6 Y+ n0 P1 N1 y5 p; q1 h

  • - Z& J( z/ a: P- `9 p! E

    . M6 J4 Y8 a( ?- E" i+ o% output :the sum of distance is the minist7 k) v, T; x# u$ ^# g: I

    ) A  M$ T# ~# H  `2 w# U6 B1 X% v

  • ! }( q- M" \  b: \, d0 q6 G

    & C' G5 P' X" S8 o3 Ifunction page_237_1
    ( q6 ]/ {4 O* ~8 @. _% A4 B0 ~1 _

    7 |, [2 y5 Z3 r
  • 0 @- E9 t; P" h) z+ [9 O* L

    8 d; k/ U; f5 e( `( P) |format long
    7 A7 A0 H+ ]  u6 ^& @  L- R+ j2 y7 [9 `

    3 H0 J5 }  r* T( `; u6 T+ |

  • 1 n( D2 b7 Q) W% B* s

    ) k' M$ x! G* `syms x y% ?/ Y+ ?& Q& P6 R0 I  E  f) `: w2 D
    . x0 F5 g) U0 L$ ?1 H1 o* {- i
  • 7 v5 l) O! n* _' {& N2 F  g% q

    ) U5 x( ?1 r: ~( |8 ir1      = sqrt(x^2+(y-1)^2) - 1;& [0 n7 [: \3 T
    ( J) t5 m- h& Z8 F2 m$ e9 ?

  • 2 y) B3 j$ B8 P

    1 f  p# s7 C$ cr2      = sqrt((x-1)^2+(y-1)^2) - 1;: W" _' P+ U; P+ H8 f& q4 A

    1 k6 k. {. m1 p, {# G# ^4 |7 T

  • 4 a: `7 v  K( M7 B8 V

    5 p$ X2 U; `2 s9 W5 Pr3      = sqrt(x^2+(y+1)^2) - 1;! r* Q. K5 Z1 s

    * D6 L7 j9 K8 Q+ _- `9 l+ I4 U1 C# O

  • ' @+ E4 a7 b. O4 l" N
    % A( c2 ?; h; t3 t
    rxk     = [r1;r2;r3];
    - O3 \8 Y9 M+ V
    6 ?8 n8 Q& z( ^# q) ^

  • ' Q3 |% n$ w1 q5 r/ p

    ; Z  n3 j$ T/ @6 WDrx     = jacobian([r1;r2;r3]);& b5 I3 j0 B; Q) m

    8 Z6 g4 O3 L5 ^, }) c1 b6 i
  • / {. [5 ?: V: y0 c) a5 b
    / w1 v0 q- W  A/ K: Q. y6 n3 b
    DrxT    = Drx';
    # ^. I8 m7 g" G: b/ U; V6 [7 j  H

      P+ g! z9 R; {6 W
  • 5 R) R9 k9 ?' R5 C2 @( {
    ! y/ e# F& p, y6 ^3 U  |$ [
    DrxTdrx = DrxT*Drx;                 %Dr(xk)TDr(xk)1 ]4 `0 d# ~2 }$ t+ |' L$ b
    / ?6 }' s, M, |! N

  • + T- N2 K4 F- \" }/ g) i

    0 ~$ ^- a. E2 v0 R# }DrxTrxk = -1*DrxT*rxk;              %Dr(xk)Tr(xk)
    * m  x" Z( a& n
    7 G( o- B' y' I6 `3 b5 f
  • 4 J" `7 r9 s( u

    : u4 F0 [! f( `/ c%vk     = DrxTrxk\DrxTdrx;' {1 ^. j  O5 F
    # L  n/ f- I2 N8 j! d9 ^* b% `
  • 9 M( h1 z/ ^0 U7 n# s6 ~& R

    3 j: y' \4 c) J8 ODrxTdrx_= subs(DrxTdrx,{x,y},{0,0});
    ' f% \+ L& \+ {' [
    / W& j/ P7 V, Y9 p5 X3 f( D
  • , m. t8 ~" M( u9 y6 I4 q- B
    - W4 ^+ |7 V+ V6 |/ U1 Q8 |0 N
    DrxTrxk_= subs(DrxTrxk,{x,y},{0,0});
    7 E2 B9 d& ]. P" n3 X# V* M: x
    ; D6 ?& V  I  P
  • ; J& b$ [4 c( ?6 ~$ N

    / W8 \# l4 `9 ?1 v3 Dxy      = zeros(2,1);# n9 Y, V3 n- c2 y9 {3 y+ F- F
    # W0 m7 B! _* _1 Y( c- {) j

  • 7 n1 |+ C5 Q0 q% C/ s

    9 Q3 Y' S! c9 j) E! {for k = 1:151 i, D5 W8 E! w" n6 U  ^; x

    . e2 ]3 S* F0 ~+ |8 B) F& ^
  • 7 ]( k" t/ n2 s, B- s" K0 ^
    # `* c! {3 ]1 K& y
        v       = DrxTdrx_\DrxTrxk_;
    ( n. g  I* T1 K8 P1 V1 ~0 E
    $ ^; q+ v& Y! r# \( c
  • . f* ^' P+ J9 R* l+ }
    8 z' N7 W* ^; U  j3 r6 ?
        xy      = xy+v;      
    ! `5 N6 J4 s" D

    , \( ?# s( x7 C( Y. i: q
  • 1 r" z! P- G3 H3 u

    1 V9 q0 u5 O9 W# H& |    DrxTdrx_= subs(DrxTdrx,{x,y},{xy(1),xy(2)});% J! f* B3 y. K" w- w
    ( x- m7 b9 K4 i8 l# \
  • ) ^2 j: J8 a# e5 j' c
      S; e0 k8 p! ~; U/ f
        DrxTrxk_= subs(DrxTrxk,{x,y},{xy(1),xy(2)});9 x% `- a4 B1 Z7 P

    3 c: \$ j! i) L/ |% V1 s' w

  • 0 k* `6 S' m* k0 ?5 H$ Y+ u# ?
    $ S/ Z3 v9 k- S  T/ P5 F  Z' |0 Q
    end2 O6 R2 v0 v# {7 w4 U9 ?9 U
    ; M$ W, m0 v; p
  • % V7 ]) s8 A5 Y1 x& a/ b

    ( ?2 d3 g7 j5 ^. A9 ^% Q, z9 ydisp('a with circular initial vector(0,0),Centers(0,1), (1,1), (0,?1)and all radii 1,the point is');
    " U$ ~1 u8 m& @9 P

    ( n6 L9 l  D# x) t3 \6 D3 p

  • * P: W& b  t9 c( ^) O

    ' k* n' o) N1 t5 w  D; ^vpa(xy,6)
    * z6 T' b  I9 e7 [4 c8 e
    + i5 a' r4 Q1 y4 z

  • + g2 z' b) u) c2 [6 g5 b; ~: w9 Z7 I% b. B5 Y! g1 l! a' `( H
4 Y( v' z, Y1 F# K' V

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-8-1 02:47 , Processed in 0.109375 second(s), 23 queries , Gzip On.

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

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

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