找回密码
 欢迎注册
楼主: 笨笨

[求助] 用Mathematica编程求出最大误差函数值时如:10⁻⁸下的(x,a,b,c,d)

  [复制链接]
发表于 2023-8-31 22:50:04 | 显示全部楼层
用分段多项式作这种矫正拟合可以降低多项式的次数.
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2023-8-31 23:05:35 | 显示全部楼层
本帖最后由 笨笨 于 2023-8-31 23:11 编辑
elim 发表于 2023-8-31 22:50
用分段多项式作这种矫正拟合可以降低多项式的次数.


elim老师可否写出来让大家看看,也好让楼主学习一下,什么波粒子与辗转拟合法相结合到底啥意思,百思不得其解。

点评

又或者我楼上拟合函数再拟合一次看看,不知道效果如何。  发表于 2023-9-1 10:24
@Jack315不需要这么多段,感觉2段即可,你能构造的出来吗  发表于 2023-9-1 10:23
将 [0,1] 分成四段:[0, 0.9], [0.9, 0.99], [0.99, 0.999], [0.999, 1]  发表于 2023-9-1 04:24
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2023-9-1 10:19:43 | 显示全部楼层
这个是elim老师的原话



设拉马努金拟合误差函数为\(\psi_0,\;\psi_n\)是函数\(Er_{n-1}:=\psi_0-\cdots-\psi_{n-1}\)
的拟合, 使得 \(\frac{\left\lVert Er_k\right\rVert}{\left\lVert Er_{k-1}\right\rVert}\le10^{-2}{,}\left\lVert f\right\rVert:=\max\left| f\right|\left( \left( 0{,}1\right)\right)\)
则对某\(n\le 6\) 就有 \(\lVert Er\rVert \le 10^{-12}\).

以上方法可称为辗转拟合法.要一步找到较高精度的拟合函数族,想都别想.
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2023-9-2 06:14:44 | 显示全部楼层
笨笨 发表于 2023-9-1 10:19
这个是elim老师的原话

很同意高手的见解:对这个超几何函数,上述 n = 2 就可以了.但拟和函数不纯是初等函数.
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2023-9-2 09:46:10 | 显示全部楼层
笨笨 发表于 2023-8-28 11:02
原构造思想来源于楼上“elim”老师的贴子,楼主只是作小幅度改动。不过大致构造思想如下:

大致了解 LZ 构造 \(\varphi(x)\) 函数的思想。
只是构造出来的函数,级数展开的系数比较复杂,
求解 \(\varphi(x)\) 中的参数不容易,有一定难度……
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2023-9-2 10:29:37 | 显示全部楼层
本帖最后由 Jack315 于 2023-9-2 11:04 编辑

【分享拉马努金 (Ramanujan) 公式推导过程】

首先将超几何函数展开:
  1. Series[target[x], {x, 0, 10}]
复制代码

\[\begin{align}2F1(-\frac{1}{2},-\frac{1}{2},1,x^2)&=1+\frac{1}{4}x2+\frac{1}{64}x^4+\frac{1}{256}x^6+\frac{25}{16384}x^8+\frac{49}{65536}x^{10}+...\notag\\&=1+\frac{1}{2^2}x2+\frac{1}{2^6}x^4+\frac{1}{2^8}x^6+\frac{5^2}{2^{14}}x^8+\frac{7^2}{2^{16}}x^{10}+...\notag\end{align}\]

可以看出超几何函数是个偶函数,因而展开式中只含有偶次项:\(x^{2n},n=0,1,2,...\) 。
所以拟合函数应该满足的一个条件就是必须是偶函数。
只要级数展开式中含有奇次项,天花板就可能出现。

注意到:\(2F1(-\frac{1}{2},-\frac{1}{2},1,0^2)=1\),
设拟合函数为:
\[1+\frac{a x^2}{b+\sqrt{c+d x^2}}\]
级数展开后,取 \(x^2,x^4, x^6, x^8\) 的系数联立方程组,
即可求出拟合函数的参数 \((a,b,c)\) (方程组线性相关)。
化简后即得到拟合函数为:
\[1+\frac{3 x^2}{10+\sqrt{4-3 x^2}}\]

天才的灵感触摸到了,
LZ 方便分享下构造  \(\varphi(x)\) 更详细的过程吗?
想一探 LZ 灵感的光亮。

点评

注意到4个参数对应级数展开中4项,用其它初等函数结果类似。所以LZ构造的补偿函数有可取之处。LZ或许可直接构造拟合函数……开始学习前辈代码。  发表于 2023-9-2 12:40
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2023-9-2 10:47:47 | 显示全部楼层
本帖最后由 Jack315 于 2023-9-2 10:57 编辑

【补偿函数的构造】
画出误差函数的曲线:
  1. Plot[target[x] - ramanujan[x], {x, 0, 1},
  2. GridLines -> Automatic,
  3. Frame -> True,
  4. PlotLabel -> "剩余误差"]
复制代码

这个曲线的形状立刻让人联想到指数函数:
  1. Plot[{2^x, 3^x, 4^x}, {x, -1, 1},
  2. GridLines -> Automatic,
  3. PlotLegends -> "Expressions",
  4. Frame -> True,
  5. PlotLabel -> "指数函数 a>1"]
复制代码

另一个具有类似形状的函数是区间 \(\big(-\frac{\pi}{2}, \frac{\pi}{2}\big)\) 上的正割函数:
  1. Plot[Sec[x], {x, -2 \[Pi], 2 \[Pi]},
  2. ExclusionsStyle -> Dashing[Small],
  3. Ticks -> {Table[i/2 \[Pi], {i, -4, 4}], {Automatic}},
  4. GridLines -> Automatic,
  5. PlotLegends -> "Expressions",
  6. PlotLabel -> "三角函数 Sec(x)"]
复制代码

感觉构造拉马努金公式补偿函数应以这两个函数为基础
而且补偿函数应该是偶函数
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2023-9-2 10:47:47 | 显示全部楼层
本帖最后由 Jack315 于 2023-9-2 11:05 编辑

出了两个一样的……删除。
若版主能帮忙把这楼删掉就更好了。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2023-9-2 20:45:54 | 显示全部楼层
Jack315 发表于 2023-9-2 10:29
【分享拉马努金 (Ramanujan) 公式推导过程】

首先将超几何函数展开:

QQ截图20230902204445.jpg
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2023-9-2 20:51:33 | 显示全部楼层
本帖最后由 笨笨 于 2023-9-2 20:54 编辑
Jack315 发表于 2023-9-2 10:47
【补偿函数的构造】
画出误差函数的曲线:

所拟合函数的定义域是0<x<1,而正割函数在\(\left( 0,\frac{\pi}{2}\right)\)图像确实相仿,但它们定义域不同,还要满足我楼上刚发图片上的要求,想想怎么转化之间关系。

点评

将正割函数进行水平和 / 或垂直方向的伸缩应该就行了。  发表于 2023-9-2 21:58
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

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

GMT+8, 2024-5-10 22:17 , Processed in 0.046860 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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