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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
- ~- C' [$ N, w* X3 r& ~' s
牛顿法优化程序代码如下:
( y4 D- X+ F1 L. w9 j  c9 w3 }) gfunction [x,minf] = minNewton(f,x0,eps)
0 P: |, i! {0 A; M4 |8 vformat long;' N$ ?" ?5 [! j; X5 l4 m
if nargin == 23 v! ]" N# e3 |3 D# i& k4 V" @
    eps = 1.0e-6;
8 K/ L6 ^9 x* U( j1 |5 S% Gend, U, Z4 I, E; x- C3 v- W, q

% `4 V# n2 w! j/ n7 Z  @6 T1 jdf = diff(f);! E" n( Z  s. K; c' ]' q& a
d2f = diff(df);
( I1 J; k1 E& I: E2 wk = 0;
: h; k: O9 S! P0 |$ Itol = 1;
- u, }9 z* n# E& M" {; f$ Y6 r4 {0 @8 o  W: k, J) D
while tol>eps: K0 ~! a8 \1 ]5 w+ j# k0 j
    dfx = subs(df,findsym(df),x0);
# e' w- l! e2 h% k  O+ ?% k) B9 i    if diff(d2f) == 0
( N1 ?+ D. d3 Q! _& C; x4 W$ S3 d: N6 k        d2fx = double(d2f);0 K, x$ B5 C2 P8 h  c2 [, [. _
    else
" v+ h! J5 D2 Y+ Q8 R, u( Q2 `& o        d2fx = subs(d2f,findsym(d2f),x0);0 v& v1 D# ]1 P, r# B
    end
6 L: B, ?$ }, ?. N    x1 = x0 - dfx/d2fx;7 R$ |7 v6 I6 J! ^( O1 W
    k = k + 1;
$ v6 @6 @6 P- S+ F- M    tol = abs(dfx);
6 N! e5 L4 j8 ^8 u  z9 ]) W    x0 = x1;
9 `4 D9 V2 g- ]  R  z2 `end
/ s3 b. j, s2 n8 a: R' g: X* K, z7 z3 E6 v
x = x1;0 Z  x% M, V" C1 L
minf =  subs(f,findsym(f),x);8 m7 }& p" ^: h) [9 q( a
format short;# J/ g* s  z6 T& L
复制代码
2 q8 x8 W1 w% J& |/ W! q" s- P# P) s) R+ H, z% u  V
主程序代码如下:8 V" [' q) h5 k2 j& I- C- m
syms t
4 u; D% q7 F+ o; v( I( sf=t^2-log(t)-54 N% N& n; \+ s5 r
x=minNewton(f,2)
6 V1 o/ e4 A( U- z2 C复制代码
7 k6 m( ]$ Q4 ?: r4 e! r" i* ?7 X' I0 l# Z, n2 e6 t' z2 o, B9 Q8 c- b0 \
运行主程序后,得到的结果如下:
$ O2 _$ p4 g3 K9 |7 Z3 C8 w>> minNewton_ex
! V* V' M9 N' N/ m0 V* u) A8 L' \3 c# }& Q; u* g" I- F
f =
; L! R1 t4 t) N" \: p( C8 y3 e! V
' s) V4 g/ J1 H/ r8 Dt^2 - log(t) - 5+ e) F4 v2 p" d1 K4 |
6 c: l1 V5 A+ l3 m
% Q3 r3 Q, ?/ X% Y# D& p( q# `8 D1 \
x =1 u. {* ~4 h7 E3 ^; |9 \0 _

' c3 o0 _, P# s- Y7273770929600966997213123375563852928/10286665498236842695784281251177659137- H8 C2 w0 Y: g7 k  e6 ]( m/ c$ E
+ |- W8 {' `# l; O0 W2 w3 B. @

8 l1 U( `+ s0 J+ x% a7 Kx的值怎么会是这样,不应该是一个小数吗?

该用户从未签到

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
    ( f, j7 j" l* j5 o你可以用vpa(x)或者double(x)转成小数。

    , `0 j, {' f, ]7 C( b% l嗯嗯,楼主可以试试这个方法。* h- ~* Z# a2 G, p+ u* `

    该用户从未签到

    5#
    发表于 2020-5-7 15:28 | 只看该作者
    shelby 发表于 2020-5-7 13:49& j* k3 l6 U" Q  B- I5 `
    你可以用vpa(x)或者double(x)转成小数。

    ) ~* [" ^9 Q; v) Z5 T7 G5 M( E+ N6 q" ^6 s
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-11-6 09:40 , Processed in 0.156250 second(s), 27 queries , Gzip On.

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

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

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