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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
2 K# g/ W0 ]% f; J
牛顿法优化程序代码如下:( u# C, g: T* b' S" i  m4 {3 e
function [x,minf] = minNewton(f,x0,eps)5 ?& L5 K+ G' u
format long;; p. v$ p) r6 Y) l5 k$ Z7 ?
if nargin == 2
' ]% l; Q+ ?9 u& X8 h    eps = 1.0e-6;7 ^, z* g6 c4 J% H. C$ [
end/ m# Q8 |- z. h5 c) {1 p

4 P1 r! W- K! `  m( c: u; y: xdf = diff(f);: U" a! O8 ^/ l4 P
d2f = diff(df);
  w- Y' d: @" E2 r2 n- h7 Gk = 0;
+ @+ [) Q7 `2 c4 d2 T1 N( U' Ptol = 1;
6 ?) d3 K7 _- l0 t% ?6 E, J3 u, B9 b9 Y2 o% E! c
while tol>eps" ^( l" _, W: }$ x& f: L' N, J
    dfx = subs(df,findsym(df),x0);
* b7 e2 E+ _2 d4 X3 r% E    if diff(d2f) == 0. y' t7 A: w3 ?
        d2fx = double(d2f);# d% e) @+ K' e. Q
    else2 s( ^2 o2 `6 E
        d2fx = subs(d2f,findsym(d2f),x0);& Y9 U  r  V+ x
    end
( |0 c/ b; [, e/ Y/ q# \6 m    x1 = x0 - dfx/d2fx;4 U0 I" t1 m& z+ G1 K! O5 n
    k = k + 1;
( A9 n1 N, f: E6 Z- ^# J    tol = abs(dfx);8 N. o. ?% }  }( J1 ^6 S% o$ \( V7 B: x" V
    x0 = x1;# ?  f4 Z7 x' S, ]3 a
end
4 X! G% t8 R, q4 N1 Z9 u! p7 O' z2 g! r
x = x1;
! L4 k6 q- f" Yminf =  subs(f,findsym(f),x);3 {% f$ |2 j4 K( B- C* h2 _2 d
format short;
: m  o6 s( j9 R6 S; F( G' [复制代码) j" W* R4 O  i7 k& c
' _$ s: ^3 w! x. X( [3 u
主程序代码如下:& w/ f: H: m+ y' `! B
syms t! S) t$ f" v& T9 M$ Z  e) h  V
f=t^2-log(t)-5" h. A3 I3 F9 b: S, D7 S
x=minNewton(f,2)' F7 D4 w( k9 j
复制代码. i1 u0 K- c5 V  V" U5 H# E6 Z1 l3 ~
8 m. I* d5 b8 E* ?7 v
运行主程序后,得到的结果如下:2 }3 w( I; ?" Y. P
>> minNewton_ex$ N1 \7 r+ y6 \, U! @; C0 J
0 x, n. z5 ~9 [9 S; E& t
f =
; o7 O& T) |. |5 {- i
$ q$ b: M1 ]$ U  @8 T# ^6 K" [t^2 - log(t) - 5
: s4 u5 D% A+ D" Y+ _" c' Q4 `% {+ c2 T" j$ P$ Q  l
) l& |' j4 H( p, k' e; D2 i! X$ n6 ?4 B
x =. v- R+ I* a6 B
) R, W  W+ b, E+ o
7273770929600966997213123375563852928/10286665498236842695784281251177659137. N& E$ F# j0 J# a7 R

& ^$ U- X* D4 w+ Z! N6 u" }4 ?$ {. V1 W6 R" t: K
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
    ! b( d4 q. A4 Z2 n4 R你可以用vpa(x)或者double(x)转成小数。
    , C0 S; E% Q: s$ O( \# Z: {3 K
    嗯嗯,楼主可以试试这个方法。: M5 W. p5 y+ _1 L

    该用户从未签到

    5#
    发表于 2020-5-7 15:28 | 只看该作者
    shelby 发表于 2020-5-7 13:49
    # D7 w0 L5 x* s+ E0 {( J你可以用vpa(x)或者double(x)转成小数。
    * Q$ O! n' k) R: c
    ) s! j; Z/ `3 C7 l# _
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

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

    EDA365公众号

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

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

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

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

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