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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
; D* q- z0 i# e% C; N0 {
牛顿法优化程序代码如下:
" j9 y6 x* C' j& |' d* i! @5 }function [x,minf] = minNewton(f,x0,eps)
9 a5 T/ W& G( v0 }5 g* b+ J8 Lformat long;0 f, R- A* s0 {& e7 X  ^% _
if nargin == 2
1 |8 q$ N) U! Q8 _# }    eps = 1.0e-6;
! M1 w0 l( A4 @* Rend
  d+ E+ E1 @6 A5 a' R4 O) f
. \4 F3 N- F5 F! E: edf = diff(f);
# `, r8 n% t6 i' q( t" k- Od2f = diff(df);4 U) R5 G" J' P# |+ ^" d* @9 L
k = 0;4 i! ~1 U9 @; M) y' ~2 t
tol = 1;
" t4 G; h5 o; p6 ^. N! g/ @3 ~/ o6 x0 n* b
while tol>eps
7 a: F% t, V0 Q1 t    dfx = subs(df,findsym(df),x0);: A  _6 f4 M, \3 Y# c5 ~7 i  P
    if diff(d2f) == 0+ Y: R' y7 Z7 I1 w& U' u
        d2fx = double(d2f);
( s( L! E+ Y0 O; _% D$ x    else
' [$ e: k' B% i$ M; x2 o# }% R2 K        d2fx = subs(d2f,findsym(d2f),x0);3 E! R( R) G/ O) ^
    end
- @1 e1 V, Z2 `. F    x1 = x0 - dfx/d2fx;# q9 }! b/ B! z) E- T  {* f* j9 W
    k = k + 1;3 |$ a. ]% J5 w4 A" y
    tol = abs(dfx);
7 }$ Z" t6 k& `' t" s8 L; \" y    x0 = x1;
! a- O8 o* B" Hend: k5 e& b  V) P/ @

8 K. [# j; g0 C8 d% }- B. X4 dx = x1;: ?- _+ c/ \7 Z% u4 K6 d# U9 A" f1 S
minf =  subs(f,findsym(f),x);0 Y/ T6 y. v* R2 O. u7 S
format short;. ?' F* Q2 j) H3 u" N
复制代码
) \7 h7 N7 n9 o8 E
& A- X7 x+ L4 ^主程序代码如下:9 P. i2 T1 `1 m, }* T" H: a. e
syms t
# V  N4 m1 R" i3 nf=t^2-log(t)-5
8 {; D1 b2 g# a% W- y. bx=minNewton(f,2)
( G" N9 [. A2 y) O' ~复制代码$ T* o: w( A& }! u
8 {7 W# V/ l+ D: v, D9 J
运行主程序后,得到的结果如下:
2 z2 {- m1 E; Z>> minNewton_ex
0 ^0 l0 |( T% @- H( n4 m5 {* Y5 p
f =7 ^# ?6 j- ]* _2 @
, s# [6 t& k* O9 T
t^2 - log(t) - 5% X1 f6 t$ D1 S# o, d- C

  ?1 g0 @% T1 |( R/ j
+ W: L* j+ m# B; Y2 Cx =  m1 q) ~5 j7 H" h

/ G- r; s8 t' F8 S2 L/ T+ f7273770929600966997213123375563852928/10286665498236842695784281251177659137& L7 H, Z. o, W5 |$ N+ f

) ~6 ?8 D4 b5 Q' B" `. {) Z. k1 ?4 y0 T/ V
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- f9 y* o- [) R8 A# o
    你可以用vpa(x)或者double(x)转成小数。

    0 q' G3 M$ }2 M% k" q嗯嗯,楼主可以试试这个方法。' v7 P% q+ Y3 P+ p

    该用户从未签到

    5#
    发表于 2020-5-7 15:28 | 只看该作者
    shelby 发表于 2020-5-7 13:49- |( U2 L# v+ d* E! u* e6 ]9 l
    你可以用vpa(x)或者double(x)转成小数。
    5 N5 l  j+ `" m! U

    $ J; n" \! L  Y& U
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-8-24 10:26 , Processed in 0.125000 second(s), 24 queries , Gzip On.

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

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

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