笨笨 发表于 2025-8-1 14:58:14

函数逼近求最佳 a 值,有人感兴趣吗?

本帖最后由 笨笨 于 2025-8-1 23:28 编辑

已知:

\(\Large\begin{array}{l}
G\left( \lambda\right) =F( - \frac{1}{2}, - \frac{1}{2},1,{\lambda ^2})\\
F\left( \lambda\right) = \left( {1 + \frac{{3{\lambda ^2}}}{{10 + \sqrt {4 - 3{\lambda ^2}} }}} \right)\left( {1 + \left( {\frac{{22}}{{7\pi }} - 1} \right){{\left( {\frac{{2\lambda }}{{1 + \lambda }}} \right)}^a}} \right),0 < \lambda< 1
\end{array}\)

采用\(F\left( \lambda\right)\)逼近\(G\left( \lambda\right)\)求最佳a值

如果用 Mathematica 软件怎么编程?

笨笨 发表于 2025-8-1 15:00:39

本帖最后由 笨笨 于 2025-8-1 15:04 编辑

感觉\(\Large a\)应该有个极限值,使得2个函数十分接近。

笨笨 发表于 2025-8-3 21:37:10

本帖最后由 笨笨 于 2025-8-3 21:46 编辑

\(\Large{G\left( \lambda\right) = F( - \frac{1}{2}, - \frac{1}{2},1,{\lambda ^2})}\)

\(\Large F\left( {\lambda ,a} \right) = \left( {1 + \frac{{3{\lambda ^2}}}{{10 + \sqrt {4 - 3{\lambda ^2}} }}} \right)\left( {1 + \left( {\frac{{22}}{{7\pi }} - 1} \right){{\left( {\frac{{2\lambda }}{{1 + \lambda }}} \right)}^a}} \right),0 < \lambda< 1\)

选择\(\Large a\)使得在整个区间 (0,1) 上的最大绝对误差最小。

即:\(\Large {a^*} = \mathop {\arg \min }\limits_a \left( {{{\max }_{\lambda\in (0,1)}}\left| {F(\lambda ,a) - G(\lambda )} \right|} \right)\)

用Mathematica 软件编程如何实现,求得 \(\Large a\) 值。


笨笨 发表于 2025-8-3 21:45:38

最小化最大误差问题有人会吗?

笨笨 发表于 2025-8-7 01:01:24

对主贴叙述上的更新:

已知:

\(\Large G\left( \lambda\right) = \sum\limits_{n = 0}^\infty{{{\left( {\frac{{\left( {2n - 3} \right)!!}}{{\left( {2n} \right)!!}}} \right)}^2}} {\lambda ^{2n}}\)

\(\Large {F\left( {\lambda ,a} \right) = \left( {1 + \frac{{3{\lambda ^2}}}{{10 + \sqrt {4 - 3{\lambda ^2}} }}} \right)\left( {1 + \left( {\frac{{22}}{{7\pi }} - 1} \right){{\left( {\frac{{2\lambda }}{{1 + \lambda }}} \right)}^a}} \right),0 < \lambda< 1}\)

采用\({F\left( {\lambda ,a} \right)}\)逼近\(G\left( \lambda\right)\)求最佳a值

如果用 Mathematica 软件怎么编程?

我们希望:选择 \( a \) 使得在整个区间 (0,1) 上的最大绝对误差最小。

即:

\(\Large a^* = \arg\min_{a} \left( \max_{\lambda \in (0,1)} \left|F(\lambda, a) - G(\lambda)\right| \right)\)

mathe 发表于 2025-8-7 15:55:18

对于函数\(T(x,a)\)如果我们要求 \( \min_a (\max_x |T(x,a)|)\)
那么我们只需要分析 \( \min_a (\max_x T(x,a)), \min_a (\min_x T(x,a)), \max_a (\max_x T(x,a)), \max_a (\min_x T(x,a))\) 四者之一。
本质上它们都要求先将a看成常数,求T(x,a)的极值,然后再对于上面这个极值情况,选择a, 再取极值。
其中第一步,相当于在边界或其中第一步,相当于在x的边界条件或者约束条件\(\frac{\partial T(x,a) }{\partial x}=0\)下看成a的隐函数(x被消元),求关于a的极值条件。
其中x边界条件,相当于我们分别求函数\(T(0,a)\),\(T(1,a)\)的关于a的极值。
在约束条件\(\frac{\partial T(x,a) }{\partial x}=0\),求极值,那么使用拉格朗日极值法,可以求
\(S(x,a)=T(x,a)-h\frac{\partial T(x,a) }{\partial x}\)的极值,我们分别让S对x和a求导,得到
\(\begin{cases}\frac{\partial T(x,a)}{\partial x}-h\frac{\partial^2 T(x,a)}{\partial x^2}=0\\ \frac{\partial T(x,a)}{\partial a}-h\frac{\partial^2 T(x,a)}{\partial x\partial a}=0\end{cases}\)
再加上约束条件\(\frac{\partial T(x,a) }{\partial x}=0\), 我们需要要求
\(\begin{cases}\frac{\partial T(x,a) }{\partial x}=0\\\frac{\partial T(x,a)}{\partial x}-h\frac{\partial^2 T(x,a)}{\partial x^2}=0\\ \frac{\partial T(x,a)}{\partial a}-h\frac{\partial^2 T(x,a)}{\partial x\partial a}=0\end{cases}\)
于是我们解得,要么
\(\begin{cases}\frac{\partial T(x,a)}{\partial x}=0\\\frac{\partial^2 T(x,a)}{\partial x^2}=0\end{cases}\)
要么
\(\begin{cases}\frac{\partial T(x,a)}{\partial x}=0\\ \frac{\partial T(x,a)}{\partial a}=0\end{cases}\)

