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

Matlab之Gauss-Newton法

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
这一题就是已知初始点,然后求某一点到三个圆的距离的和的最小值。使用的就是大名鼎鼎的Gauss-Newton方法。这里要求雅克比行列式,由函数 jacobian可以求出。所以这就减少了许多不必要的麻烦。 * `; ]! V8 B3 [1 Z# W6 [. i
! u( F! s5 `" o& ]8 k

代码如下:         " B: D) D2 v* I" y6 O


2 ^1 W) \7 U& D
  • 6 Y: Z/ T4 C0 w6 g0 P- k

    " E; T  J2 [/ c& |) U' e; B* R% using Gauss-Newton method
    , T( f2 n% N; |. W. h% B$ g
    ( x2 H, l$ N+ n
  • 3 H/ h: \. \9 r

    2 U" w5 O* J$ e; m0 v! ]% initial point(0,0)9 q% l7 u/ `% x' E% l! @
    : g# B; X7 o, P3 v5 O
  • & [+ E6 ^+ h' \( Y" \! j
    $ S) r5 w* c- k9 j3 `4 p: j
    % 1、with circul point (0,1),(1,1),(0,-1)
    # U, y! N8 s9 t- v* T% K: C3 ^( q
    8 T, v% h6 X' J0 V# R  P

  • * a+ G' m* B# q" f4 s
    9 s4 F* u$ {+ e  b3 E/ V! ~9 \
    % 2、with circul point (-1,0),(1,1),(1,-1)
    0 d2 P/ @9 R3 {; M
    % [8 V! M- ^4 m5 g5 |- {9 |, v
  • 9 i2 ~3 r. g) D9 i0 F
      q7 O; Z; y+ o8 P  u, f" Q3 k3 k
    % its radius is 1
      Q* a+ H5 k. B; q$ V  K: Z* I
    , J, P# K$ z- g( s3 s* Q$ o
  • & u# N, k2 V4 o( Q

      A- f$ _' d" [# {5 O1 W* g9 u! o% output :the sum of distance is the minist3 H/ R, V5 z8 [) R1 S& m

    % f1 Z9 A9 o1 W7 ?# q

  • 3 q; Z( m! y# A9 ]( ]" ?
    / P& \) F8 A! @! G
    function page_237_1
    6 ~" h7 B% W# s# K- u- o. C) M
    6 G7 _- m1 n- r  X

  • 9 Z) Q' n+ s% g
    0 L0 r8 H5 `6 K6 q
    format long) h6 o7 w# Z) f3 Z$ T

    : q6 c2 J# s  N/ v: j+ Y

  •   O; }" h$ m/ B0 z4 @

    ; _- B$ @2 e, y/ v$ asyms x y
    $ G  A- K' s$ }5 T+ c8 ^
    4 E. N& C5 C' c- n$ F0 l+ K7 `

  • + t4 F' J' y5 w" p: l
    : }3 `0 W1 H: Y- B# P
    r1      = sqrt(x^2+(y-1)^2) - 1;
    2 h3 p5 {0 c# {& X0 h1 z9 d5 l

    % E4 V/ V; {% l; t' L' [8 R6 \

  • & w* T% G& S9 }5 x; `, O

    0 A+ F3 A% u+ @% Dr2      = sqrt((x-1)^2+(y-1)^2) - 1;) `8 N0 h2 i; _" B

    1 z* m% Q: D, x+ h/ [1 D

  • ) u9 k$ D' n7 ]: x; o
    7 F& l3 }$ C! U+ r  J
    r3      = sqrt(x^2+(y+1)^2) - 1;7 R# Y- ~$ U8 I; @( Q
    9 X( k" w2 h/ Y, E9 }

  • # T) p3 g3 k7 C1 g& y  M

    ! C0 d! S$ F' ?8 K' Z$ J! zrxk     = [r1;r2;r3];5 s1 M- l& f( b; D0 Z  S# r

    . t7 q, q9 X9 y5 E; Z. I: X; x
  • 0 ]0 N& v7 v. l. O$ W
    . U; U# [% ?3 E+ N5 i# O  I7 [
    Drx     = jacobian([r1;r2;r3]);
    $ u, d; Q2 w' o! A7 p
    5 m' ^% h: Q. H/ d; s, _  V2 X

  • 3 Q8 X3 e/ u- e6 {3 d7 w

    , v2 o6 [( c' X0 \1 q" I- bDrxT    = Drx';: _4 X4 l5 b. N! i: o
    5 ?0 U- @3 [/ F
  • # s' ?  l1 c3 E  n0 F6 N7 {* T
    * G- I0 d5 a: o: ]
    DrxTdrx = DrxT*Drx;                 %Dr(xk)TDr(xk)5 `4 V/ g  ~7 g. a- {9 X8 y" o

    2 i4 R  X, z; H. B

  • 0 R4 U' b3 r0 {0 Q

    0 d. \, K+ S6 e$ e% aDrxTrxk = -1*DrxT*rxk;              %Dr(xk)Tr(xk)3 ~% w2 f& p  u
    * F$ ^* d, K# l, {+ G
  • : u9 D' U- q: z2 X! ?

      Y8 D6 v6 ]! b- Q0 O2 I6 R%vk     = DrxTrxk\DrxTdrx;
    3 P! T3 B/ W. \8 H7 a: @
    : s" L5 ^2 q9 Z) j, Z

  • 7 _: j- a, T8 @6 {# f
    ( |2 v: L' _4 p
    DrxTdrx_= subs(DrxTdrx,{x,y},{0,0});
    5 C9 o: x7 h5 S! w0 K1 \  W4 A" D& z

    " P% t+ o2 S: f  o  j

  • 7 W8 c4 ?7 ?3 @

    % r9 O" t# }; u2 g/ t% vDrxTrxk_= subs(DrxTrxk,{x,y},{0,0});
    : c+ r0 Y5 [3 ^
      o7 `' i7 V) r
  • - B) G, I+ c# K, y5 z- B" ~. \
    5 o0 a4 ^  v( S  @8 l
    xy      = zeros(2,1);
    + [) S6 o; L! L9 w. ]4 ^- J( X

    4 \' O. N7 t$ S

  • ) d5 E% c$ F4 Z

    4 M/ b$ s5 h5 w* S: z# C' s( lfor k = 1:15% @# ^0 b8 _. @4 c5 d9 G

      S0 Q3 h% E. }/ g! [! z$ f/ m
  • - n2 U3 D& f" R; \

    , ~1 l7 @" F9 D( {' H- G    v       = DrxTdrx_\DrxTrxk_;8 C8 ^) z6 D" o# x4 ^2 W# t  [
    : |2 q1 @: y/ j% W/ c
  • " G, Z( h. |7 C# t: o2 D

    & W1 f- p3 A" S/ D0 r, M2 N" U- M% ]    xy      = xy+v;      
      w: u' _8 F7 ?/ u3 @7 K
    ! C/ ?* I/ J3 I3 ?% H. L7 a+ v

  • . R: S$ Y) Y' a. o9 k

    9 L5 _# E, S3 W! Q, ^    DrxTdrx_= subs(DrxTdrx,{x,y},{xy(1),xy(2)});
    - L: b- I0 I  X2 o/ S2 U
    , l7 Z  S8 s/ N2 {9 B0 x* H

  • 6 W$ g  P5 H/ O/ ~7 Y; u

    % B* J- T% h6 b+ u. O. }    DrxTrxk_= subs(DrxTrxk,{x,y},{xy(1),xy(2)});
    : O3 ]- Z9 W- A; O4 r

    % ^9 L+ m( h8 u, h+ w3 f' u) [

  • 2 u& O; M5 n' F4 T! I0 Z, y* F  z

    ! v, l: n# b  W7 C/ A/ M. lend+ j. U) t0 U1 p+ [

    ' f# a' ~5 J, D& Z& u7 l6 \

  • * F% y% R: N; \; k% C
    6 X8 G8 B7 _, \- p. a  L
    disp('a with circular initial vector(0,0),Centers(0,1), (1,1), (0,?1)and all radii 1,the point is');1 l& _  _: A+ g
    ! i: f& x- k9 D, Q/ x! \* A. D+ d
  • 8 ~5 I8 \; ^8 r" i

    4 b( g0 y% v1 F# g) N- yvpa(xy,6)0 n2 T: m' w2 E# W: G1 S6 ]+ H
    3 c% V; c9 t) K

  •   q) M2 W, I1 h3 @) K0 i* f7 [+ D% a) R/ ^( }% V
7 d6 O5 e/ M' t2 p. `2 V0 Z

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

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

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

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

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