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

Matlab之Gauss-Newton法

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
这一题就是已知初始点,然后求某一点到三个圆的距离的和的最小值。使用的就是大名鼎鼎的Gauss-Newton方法。这里要求雅克比行列式,由函数 jacobian可以求出。所以这就减少了许多不必要的麻烦。
3 R) r8 W9 k% o0 a4 i4 z- ~0 w3 Y, G6 e/ ^

代码如下:         
6 m  c# F0 U8 a* \6 R+ V4 {


2 c' c$ M: `/ ]* j+ I4 {

  • 9 h7 X" S" P- a- j
    $ D) u5 w6 w. I
    % using Gauss-Newton method0 c( j# Y0 C- e$ s# J$ O- E
    * {7 w; O5 q0 s  e0 P9 k# D& c
  • 7 Q- {3 y  ~7 C
    ) O- W: A0 m  m/ ^9 m3 E5 V2 _
    % initial point(0,0)
    , F: g% H  B7 o4 h

    0 ]: m& Y$ y7 w6 h; j' \

  • 2 g1 V5 C& n) M% N$ m0 Q8 b5 d

    . d$ k+ t* r3 K. _+ R3 T  N7 P% 1、with circul point (0,1),(1,1),(0,-1)2 ]1 b! D# ]& x8 t1 [: b% P8 j
    1 x! }3 O* N3 @4 P! C+ j
  • & i  r  P6 |- m6 v. R+ v3 I

    0 A# {# A( U" T" O% 2、with circul point (-1,0),(1,1),(1,-1). E$ C/ t+ q" O* W
    6 b( x# p3 l% A8 H* i& ?1 N

  • ) w4 e1 }; e5 N, b+ a

    + P+ [6 m% v, E3 Q% its radius is 1
      a. h1 g4 H3 v
    5 S# `  Y. s( G  N6 z7 i0 z4 i9 W

  •   h; U/ S& e9 l$ E

    / S( }0 c' R/ A+ ]5 ]/ c. H4 e% output :the sum of distance is the minist# Q3 z! Q7 @# K: Z4 f1 q
    : U% p- n9 N4 p; E6 W6 _
  • , ?0 p+ C- Y: ^- [/ t: H# g

    . L& Q3 r, d1 `& H7 d2 A/ nfunction page_237_1
    : D9 f3 w5 \8 b5 @$ U7 _6 ?
    . h: N& a1 Q9 i- m. m+ k) y7 U2 @
  • 5 ]- y# Y, V& `. ]7 b

    8 }, m5 w4 `  Q/ Tformat long+ K4 B& R  n! v3 l- m# `2 z

    1 k$ c' y- c2 Z2 l2 F% m: Q

  • 1 y6 T* y; A4 q) K) J" l. A

    + a- Y- n% Z+ \7 a* Fsyms x y
    / S! u" E9 Z/ E  ]. ?. Q; R" B' ]$ {
    & T( C* h7 u* B/ `9 {+ R% H0 e

  • ' V& ~* i( J2 u: q! Y# @

    ' H; [, i* h* b& u3 C5 Y9 Rr1      = sqrt(x^2+(y-1)^2) - 1;& O: p, |# R% f8 L$ K& |5 F
    % k, p5 T! k' c+ O7 @% d: t3 c
  • / \/ q( l( J6 d# k. C' ?- E

    , J% G4 @$ O1 I3 I7 |/ xr2      = sqrt((x-1)^2+(y-1)^2) - 1;
    ; e- ?/ g+ h# f& n& A* ]: N

    8 d" P' Z6 m: E# V
  • ' A( i9 i/ I( {

    9 C* D) k" X( j  K. P  Y8 s( a, Ar3      = sqrt(x^2+(y+1)^2) - 1;9 v: s& _4 ~( P3 {: l$ ?2 s

    ! e$ Q3 [- [& ?, {9 ^
  • / ~2 p5 A( Q# B0 |8 [7 m

    ' Z( y2 G; H% N, g3 p% orxk     = [r1;r2;r3];
    1 U, t1 f, ~! A  K: Z( y

    ; Y" O: A" j& `  \0 m2 A9 U
  • . @; w# ?) t+ e3 Y  l
    4 b9 F3 w/ _  ?5 a, |; U6 c
    Drx     = jacobian([r1;r2;r3]);
    2 h' D0 r6 i9 G3 o8 {7 j

    ' D& T: b/ Q0 `& C( L9 ?

  • ( z8 X5 \  B+ `

    , M) i9 v( I$ q; ]6 l- @DrxT    = Drx';! G$ O: d# y/ j" {  W; A3 A

    + S( N# a7 L( {2 l1 q$ g# e  d" y
  • ) V, x$ t% I8 k# T( x

    * J: c3 M7 X1 l0 A  n/ ~DrxTdrx = DrxT*Drx;                 %Dr(xk)TDr(xk)! A) ]" y& h  F# N2 {. k

    ! E: h- o+ J1 m: W+ \

  • 1 v$ l* W9 _% l+ b' g3 I& d- }' I1 w/ h
    + `' Y! ^: G& a
    DrxTrxk = -1*DrxT*rxk;              %Dr(xk)Tr(xk); y. w% {  P4 A# x( K+ I- i) X' M

    8 U8 A$ h/ v6 ~" [) ^9 y1 W5 r

  • * D( q) |1 b; j9 ^
    ) q  ^, T# ~" ^7 A+ l+ V
    %vk     = DrxTrxk\DrxTdrx;  @2 _$ G% D4 t8 `6 r% W, v& E

    8 w8 R: b( }, h( J2 ~5 T
  • ' L9 H9 }0 v3 \

    8 p! R& c7 p: U# {* K" d" q3 WDrxTdrx_= subs(DrxTdrx,{x,y},{0,0});
    , P. F: v- D8 ?+ R

    , q6 w4 P3 J6 o" E5 y5 H2 b
  • " N% b" G( S$ m: f% n

    / ~# g# j6 ~& I6 a( xDrxTrxk_= subs(DrxTrxk,{x,y},{0,0});1 `9 I) J" M) a" T! _: }- i

    . T1 v' E: @1 k! d3 b- P7 K1 e

  • ! i% P: R. z( {2 [( U; a

    ) `* \% ]( ?! V6 X9 z3 z  ~xy      = zeros(2,1);
    ' b0 ~# ^8 G0 w. h- G( W
    ' x0 K' w, _  T% Z  j

  • 7 I6 g" `% Z9 _7 q6 X$ h8 O
    " g' C  ~) e0 k4 b/ E  U
    for k = 1:157 n9 V* y8 N# Y: q- |( b
    6 U$ g1 \5 \8 @0 u- u7 Y
  • / _* R' Q4 |; W$ J6 H

    ! H  ?+ |+ B* D! R0 |    v       = DrxTdrx_\DrxTrxk_;
      ~3 e( j7 R  [

    ) }3 ^( D, z: x" @# a* b
  • 8 Y: V& T! d6 L1 S
      }" t2 I4 u! t( j' P9 j, x
        xy      = xy+v;      
    * D/ J) ]1 |# ]6 a) m3 x& G
    - B' f# C& N. Z3 w# U. s, I, g3 A: |
  • 3 o2 ?! p7 x$ C) a1 ^
    , U* B! v0 k% S1 ]0 _
        DrxTdrx_= subs(DrxTdrx,{x,y},{xy(1),xy(2)});
      X7 X* ?2 p2 H0 z

    " t. I; P; Y* H
  • * K# R! H' e, U# ~( Q

    2 I! g$ Q" M2 _" {; t9 o5 p1 o    DrxTrxk_= subs(DrxTrxk,{x,y},{xy(1),xy(2)});
    # Z6 G. W! m7 Y7 M% K& E

    4 y6 @& \6 h+ |  K" J
  • , \  \) h* D, q+ b8 H- g+ D

    , M. g. `! ~) N) v3 b3 Iend" v2 ~' ?) U- S' i6 r, f4 B
    , X1 G* `7 p4 l) H, W3 v

  • ' m: N7 s2 ?# X" d% }2 y& z2 V8 f/ d
    # n4 H% H0 k$ {8 O- k5 U
    disp('a with circular initial vector(0,0),Centers(0,1), (1,1), (0,?1)and all radii 1,the point is');
    9 F( H9 g) i; j
    / V4 ?8 R" b8 z0 K
  • ! z* N6 Q* K' ~+ H( r; w: e
    5 v( A) }' W1 U
    vpa(xy,6)1 Y: h; }# u6 I1 [" @
    & N- F- C2 F" k
  • - @6 L$ J, Q' J  R' @  @7 N
    # L! H5 h7 |: s" R1 E/ z
6 |- ]6 \3 ]$ S. s& c  v$ e# }

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-11-2 00:09 , Processed in 0.140625 second(s), 24 queries , Gzip On.

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

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

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