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

Matlab之Gauss-Newton法

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
这一题就是已知初始点,然后求某一点到三个圆的距离的和的最小值。使用的就是大名鼎鼎的Gauss-Newton方法。这里要求雅克比行列式,由函数 jacobian可以求出。所以这就减少了许多不必要的麻烦。 4 Q- _. m$ }+ c) A5 w
. Q% O% u1 A2 \$ K

代码如下:         2 s- ^5 [: g# Y; N  c! F

+ Y: u  E/ g, S; D  o% z
  • , [$ ?$ A6 W+ [+ n$ s9 K4 _5 z, {

    0 H8 z: x* q: a# C& M! c% using Gauss-Newton method9 C- M, n  a; S. C( H+ U

    ) D$ M' G, r! o# ?

  • , T1 M% ], g  e2 G) y/ n
    2 t8 c% t/ Y- A5 H. R* ~
    % initial point(0,0)
    ( c2 d3 ]) T9 N" d5 B# b
    . L! V2 U+ o6 m: o9 W
  • - m' P0 [9 ~& A9 Z/ h1 ?; U. }
    8 X7 j4 j1 z) B: c
    % 1、with circul point (0,1),(1,1),(0,-1)" ^- R+ d* p) o. g

    8 h/ `: k9 @+ ]' I

  • " l& f7 b1 R0 x( g' b, W; L  S

    , t* r! `, s* u% S' u0 ]; X2 x" {% 2、with circul point (-1,0),(1,1),(1,-1)/ ]* r& H, x& n
    - J' V( B: G2 f' ]: w8 ]# G7 v
  • 2 o5 X& j% B9 g3 C2 c# u& j. N

    ; }" W" z! C' t# F0 P% its radius is 1
    & s0 y0 b! |- F) B! @( _& c, g4 ?

    5 `/ L8 S2 d. Z/ `; u* Z" i
  • 0 d. i7 U& H) t, l3 C; E

    1 e* {* f5 w4 b5 R0 d% output :the sum of distance is the minist
    % _/ q3 z& l- d5 G# j

    * a+ q5 T& x. c% E$ ^+ B
  • 3 K' |) k+ l7 ^, P% k

    0 s/ `3 R5 M! Y% h2 J% U9 Tfunction page_237_13 p9 _' T! s, i" t. L
    : x, t+ O" m5 o6 g# S

  • , D/ o! m3 _( A4 W1 v

    ' d. y7 {5 o0 n" W0 Sformat long+ l* u/ U1 N- [- ?* V/ e" O
    $ l2 ]# W+ q5 F' }

  • 7 Z: q" H6 t7 @+ s8 i
    " z3 X8 k4 _! l, |4 ^6 b
    syms x y  v) Q1 H9 ?8 L9 B
    3 ~0 B3 q; A' U
  •   ^4 A' S; g5 l* L/ b2 f
    % q$ ~) ~6 F* S  A8 H* F3 @
    r1      = sqrt(x^2+(y-1)^2) - 1;% Z& W" {/ s. e6 E3 Z8 Q7 G+ h
    . a& T; [1 a7 W4 l; ]% b

  • 8 v3 s4 U5 a0 P! T# M( |. _5 d
    ' b$ Y" S# A1 P* r0 y
    r2      = sqrt((x-1)^2+(y-1)^2) - 1;
    6 i6 y3 z9 o" z+ H

    : u) |5 ~: @2 S2 h8 i

  • ' `5 E1 J, R9 {6 E& G. J) @6 ^

    7 a8 ^# g# f" q; F/ Z8 Zr3      = sqrt(x^2+(y+1)^2) - 1;
    % H4 y) i( u- Y: r9 F# Q1 ^  w) o
    1 \+ N) I; E4 U) ~8 L1 ^' k

  • 9 t) Q; j* G" c% C

    5 R0 z! x4 }6 F9 X1 Wrxk     = [r1;r2;r3];
    6 F# z& U+ R2 P: `
    6 j3 I6 T& c7 R9 H$ [/ E

  • % Z' }* S7 c' U8 N$ i  @  y& s# @
    / a9 s( {- j1 ^: m' y
    Drx     = jacobian([r1;r2;r3]);
    - w0 \  m) N5 A4 ^, @

    : j, c% [, k- v0 t  v" `. t6 }
  • 1 m0 p# [  s: l% s5 M1 X

    $ Q  W  M/ c1 S8 k4 Y; y$ N" ~0 H+ `DrxT    = Drx';2 D- J' [3 s4 O1 d4 H3 X

    " x: J3 b7 K8 d+ e$ i/ R

  • 2 j; h: w9 h9 m+ x/ r* f' }' j4 N
    $ J% D) T$ c6 O" T  O5 m
    DrxTdrx = DrxT*Drx;                 %Dr(xk)TDr(xk)
    ! }; C% @3 I4 d4 u+ I  |
    " l) J5 M; [4 `4 F8 h9 J8 b9 L
  • " }" g+ R- z, K% X, D9 A; }
    - |: A! I  i7 ^; c6 d
    DrxTrxk = -1*DrxT*rxk;              %Dr(xk)Tr(xk)
    ; j) N) u5 Q2 B) |. q6 @/ r
    6 [8 [# @5 B4 O+ ^: @) q' @
  • # h" N! B* K  O3 u/ K

    ! F8 L, J% B6 T$ b+ R8 P+ U%vk     = DrxTrxk\DrxTdrx;
    " U* j$ T8 G* a$ _) |; s  ?
    3 v" g  b. u+ Q2 a

  • 3 s! _) P0 \/ ~; B8 V

    : |! c5 q& L  t( h: YDrxTdrx_= subs(DrxTdrx,{x,y},{0,0});
    5 S, d. j, y, x% U3 z
    ) w4 V/ e0 U6 Y" v& o6 f
  • 9 c9 X; c% d- `6 D' e; y

    ' o' V8 O3 q) [' R- ~DrxTrxk_= subs(DrxTrxk,{x,y},{0,0});
    % x& s4 ?" x7 f4 ^& T( M

    2 G6 N9 m7 @4 ]2 r6 e# g

  • 3 {8 r! C" h1 y
      y( _' m9 l: u* l5 _% t0 Y6 E
    xy      = zeros(2,1);
    ) R4 M* d3 @1 L0 \+ @& R
    % u; g/ j- v8 g

  • , Q$ D9 i! H3 t
    & }. H) ]2 K1 _# _! `
    for k = 1:15" t4 Y( A. }& x

    # V2 [+ _& r, U. U# K+ N0 v: ^

  • ) f) }: j$ C, T- t6 n
    * N1 O" i/ b& U# f8 ?! n
        v       = DrxTdrx_\DrxTrxk_;
    0 v$ p1 m  ?' Q

    7 d' M4 R9 f; s+ K0 G) V2 Q( G% ~
  • 3 C% ^5 x# \8 e& m& @& m- F) d2 w
    ! G& |' s, H/ Q" U( _+ F0 W
        xy      = xy+v;      
    7 R) ^. m6 c0 R/ j' b

    8 r4 \0 }3 T- E: C9 F8 @* G" G

  • / U: `% N7 c' r- i; k! L$ Q4 l
    ' |9 f2 }# B- S. A  B( ~8 r% z6 {- U
        DrxTdrx_= subs(DrxTdrx,{x,y},{xy(1),xy(2)});1 J; ~3 j9 f* T

      f5 D2 B6 E; A0 ~) i# B
  •   Y2 ?5 S6 R6 Z7 U, g
    * |0 P. |; S7 L* l
        DrxTrxk_= subs(DrxTrxk,{x,y},{xy(1),xy(2)});$ n7 j" E6 D! A0 ?  [: t1 F
    5 k- }' V1 U" `  g

  • 3 C8 ~" H1 _2 a6 R

    " v1 `' A' v$ o1 @. c5 ~, H" wend
    * Z* g' v8 R- N5 n

    . w: w; H3 e6 N8 g0 |

  • * g0 ?* O; @/ c, B6 Y& E0 H

    4 `5 i1 l2 U: {3 }( \1 [$ a0 Odisp('a with circular initial vector(0,0),Centers(0,1), (1,1), (0,?1)and all radii 1,the point is');
    5 V8 N* P8 c: A. l* ]& @  H. {

    4 l# I  C6 \; W6 |
  • 5 F; f" U9 {2 R! n8 W( M

    " S1 e" j0 A8 Bvpa(xy,6)6 x8 l7 G4 _) c( u

    , @5 b8 F$ \+ o2 `% a! \: D6 H
  • 5 _% ?; I0 G. g( U' b4 e+ R
    % z5 B& V3 s, W/ {) O! f
# s  r" I3 }- ^% E8 P4 K

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

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

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

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

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