笨笨 发表于 2025-8-7 16:18:04

mathe 发表于 2025-8-7 15:55
对于函数\(T(x,a)\)如果我们要求 \( \min_a (\max_x |T(x,a)|)\)
那么我们只需要分析 \( \min_a (\max_x T( ...

请问前辈用Mathematica 软件编程如何实现,求得 𝑎值。

王守恩 发表于 2025-8-8 12:04:22

\(\D\sum_{n=0}^{\infty}\bigg(\frac{(2 n - 3)!!}{(2 n)!!}\bigg)^2=\frac{4}{\pi}\)

Sum[((2 n - 3)!!/(2 n)!!)^2, {n, 0, Infinity}]
4/Pi

Table, {a, 3}]
{Hypergeometric2F1[-(1/2), -(1/2), 1, 2/3], Hypergeometric2F1[-(1/2), -(1/2), 1, 3/4], Hypergeometric2F1[-(1/2), -(1/2), 1, 4/5]}

Table[(Sum[(2 n - 3)!!/((2 n)!! k^n), {n, 0, Infinity}])^2, {k, 2, 23}]
{1/2, 2/3, 3/4, 4/5, 5/6, 6/7, 7/8, 8/9, 9/10, 10/11, 11/12, 12/13, 13/14, 14/15, 15/16, 16/17, 17/18, 18/19, 19/20, 20/21, 21/22, 22/23}

Table[(Sum[(2 n - 1)!!/((2 n)!! k^n), {n, 0, Infinity}])^2, {k, 2, 25}]
{2, 3/2, 4/3, 5/4, 6/5, 7/6, 8/7, 9/8, 10/9, 11/10, 12/11, 13/12, 14/13, 15/14, 16/15, 17/16, 18/17, 19/18, 20/19, 21/20, 22/21, 23/22, 24/23, 25/24}

Table[(Sum[(2 n - 3)!!/((2 n)!! ((k + 1)/k)^n), {n, 0, Infinity}])^2, {k, 29}]
{1/2, 1/3, 1/4, 1/5, 1/6, 1/7, 1/8, 1/9, 1/10, 1/11, 1/12, 1/13, 1/14, 1/15, 1/16, 1/17, 1/18, 1/19, 1/20, 1/21, 1/22, 1/23, 1/24, 1/25, 1/26, 1/27, 1/28, 1/29, 1/30}

Table[(Sum[(2 n - 1)!!/((2 n)!! ((k + 1)/k)^n), {n, 0, Infinity}])^2, {k, 49}]
{2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50}

笨笨 发表于 2025-8-15 19:58:23

主贴问题已解决:

苦战了几个夜晚,终于锁定最佳 a 值,用Mathematica 编程得到的值与自己先前预测值完美一致!!!

最佳a=46.4483021270782……

最小化最大误差值为: 0.00001872118423551505……

最优 \(\lambda\) 值为: 0.898055159455627……

笨笨 发表于 6 天前

代码运行时有点卡,不知道怎么加速优化:

(*目标函数 G(\)*)
G[\_] := HypergeometricPFQ[{-1/2, -1/2}, {1}, \^2];

(*逼近函数 F(\,a)*)
F[\_,
   a_] := (1 + (3 \^2)/(10 +
        Sqrt^2]))*(1 + (22/(7 \) -
        1) (2 \/(1 + \))^a);

(*定义绝对误差函数*)
error[\_, a_] := Abs, a] - G[\]];

(*计算给定 a 值时的最大绝对误差*)
maxError :=
  NMaximize[{error[\, a], 0 < \ < 1}, \][];

(*寻找最优 a 值*)
optimalA =
  NMinimize[{maxError, a > 0}, a,
   Method -> {"SimulatedAnnealing", "PerturbationScale" -> 3},
   PrecisionGoal -> 3];

(*输出最优 a 值*)
aOpt = a /. optimalA[];
\Opt = \ /.
   Last, aOpt],
      0 < \ < 1}, \]];
Print["最优 a 值为: ", NumberForm];
Print["最大误差为: ", NumberForm], 20]];
Print["最优 \ 值为: ", NumberForm[\Opt, 20]];

(*误差图像*)
Plot, aOpt], {\, 0, 1}, PlotRange -> All,
PlotLabel -> "最大误差 = " <> ToString], 10]]]
页: [1] 2
查看完整版本: 函数逼近求最佳 a 值,有人感兴趣吗?