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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
6 F  P  g0 T+ a) y5 j, ?& K
牛顿法优化程序代码如下:" m4 i/ D3 y1 }0 N- k7 G
function [x,minf] = minNewton(f,x0,eps)
; u8 N" E- ~1 `$ Q$ A- E/ f0 bformat long;' F; F6 p, Z  n# [0 d
if nargin == 2
' d% ]* o2 Y5 l& y* U    eps = 1.0e-6;& M, D; u1 J+ X5 Z  Y
end' {& a, L" t" ~# K

! u/ y0 T& B* J) sdf = diff(f);
" ]' c* B" a! a7 y- C. Od2f = diff(df);' `: x; M) W" k* A
k = 0;( V! z$ }* U* E4 ?/ r
tol = 1;
+ t& T! H4 ^7 ?% K8 X$ V
, Q! U: @% V7 J1 `# ^while tol>eps
  O# G6 r' Q2 ~6 b1 r* J9 U    dfx = subs(df,findsym(df),x0);+ Y2 X0 G9 _6 N$ k- Q4 X
    if diff(d2f) == 0
% @/ l- q' q( ~; y0 L7 n        d2fx = double(d2f);+ \! f) K! W5 u  t2 \
    else" ?+ X* ?3 K. O% p' |0 I
        d2fx = subs(d2f,findsym(d2f),x0);4 e; @0 M8 S' D9 V
    end3 [# a5 l/ @: m+ L% H
    x1 = x0 - dfx/d2fx;
6 Y9 [/ ^; p/ n  R* H5 L    k = k + 1;
' u- Y0 N. e% J- U9 L    tol = abs(dfx);0 O( F9 V* }" P2 s  S) U3 o, [
    x0 = x1;8 H# n/ K" [3 O
end
. `+ _& t- R! t/ ]5 S( l1 e/ A7 O
6 ~7 A  R8 y. i9 [x = x1;- Q+ M, v3 E4 |. C6 g* [0 z3 ^
minf =  subs(f,findsym(f),x);
: r/ [& g& V2 N( A3 A$ g5 Xformat short;
# d  @( y& @& s( a  F; ?* Q4 E7 Y复制代码
4 m7 f, {+ N$ F( v( x2 b6 _7 h' S* k% N0 u5 k! D
主程序代码如下:- q) q  T# P; S" A) j
syms t
5 X- }7 v* t: K& |f=t^2-log(t)-5, _5 S; \7 H$ l7 s3 w
x=minNewton(f,2)
2 m, j+ r; `4 v' e复制代码2 P0 _0 s# u' q! Y) v9 P& R# r

" _! u5 `, b; j8 h# V运行主程序后,得到的结果如下:# o. Q, q6 V+ ^+ b
>> minNewton_ex
( b% A- |* l% s+ m3 V/ e+ H0 G# F+ ]
f =
! `; F4 `+ e1 f! N$ r% p% B
; H0 e/ q# i; ?8 D6 _- w- xt^2 - log(t) - 58 O/ P) q, d8 H

# t) j. S% ^! `2 _+ M( y2 s) L
/ Q: {: i2 O, \x =( h! L' L* i$ i6 P2 O

' e! n/ b- S5 ~& r6 P& [) N/ P7273770929600966997213123375563852928/102866654982368426957842812511776591376 H! ^9 X( j( u5 h
% j& O3 @2 X* m, i1 O9 J) P
+ Z0 @# A( C, H
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
    % U$ \. K7 e4 H0 a0 m6 s4 t5 u你可以用vpa(x)或者double(x)转成小数。

    ) O0 y& S; X! D9 ?; m! A嗯嗯,楼主可以试试这个方法。
    . l' h+ w+ @/ M. T1 U4 q6 o

    该用户从未签到

    5#
    发表于 2020-5-7 15:28 | 只看该作者
    shelby 发表于 2020-5-7 13:49; c9 \* _& \5 _" ]8 n$ g
    你可以用vpa(x)或者double(x)转成小数。
    4 M( t- Q# A+ m
    . U" V" w1 Q9 s; G- x1 \" Z9 v
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-11-24 07:15 , Processed in 0.156250 second(s), 24 queries , Gzip On.

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

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

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