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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x

$ _" a9 S# F8 D6 L4 v9 r牛顿法优化程序代码如下:% Y, A( x# E" ~9 l# ?" s
function [x,minf] = minNewton(f,x0,eps)
5 j& z9 A* }$ ~% _format long;
* E* L0 _7 g6 {- Z, zif nargin == 2: A6 T3 ~& q+ K/ w, M
    eps = 1.0e-6;8 O* \5 Y  ?( E/ L$ T
end1 ?5 w. F! d4 N

; g$ V% u1 v$ k2 J$ Udf = diff(f);
2 J, ?& @9 X! f; Sd2f = diff(df);& {2 F$ {& S% E) b
k = 0;
/ {4 D" {2 |% Gtol = 1;" }( H6 B# n% G6 B3 f5 [9 Q

6 k# v$ ?* F/ R. i# w2 Uwhile tol>eps
, L! c) g, |# s/ H- }    dfx = subs(df,findsym(df),x0);
) c* a' H4 {  A  X6 x    if diff(d2f) == 07 B) Z) y9 }% _
        d2fx = double(d2f);! R7 d$ F! r5 p' K+ H; F' V1 r
    else$ E! j/ q; b/ Z  O3 K# \- q+ c3 _
        d2fx = subs(d2f,findsym(d2f),x0);
- F7 b9 s/ {- J8 t2 I1 `$ Q# O    end* a( S0 D6 N7 m; o) B
    x1 = x0 - dfx/d2fx;7 A; t; ~0 z6 u  g0 ^& m% u9 J
    k = k + 1;. b$ V4 [8 ?2 k5 e' a6 F
    tol = abs(dfx);0 t) h9 N* C/ q8 a8 O
    x0 = x1;+ S/ B$ W1 h: B: k
end
$ Z2 a, A) D* j2 I0 z7 e% U. R6 h$ R8 W# V2 u! D( X
x = x1;1 P9 C/ L6 P2 Z8 T; `( C
minf =  subs(f,findsym(f),x);
1 o( D& v, S5 k: Z5 ^format short;
8 t# y9 t% U6 _  r+ b复制代码5 y( T3 V5 L% o( D1 A

) i$ T, F; x  Q  i! X  m主程序代码如下:- a  W8 h, g5 k
syms t% n7 ?5 x  \5 S
f=t^2-log(t)-5. W1 H2 w1 x* w3 x9 w. _2 r
x=minNewton(f,2)8 U2 o% w) V( ?3 }
复制代码& d, x; J! [& N4 J) O; [
( Q. m% t1 c; l( x
运行主程序后,得到的结果如下:( q  _; D5 a2 j, l0 k
>> minNewton_ex
; ?- F$ Z. P1 @2 L5 p; Z: G2 f! A- ~- o9 x. n" n% {. a
f =! y0 ], R5 B# ~3 [+ G! a0 ?% R: f
- h. o( t) T( @. v
t^2 - log(t) - 51 ?  x1 {1 J' Y+ P( a

& I1 w$ ]9 o; @8 l* ?8 [2 X/ ]) F8 P9 h7 @4 R6 z" ]. o
x =( h6 G0 C/ w9 p$ v8 {/ G
. t* a1 q# o! s8 L$ N) q
7273770929600966997213123375563852928/10286665498236842695784281251177659137
" y8 r; @1 o& X: m0 ?4 v5 j7 l% K/ {( }: |8 q( @6 s! Q

+ J+ h9 E7 ?8 p3 ^4 F3 `! X8 cx的值怎么会是这样,不应该是一个小数吗?

该用户从未签到

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! o9 C% V' m0 T, s2 J% [
    你可以用vpa(x)或者double(x)转成小数。
    ' \9 `# _- f7 \4 b
    嗯嗯,楼主可以试试这个方法。
    % c6 R; `4 J. P0 W9 E

    该用户从未签到

    5#
    发表于 2020-5-7 15:28 | 只看该作者
    shelby 发表于 2020-5-7 13:496 w3 c+ x- w( y
    你可以用vpa(x)或者double(x)转成小数。
    ) C' l  y# \% n

    9 J3 F! F  ~9 B
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-7-23 15:17 , Processed in 0.109375 second(s), 24 queries , Gzip On.

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

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

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