数学中国

 找回密码
 注册
搜索
热搜: 活动 交友 discuz
查看: 364|回复: 20

(问题已解决,谢谢各位)函数逼近求最佳 a 值

[复制链接]
发表于 2025-7-26 21:52 | 显示全部楼层 |阅读模式
本帖最后由 永远 于 2025-8-8 15:12 编辑

已知:

\(\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^*} = \mathop {\arg \min }\limits_a \left( {{{\max }_{\lambda  \in (0,1)}}\left| {F(\lambda ,a) - G(\lambda )} \right|} \right)\)
 楼主| 发表于 2025-8-6 12:49 | 显示全部楼层
诚邀Ysu2008前辈指导
回复 支持 反对

使用道具 举报

发表于 2025-8-6 14:34 | 显示全部楼层
永远 发表于 2025-8-6 12:49
诚邀Ysu2008前辈指导

Mathematica 太贵了没用过,此题不会。

点评

好的,谢谢  发表于 2025-8-6 15:09
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-8-6 15:30 | 显示全部楼层
Ysu2008 发表于 2025-8-6 14:34
Mathematica 太贵了没用过,此题不会。

前辈用自己手中现有的软件和手段,不用Mathematica能不能求出来???
回复 支持 反对

使用道具 举报

发表于 2025-8-6 21:54 | 显示全部楼层
永远 发表于 2025-8-6 15:30
前辈用自己手中现有的软件和手段,不用Mathematica能不能求出来???

因为
(1)没看懂你的\(G\left( \lambda\right)\)是个啥函数;
(2)“最优a值”的最优条件没说明;
所以不会做。
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2025-8-7 00:58 | 显示全部楼层
本帖最后由 永远 于 2025-8-7 09:47 编辑
Ysu2008 发表于 2025-8-6 21:54
因为
(1)没看懂你的\(G\left( \lambda\right)\)是个啥函数;
(2)“最优a值”的最优条件没说明;


编辑上有点小问题,请先生再看1楼主贴
回复 支持 反对

使用道具 举报

发表于 2025-8-7 11:32 | 显示全部楼层
DeepSeek 的解答:




本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

发表于 2025-8-7 11:47 | 显示全部楼层
DeepSeek  给的完整 Mathematica 代码:

  1. (* 定义系数 c_n *)
  2. c[0] = 1.0;
  3. c[1] = (1/2)^2;
  4. c[n_] := (Binomial[2n-3, n-2] / (2^(2n-2) * n) )^2 /; n>=2;

  5. (* 定义 G(λ) 为截断级数,nmax=2000 *)
  6. G[λ_, nmax_] := Sum[c[n] * λ^(2n), {n, 0, nmax}];

  7. (* 设置截断项数和离散点集 *)
  8. nmax = 2000;
  9. lambdas = Join[Range[0.01, 0.99, 0.01], {0.999, 0.9999, 0.99999}];

  10. (* 预计算 G(λ) 在离散点上的值 *)
  11. gVals = Table[{λ, G[λ, nmax]}, {λ, lambdas}];

  12. (* 定义 F(λ,a) *)
  13. k = 22/(7*Pi) - 1;
  14. F[λ_, a_] := (1 + (3 λ^2)/(10 + Sqrt[4 - 3 λ^2])) * (1 + k * ((2λ)/(1+λ))^a);

  15. (* 定义最大绝对误差函数 *)
  16. maxError[a_?NumericQ] := Module[{errList},
  17.     errList = Table[
  18.         With[{λval = gVals[[i, 1]], gVal = gVals[[i, 2]]},
  19.             Abs[F[λval, a] - gVal]
  20.         ],
  21.         {i, Length[gVals]}];
  22.     Max[errList]
  23. ];

  24. (* 最小化最大绝对误差,搜索区间 a ∈ [17,19] *)
  25. result = NMinimize[{maxError[a], 17 <= a <= 19}, a, Method -> "NelderMead"];

  26. (* 输出结果:最优 a 和对应的最大误差 *)
  27. Print["最优 a = ", a /. Last[result]];
  28. Print["最大绝对误差 = ", First[result]];
复制代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-8-7 12:12 | 显示全部楼层
本帖最后由 永远 于 2025-8-7 12:14 编辑
Ysu2008 发表于 2025-8-7 11:47
DeepSeek  给的完整 Mathematica 代码:


运行上面的代码得:最优 a = 19.     最大绝对误差 = 0.000150882……

显然   绝对误差 = 0.000150882……不是最小的

随便举个例子,当a=45时,最大绝对误差 =0.00002261172748……都比 0.000150882……小。


回复 支持 反对

使用道具 举报

发表于 2025-8-7 12:54 | 显示全部楼层
永远 发表于 2025-8-7 12:12
运行上面的代码得:最优 a = 19.     最大绝对误差 = 0.000150882……

显然   绝对误差 = 0.0001508 ...

代码默认搜索区间是[17,19],你调整搜索区间试试。
回复 支持 反对

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|数学中国 ( 京ICP备05040119号 )

GMT+8, 2025-8-14 16:12 , Processed in 0.105219 second(s), 17 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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