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

Matlab之Gauss-Newton法

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
这一题就是已知初始点,然后求某一点到三个圆的距离的和的最小值。使用的就是大名鼎鼎的Gauss-Newton方法。这里要求雅克比行列式,由函数 jacobian可以求出。所以这就减少了许多不必要的麻烦。 0 u! Y; E: c+ D, s( F

$ Q* {8 {$ g' f9 `# r/ Z

代码如下:         
: b  g: h1 x  d( m0 e" k


. C  D5 ]( e/ N# a3 ~' [: I
  • & w6 C( Y$ S1 A. ?, E1 s3 O+ I
    : `( f! q+ h% c6 m; L6 r! F5 }% R
    % using Gauss-Newton method
    ! ^) E# M6 I& v& P6 Y& {( {

    + ]- A8 r2 t& Z; L2 C* }' @
  • 6 Z; }) n0 B  s

    : v, S# m; b  O$ Y1 b; d% initial point(0,0), m$ k. `2 E( F2 F* Z
    ; z. H8 Y) G, V5 C4 M& @/ O1 f' ~  W
  • ! S4 L8 v2 Z. Q/ j

    # K) ^  Q# g% C% 1、with circul point (0,1),(1,1),(0,-1)
    8 D1 a9 T6 Q# u" P' ]( G3 B4 Y# _

    # N) }" M8 @/ `# e& O6 m& R5 K2 u
  • * {* h% \8 t  `7 E" Z, x

    4 b3 Y0 D' C* t! Q; W% ~% 2、with circul point (-1,0),(1,1),(1,-1)
    , V* T. g' W9 A7 x) S' {

    , |: Z/ h* [, m' d' X9 j

  • 2 N) t  ~; ?0 W8 [) A: D. p" g
    8 ?# o5 F# i( B0 o
    % its radius is 1
    ; b9 v( {9 U6 e) U5 i/ S; T
    6 J* {; Q8 q, ^: y3 S6 S
  • : O7 J* o  ~. ]  P' {) S7 i) @& B

    $ n( ^2 ~7 q2 W% k0 S% output :the sum of distance is the minist7 V' F6 w. R, P7 u+ k1 l) D
    1 F. `" q: c& v1 l
  • 5 y9 Z& J% n" C0 h
    * }2 Y/ p6 [8 j$ c
    function page_237_1' r- C+ w# ]! E$ ]! N  N

    " W1 `. I' J" X8 X/ ^7 V* B. ?  j
  • " Y* ^0 ~3 t6 ~0 d

    9 ~1 R! M0 n* f  b6 @format long
    . O2 w" L7 }. m

    # a0 n3 `) [+ h4 |$ l
  • 6 @6 a/ z* I2 b, B

    5 A' K: [( W* ?5 E9 U- Usyms x y, i" W8 T: D# H. r5 i
    - ~7 B1 ]* f- g) z. U
  • 2 U- j. F3 R1 G+ I
    : H0 c' \1 R; O3 Y/ _/ `
    r1      = sqrt(x^2+(y-1)^2) - 1;) S* D2 M. ~7 X# w* X7 F

    5 [( e) Q& f$ e" ~) B$ v$ m& ^
  • # G1 V# T. F! a$ b
    - h! ^( }( y$ D4 p5 D, \( I
    r2      = sqrt((x-1)^2+(y-1)^2) - 1;8 T$ {: x- {6 @5 {0 t& k8 ^

    $ d' Y: P. }: h  f7 N: A7 P
  • : l/ c3 Z' h8 R, [
    & B1 @# Y! ]- K6 V
    r3      = sqrt(x^2+(y+1)^2) - 1;! n& O* k% Q& Q: r

    % D* X+ D/ w) F0 j; D( b! b. Z
  •   a) I% r' }) R# @# D0 V- a
    / Y* G/ k, ~+ {, t
    rxk     = [r1;r2;r3];7 h( [- X8 \1 |/ \) N$ F9 T
    3 z8 `: h- m( M1 c# B
  • 3 w7 Q1 p1 ?! L8 o$ P# H

    # e7 S- h' _1 MDrx     = jacobian([r1;r2;r3]);
    1 a- y! S* K: i" R1 T. j* m% \8 B- h

    5 p6 @. J& G3 k9 Q3 x

  • ' b3 I: b  h9 r$ I( f5 N

    ( C2 Q: ~7 {; [, eDrxT    = Drx';* r7 D. V. g5 b# ~

    & X" s( U2 d  n+ F; r

  • + X0 Q' ?, a' j, f3 w) O

    # h+ u4 R: K- S2 j" G* ^$ [( @) ~' gDrxTdrx = DrxT*Drx;                 %Dr(xk)TDr(xk)
    * h2 j+ N: \7 X, p0 D5 r0 M
    / U& R/ O0 ~5 U  N( Q# P
  • ; W  G9 C4 h; `# @- e

    : L' j( m1 ~  K/ J9 M1 f, kDrxTrxk = -1*DrxT*rxk;              %Dr(xk)Tr(xk)- b- E/ L; i6 e" L* G$ y
    # [' a5 V! b( Z
  •   q. M# z% `7 t/ n% G, s
    & }8 }* O" F; [
    %vk     = DrxTrxk\DrxTdrx;  T- U" @* o+ [/ d5 i# v: F

    / v* j1 p9 f& z$ y9 Z( w1 ~1 [  }
  • : y  ?! B7 z- ?! [
    " z" o+ a2 h* q! f
    DrxTdrx_= subs(DrxTdrx,{x,y},{0,0});
    - `' B6 M! [* |( y- A

    ' n! K1 o$ Z& u* @6 |" ?( [6 z

  • ! _. K1 Y/ N2 o, B: ^

    4 \' A7 r/ ~( a9 m) e& J& IDrxTrxk_= subs(DrxTrxk,{x,y},{0,0});/ c1 M8 z8 y2 Z7 A/ D7 E! P: B

    + E& w% {: @- `) T0 q
  • ! H& _6 u% t) a* `8 W" ]$ w
    : P! e6 F- v1 y; A0 g& R
    xy      = zeros(2,1);: t: g' h7 |0 K/ d  c

    ! i# Y- [' ?% P" }
  • ' L9 L2 o5 e6 f. p% S2 r

    2 ^# k3 Y8 h  Rfor k = 1:15) E7 l; _( s, O5 G
    " Y- I+ l( f- E0 D) Y# a

  • 3 h+ H0 S0 \1 N% B5 ?* S0 p
    $ I7 U7 c) }6 P* t6 E
        v       = DrxTdrx_\DrxTrxk_;
    . o1 `' D" V9 k1 x/ S) D
    6 Z: t8 ~5 m# }$ V

  • ( z1 a' `) z9 m# o

    ) I% w+ A7 K6 @    xy      = xy+v;      # W# |. t+ }" r& k* l( X( B/ A# q
    " d; I& }9 e8 T6 Q

  • 9 A# a  q. Z" u! O9 k. Q9 o
    2 F4 u4 Z& V$ I
        DrxTdrx_= subs(DrxTdrx,{x,y},{xy(1),xy(2)});
    " l8 Z- V& |9 q; g: J

    4 @8 C- W! D3 n; k; T
  • & ?) S' e2 s! e/ k$ W

    5 D3 z) _0 w( X4 g) \+ W9 s% Q* r    DrxTrxk_= subs(DrxTrxk,{x,y},{xy(1),xy(2)});( {/ M) R* v1 K9 i
    1 F6 n% h0 f% ?( Z+ l- y, V

  • 5 n/ Z* T5 p. b, d7 R1 v& q

    . B" @, G3 O& g4 `: E! e2 bend
    % h% y# z$ |; K+ E+ D: X

    ; F% X8 N& c1 u; M

  • 3 d- k( g% y& R! s+ q

    % B& k; n0 K" O6 ~1 Udisp('a with circular initial vector(0,0),Centers(0,1), (1,1), (0,?1)and all radii 1,the point is');$ n7 S) U2 t! K

    ; Z; I  a! r) V: I
  • 9 y  J  u* W, K0 S: k

    # B3 {% X" z" f1 p7 \6 Jvpa(xy,6)- Z1 d) ~2 J7 n, ~, ^- Y8 r& k
    6 T5 V2 f' `. K# r& [
  • 5 Y' V8 O4 q! W  s
    + s0 e- i/ Z* o5 X( G

; R1 p' }/ J+ n

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-7-21 01:15 , Processed in 0.109375 second(s), 23 queries , Gzip On.

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

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

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