找回密码
 欢迎注册
查看: 2097|回复: 3

[求助] 用梯度下降法求函数界的最小值

[复制链接]
发表于 2023-8-11 21:28:42 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
设函数\(\small f\left( x,a,b,c,d,e \right) = \text{Hypergeometric2F1}\left[ { - 1/2, - 1/2,1,{x^2}} \right] - \left( {1 + \frac{{3{x^2}}}{{10 + \sqrt {4 - 3{x^2}} }}} \right) - \frac{3}{{{2^{17}}}}{x^{10}}\left( {1 + \frac{{\left( {\frac{{79}}{{48}} + 19.7356722060508967x} \right)x^2}}{{\left( {1 + ax^b\left( {1 - x^c} \right)^d} \right)^e}}} \right)\)
其中,\(a、b、c、d、e \in R\),\(0 < x < 1\)。求\(M = \mathop {\mathop {\min }\limits_{a,b,c,d,e} }\limits_{0 < x < 1} \;\left\{ {f\left( x \right)} \right\}\)及其此时的各参数a,b,c,d,e值。

给定一组初始值:\(\left\{ {\begin{array}{*{20}{c}}
{\begin{array}{*{20}{c}}
{{ \rm{a = 4}}{\rm{.6}}}\\
{{\rm{b = 0}}{\rm{.457}}}
\end{array}}\\
{{\rm{c = 2}}{\rm{.657}}}\\
{\begin{array}{*{20}{c}}
{{\rm{d = 0}}{\rm{.95}}}\\
{{\rm{e = 1}}{\rm{.2}}}
\end{array}}
\end{array}} \right.\)

下面是编程图片:

130655u27x8zwcs9kuzune.jpg
附编程代码:
  1. \[Beta]=0.558
  2. r=0.144
  3. \[Eta]=0.675
  4. f[x_]:=1-r^x
  5. g[x_]:=1-(1-\[Beta])/f[\[Beta]] f[(x-1)/(\[Beta]-1) \[Beta]]
  6. p0[x_]:=((1-Floor[x/\[Beta]])\[Beta] f[x]/f[\[Beta]]+Floor[x/\[Beta]]g[x])^\[Eta]
  7. p[n_]:=p0[n/100]
  8. H[x_]:=(1/((3/2^17)x^10))(Hypergeometric2F1[-1/2,-1/2,1,x^2]-(1+(3x^2)/(10+\[Sqrt](4-3x^2))))
  9. W[x_,a_,b_,c_,d_,e_]:=(( 79/48+19.7356722060508967x)  x^2)/(1+a x^b(1-x^c)^d)^e
  10. U[a_,b_,c_,d_,e_]:=1/2 \!\(
  11. \*UnderoverscriptBox[\(\[Sum]\), \(k = 1\), \(99\)]\(\((1 + W[p[k], a, b, c, d, e] - H[p[k]])\)^2\)\)
  12. u[a_,b_,c_,d_,e_]:=-\!\(
  13. \*UnderoverscriptBox[\(\[Sum]\), \(k = 1\), \(99\)]\(\((1 + W[p[k], a, b, c, d, e] - H[p[k]])\)
  14. \*FractionBox[\(e\
  15. \*SuperscriptBox[\((p[k])\), \(b\)]\
  16. \*SuperscriptBox[\((1 -
  17. \*SuperscriptBox[\((p[k])\), \(c\)])\), \(d\)]\), \(1 + a\
  18. \*SuperscriptBox[\((p[k])\), \(b\)]\
  19. \*SuperscriptBox[\((1 -
  20. \*SuperscriptBox[\((p[k])\), \(c\)])\), \(d\)]\)] W[p[k], a, b, c, d, e]\)\)
  21. v[a_,b_,c_,d_,e_]:=-\!\(
  22. \*UnderoverscriptBox[\(\[Sum]\), \(k = 1\), \(99\)]\(\((1 + W[p[k], a, b, c, d, e] - H[p[k]])\)\
  23. \*FractionBox[\(a\ e\
  24. \*SuperscriptBox[\((p[k])\), \(b\)]\
  25. \*SuperscriptBox[\((1 -
  26. \*SuperscriptBox[\((p[k])\), \(c\)])\), \(d\)]\ Log[p[k]]\), \(1 + a\
  27. \*SuperscriptBox[\((p[k])\), \(b\)]\
  28. \*SuperscriptBox[\((1 -
  29. \*SuperscriptBox[\((p[k])\), \(c\)])\), \(d\)]\)] W[p[k], a, b, c, d, e]\)\)
  30. w[a_,b_,c_,d_,e_]:=\!\(
  31. \*UnderoverscriptBox[\(\[Sum]\), \(k = 1\), \(99\)]\(\((1 + W[p[k], a, b, c, d, e] - H[p[k]])\)\
  32. \*FractionBox[\(a\ d\ e\
  33. \*SuperscriptBox[\((p[k])\), \(b + c\)]\
  34. \*SuperscriptBox[\((1 -
  35. \*SuperscriptBox[\((p[k])\), \(c\)])\), \(\(-1\) + d\)]\ Log[p[k]]\), \(1 + a\
  36. \*SuperscriptBox[\((p[k])\), \(b\)]\
  37. \*SuperscriptBox[\((1 -
  38. \*SuperscriptBox[\((p[k])\), \(c\)])\), \(d\)]\)] W[p[k], a, b, c, d, e]\)\)
  39. h[a_,b_,c_,d_,e_]:=-\!\(
  40. \*UnderoverscriptBox[\(\[Sum]\), \(k = 1\), \(99\)]\(\((1 + W[p[k], a, b, c, d, e] - H[p[k]])\)
  41. \*FractionBox[\(a\ e\
  42. \*SuperscriptBox[\((p[k])\), \(b\)]\
  43. \*SuperscriptBox[\((1 -
  44. \*SuperscriptBox[\((p[k])\), \(c\)])\), \(d\)]\ Log[1 -
  45. \*SuperscriptBox[\((p[p[k]])\), \(c\)]]\), \(1 + a\
  46. \*SuperscriptBox[\((p[k])\), \(b\)]\
  47. \*SuperscriptBox[\((1 -
  48. \*SuperscriptBox[\((p[k])\), \(c\)])\), \(d\)]\)] W[p[k], a, b, c, d, e]\)\)
  49. i[a_,b_,c_,d_,e_]:=-\!\(
  50. \*UnderoverscriptBox[\(\[Sum]\), \(k = 1\), \(99\)]\(\((1 + W[p[k], a, b, c, d, e] - H[p[k]])\) W[p[k], a, b, c, d, e] Log[1 + a\
  51. \*SuperscriptBox[\((p[k])\), \(b\)]\
  52. \*SuperscriptBox[\((1 -
  53. \*SuperscriptBox[\((p[k])\), \(c\)])\), \(d\)]]\)\)
  54. UU[t_]:=U[a-t  u[a,b,c,d,e],b-t  v[a,b,c,d,e],c-t w[a,b,c,d,e],d-t h[a,b,c,d,e],e-t i[a,b,c,d,e]]
  55. Er[x_,a_,b_,c_,d_,e_]:=Hypergeometric2F1[-1/2,-1/2,1,x^2]-(1+(3x^2)/(10+Sqrt[4-3x^2]))-(3/2^17)x^10 (1+W[x,a,b,c,d,e])
  56. a=4.6
  57. b=0.457
  58. c=2.657
  59. d=0.95
  60. e=1.2
  61. t=0.0001
  62. U[a,b,c,d,e]>UU[t]
  63. a=a-t  u[a,b,c,d,e]
  64. b=b-t  v[a,b,c,d,e]
  65. c=c-t w[a,b,c,d,e]
  66. d=d-t h[a,b,c,d,e]
  67. e=e-t i[a,b,c,d,e]
  68. Maximize[{Abs[Er[x,a,b,c,d,e]],0<x<1},x]
复制代码
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2023-8-11 21:29:34 | 显示全部楼层
上面编程的弊端:是手动循环迭代会出现庞大的数据群且无法求出主贴函数界的最小值,因为你不可能遍历整个庞大的数据群!

那么问题来了,我们怎样接着主贴的编程继续进行下去求出函数界的最小值。

132357mddae8aadid2upg8.jpg
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2023-8-11 21:30:37 | 显示全部楼层
本帖最后由 笨笨 于 2023-8-11 21:41 编辑

那么问题来了,我们怎样接着主贴的编程继续进行下去求出函数界的最小值或者其它更好的方法。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2023-8-17 06:35:19 | 显示全部楼层
有老师说:
Mathematica 可以执行 while loop.  这意味着梯度方法自动优化参数的代码可以轻易编出求出误差函数界的最小值。
我不知道 while怎么编才能自动优化梯度参数且得到误差函数界的最小值。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

小黑屋|手机版|数学研发网 ( 苏ICP备07505100号 )

GMT+8, 2024-11-21 20:50 , Processed in 0.028746 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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