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

x的值怎么会是这样,不应该是一个小数吗?

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x

; C, ~- }9 N  S7 n牛顿法优化程序代码如下:
! h3 C, a" J4 p8 k( Zfunction [x,minf] = minNewton(f,x0,eps)
7 ]* c, w9 _8 O) p+ @- X% {' dformat long;) ]2 ?2 X! W! a# S2 N+ G5 W! D  O; S8 V  @
if nargin == 2
$ P2 J' E' r, W    eps = 1.0e-6;: _( C) F! o# U5 i/ ?* o6 g' o
end" i0 \* I4 i, z- j" N# `

0 l6 {+ K7 p7 i: X$ i8 D/ |df = diff(f);2 L0 j# k% a5 y3 h5 i
d2f = diff(df);
' t& o* Q8 B$ wk = 0;
$ h6 d: U5 m& D; `tol = 1;3 \* ]$ I. e3 u: k# a& I3 {  T
1 z+ s2 G% M+ K
while tol>eps1 S/ v: x- `& \$ E9 z
    dfx = subs(df,findsym(df),x0);% Q" q* z  M7 v4 E7 Q
    if diff(d2f) == 0
6 e& H% ^' N' ?' T  R- Q; V        d2fx = double(d2f);
1 Z- b- s  w8 ]    else- Y: J4 t1 [& w! B3 ]
        d2fx = subs(d2f,findsym(d2f),x0);
& C& H% `3 F; k5 G3 G* p1 Y    end
( i/ g2 L# o, ]    x1 = x0 - dfx/d2fx;
! ^7 }, s* z% V6 d% N+ T, v" e4 ~! ^    k = k + 1;' O# U' W4 P* b1 @" {" v
    tol = abs(dfx);
2 V" l! C, T. Y; ^3 ]    x0 = x1;
5 @+ O' {0 K8 b; nend
4 @6 U+ x/ D% K$ G$ z( w
" L' V" \$ a9 {. `x = x1;' V; ]. a* ]/ y+ s
minf =  subs(f,findsym(f),x);
* n0 v) y9 D' \$ Wformat short;& z8 \- f3 d6 P0 z8 e+ ^
复制代码8 w% Q+ p6 t+ [0 j* C
6 l: q0 ?. B& Q/ ~1 ]
主程序代码如下:
; U# i- G) m. G6 ~/ Y; ?syms t
; K9 d3 M6 F- O8 `& df=t^2-log(t)-5/ A: H* C( h' D" u! D! `
x=minNewton(f,2)
3 H6 W" Y" I) z6 w/ `0 K9 a复制代码
4 O8 n* c! o0 m3 |
+ J4 o: f- U4 ?# I9 i- ~& o运行主程序后,得到的结果如下:" o7 w! L& K# T+ H- `
>> minNewton_ex
5 s5 m; o# h2 ?! m4 w! ^, b
, G: N  Z  o! j% j0 Mf =+ A! v: \: J& S4 z" E
( A4 v$ B& a& n8 r
t^2 - log(t) - 5) J8 @# Z3 [: D9 L
+ o/ B( A( |+ c. ~' F& l& Z

0 j& g1 v. _: l' U# \# Y$ }x =
9 h; t) t; Q; v/ M( a8 S; m
6 d3 d" e7 s" w* \  @0 K3 B7273770929600966997213123375563852928/10286665498236842695784281251177659137
* a7 F9 q$ W9 v% N* B! }- e  A) ?5 x
! h* z! f7 a" @0 T- V, u3 g# b+ j1 V2 k; R2 R4 C5 z* z
x的值怎么会是这样,不应该是一个小数吗?

该用户从未签到

2#
发表于 2020-5-7 13:47 | 只看该作者
默认求得是符号解

该用户从未签到

3#
发表于 2020-5-7 13:49 | 只看该作者
你可以用vpa(x)或者double(x)转成小数。

点评

嗯嗯,楼主可以试试这个方法。  详情 回复 发表于 2020-5-7 15:18
  • TA的每日心情
    开心
    2019-11-29 15:38
  • 签到天数: 4 天

    [LV.2]偶尔看看I

    4#
    发表于 2020-5-7 15:18 | 只看该作者
    shelby 发表于 2020-5-7 13:49; [# n1 L) y1 x
    你可以用vpa(x)或者double(x)转成小数。

    5 \- A0 ]$ m  h嗯嗯,楼主可以试试这个方法。
      M& S5 n& h( X: X1 U/ Q! X! d

    该用户从未签到

    5#
    发表于 2020-5-7 15:28 | 只看该作者
    shelby 发表于 2020-5-7 13:498 e# y5 n+ o* U7 ^
    你可以用vpa(x)或者double(x)转成小数。

    ! v" `; p# f* E* i' G, m2 g, r- z. G5 I
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

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

    EDA365公众号

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

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

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

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

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