查看: 290|回复: 2|关注: 0

[已解决] 利用牛顿法进行无约束一维极值优化,为什么返回的是一长串数字的解??

[复制链接]

新手

25 麦片

财富积分


050


10

主题

27

帖子

0

最佳答案
牛顿法优化程序代码如下:
  1. function [x,minf] = minNewton(f,x0,eps)
  2. format long;
  3. if nargin == 2
  4.     eps = 1.0e-6;
  5. end

  6. df = diff(f);
  7. d2f = diff(df);
  8. k = 0;
  9. tol = 1;

  10. while tol>eps
  11.     dfx = subs(df,findsym(df),x0);
  12.     if diff(d2f) == 0
  13.         d2fx = double(d2f);
  14.     else
  15.         d2fx = subs(d2f,findsym(d2f),x0);
  16.     end
  17.     x1 = x0 - dfx/d2fx;
  18.     k = k + 1;
  19.     tol = abs(dfx);
  20.     x0 = x1;
  21. end

  22. x = x1;
  23. minf =  subs(f,findsym(f),x);
  24. format short;
复制代码

主程序代码如下:
  1. syms t
  2. f=t^2-log(t)-5
  3. x=minNewton(f,2)
复制代码

运行主程序后,得到的结果如下:
>> minNewton_ex

f =

t^2 - log(t) - 5


x =

7273770929600966997213123375563852928/10286665498236842695784281251177659137



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

论坛优秀回答者

5

主题

1500

帖子

421

最佳答案
  • 关注者: 122
发表于 2019-6-9 20:18:32 | 显示全部楼层 |此回复为最佳答案
默认求得是符号解
用vpa(x)或者double(x)转成小数

新手

25 麦片

财富积分


050


10

主题

27

帖子

0

最佳答案
 楼主| 发表于 2019-6-10 21:03:13 | 显示全部楼层
谢谢!楼上简直太帅了,稀帅的帅!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /4 下一条

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