hrefspace

 找回密码
 立即注册
搜索
热搜: PHP PS 程序设计
查看: 675|回复: 3

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

[复制链接]

557

主题

557

帖子

1898

积分

版主

Rank: 7Rank: 7Rank: 7

积分
1898
发表于 2023-10-5 13:50:07 | 显示全部楼层 |阅读模式
设函数\(\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.\)

下面是编程图片:


附编程代码:
  1. \[Beta]=0.558r=0.144\[Eta]=0.675f[x_]:=1-r^xg[x_]:=1-(1-\[Beta])/f[\[Beta]] f[(x-1)/(\[Beta]-1) \[Beta]]p0[x_]:=((1-Floor[x/\[Beta]])\[Beta] f[x]/f[\[Beta]]+Floor[x/\[Beta]]g[x])^\[Eta]p[n_]:=p0[n/100]H[x_]:=(1/((3/2^17)x^10))(Hypergeometric2F1[-1/2,-1/2,1,x^2]-(1+(3x^2)/(10+\[Sqrt](4-3x^2))))W[x_,a_,b_,c_,d_,e_]:=(( 79/48+19.7356722060508967x)  x^2)/(1+a x^b(1-x^c)^d)^eU[a_,b_,c_,d_,e_]:=1/2 \!\(\*UnderoverscriptBox[\(\[Sum]\), \(k = 1\), \(99\)]\(\((1 + W[p[k], a, b, c, d, e] - H[p[k]])\)^2\)\)u[a_,b_,c_,d_,e_]:=-\!\(\*UnderoverscriptBox[\(\[Sum]\), \(k = 1\), \(99\)]\(\((1 + W[p[k], a, b, c, d, e] - H[p[k]])\) \*FractionBox[\(e\ \*SuperscriptBox[\((p[k])\), \(b\)]\ \*SuperscriptBox[\((1 - \*SuperscriptBox[\((p[k])\), \(c\)])\), \(d\)]\), \(1 + a\ \*SuperscriptBox[\((p[k])\), \(b\)]\ \*SuperscriptBox[\((1 - \*SuperscriptBox[\((p[k])\), \(c\)])\), \(d\)]\)] W[p[k], a, b, c, d, e]\)\)v[a_,b_,c_,d_,e_]:=-\!\(\*UnderoverscriptBox[\(\[Sum]\), \(k = 1\), \(99\)]\(\((1 + W[p[k], a, b, c, d, e] - H[p[k]])\)\ \*FractionBox[\(a\ e\ \*SuperscriptBox[\((p[k])\), \(b\)]\ \*SuperscriptBox[\((1 - \*SuperscriptBox[\((p[k])\), \(c\)])\), \(d\)]\ Log[p[k]]\), \(1 + a\ \*SuperscriptBox[\((p[k])\), \(b\)]\ \*SuperscriptBox[\((1 - \*SuperscriptBox[\((p[k])\), \(c\)])\), \(d\)]\)] W[p[k], a, b, c, d, e]\)\)w[a_,b_,c_,d_,e_]:=\!\(\*UnderoverscriptBox[\(\[Sum]\), \(k = 1\), \(99\)]\(\((1 + W[p[k], a, b, c, d, e] - H[p[k]])\)\ \*FractionBox[\(a\ d\ e\ \*SuperscriptBox[\((p[k])\), \(b + c\)]\ \*SuperscriptBox[\((1 - \*SuperscriptBox[\((p[k])\), \(c\)])\), \(\(-1\) + d\)]\ Log[p[k]]\), \(1 + a\ \*SuperscriptBox[\((p[k])\), \(b\)]\ \*SuperscriptBox[\((1 - \*SuperscriptBox[\((p[k])\), \(c\)])\), \(d\)]\)] W[p[k], a, b, c, d, e]\)\)h[a_,b_,c_,d_,e_]:=-\!\(\*UnderoverscriptBox[\(\[Sum]\), \(k = 1\), \(99\)]\(\((1 + W[p[k], a, b, c, d, e] - H[p[k]])\) \*FractionBox[\(a\ e\ \*SuperscriptBox[\((p[k])\), \(b\)]\ \*SuperscriptBox[\((1 - \*SuperscriptBox[\((p[k])\), \(c\)])\), \(d\)]\ Log[1 - \*SuperscriptBox[\((p[p[k]])\), \(c\)]]\), \(1 + a\ \*SuperscriptBox[\((p[k])\), \(b\)]\ \*SuperscriptBox[\((1 - \*SuperscriptBox[\((p[k])\), \(c\)])\), \(d\)]\)] W[p[k], a, b, c, d, e]\)\)i[a_,b_,c_,d_,e_]:=-\!\(\*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\ \*SuperscriptBox[\((p[k])\), \(b\)]\ \*SuperscriptBox[\((1 - \*SuperscriptBox[\((p[k])\), \(c\)])\), \(d\)]]\)\)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]]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])a=4.6b=0.457c=2.657d=0.95e=1.2t=0.0001U[a,b,c,d,e]>UU[t]a=a-t  u[a,b,c,d,e]b=b-t  v[a,b,c,d,e]c=c-t w[a,b,c,d,e]d=d-t h[a,b,c,d,e]e=e-t i[a,b,c,d,e]Maximize[{Abs[Er[x,a,b,c,d,e]],0<x<1},x]
复制代码

本帖子中包含更多资源

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

x
回复

使用道具 举报

0

主题

198

帖子

3

积分

新手上路

Rank: 1

积分
3
发表于 2023-10-5 13:50:14 | 显示全部楼层
上面编程的弊端:是手动循环迭代会出现庞大的数据群且无法求出主贴函数界的最小值,因为你不可能遍历整个庞大的数据群!

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

本帖子中包含更多资源

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

x
回复

使用道具 举报

0

主题

202

帖子

2

积分

新手上路

Rank: 1

积分
2
发表于 2023-10-5 13:51:05 | 显示全部楼层
那么问题来了,我们怎样接着主贴的编程继续进行下去求出函数界的最小值或者其它更好的方法。
回复

使用道具 举报

0

主题

190

帖子

2

积分

新手上路

Rank: 1

积分
2
发表于 2023-10-5 13:51:43 | 显示全部楼层
有老师说:
Mathematica 可以执行 while loop.  这意味着梯度方法自动优化参数的代码可以轻易编出求出误差函数界的最小值。
我不知道 while怎么编才能自动优化梯度参数且得到误差函数界的最小值。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|hrefspace

GMT+8, 2024-11-22 09:35 , Processed in 0.066356 second(s), 22 queries .

Powered by hrefspace X3.4 Licensed

Copyright © 2022, hrefspace.

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