| 查看: 2876 | 回复: 5 | ||
[交流]
如何用最小二乘法拟合y=A1*exp(-x/t1)+A2*exp(-x/t2)+B,该函数的反函数如何求解? 已有3人参与
|
独孤神宇
版主 (知名作家)
- 应助: 490 (硕士)
- 贵宾: 0.008
- 金币: 31014.8
- 散金: 802
- 红花: 122
- 沙发: 1
- 帖子: 5600
- 在线: 855.5小时
- 虫号: 3522474
- 注册: 2014-11-06
- 性别: GG
- 专业: 机械动力学
- 管辖: 计算模拟

2楼2020-06-14 09:18:46
3楼2020-06-14 11:50:59
独孤神宇
版主 (知名作家)
- 应助: 490 (硕士)
- 贵宾: 0.008
- 金币: 31014.8
- 散金: 802
- 红花: 122
- 沙发: 1
- 帖子: 5600
- 在线: 855.5小时
- 虫号: 3522474
- 注册: 2014-11-06
- 性别: GG
- 专业: 机械动力学
- 管辖: 计算模拟

4楼2020-06-14 11:55:43
kingspin
木虫 (著名写手)
- 应助: 254 (大学生)
- 金币: 4472.5
- 红花: 74
- 帖子: 1635
- 在线: 315.5小时
- 虫号: 2585875
- 注册: 2013-08-07
- 性别: GG
- 专业: 聚合物共混与复合材料
★ ★ ★
小木虫: 金币+0.5, 给个红包,谢谢回帖
独孤神宇: 金币+2, 鼓励交流 2020-06-14 14:43:14
小木虫: 金币+0.5, 给个红包,谢谢回帖
独孤神宇: 金币+2, 鼓励交流 2020-06-14 14:43:14
|
可以自己做泰勒展开,这样就得到多项式逼近了。单调函数的反函数可以通过迭代求数值解,数值方法里都学过 发自小木虫IOS客户端 |

5楼2020-06-14 13:01:17
★
小木虫: 金币+0.5, 给个红包,谢谢回帖
小木虫: 金币+0.5, 给个红包,谢谢回帖
|
提供个思路 关于拟合,Origin、Matlab、Python都有对应的库,直接调用就行了。实在找不到,可以用线性拟合,把e(-x/t1)\e(-x/t2)看作两个新变量就行了。就不多说了。 关于反函数求解,解析解不知道怎么整,提供一个数值求解的算法(利用函数的单调的递减特性),步骤如下(假设y取值为y0): 1、给x设定一个初值,比如1,这种情况下计算y(x),有三种情况: a.如果y(x)=y0,则1就是y0的反解。 b.如果y(x)>y0,则让x增大 c.如果y(x)<y0,则让x缩小 注:由于不可能得到绝对准确的解,实际上a判断条件可以写为:abs( y(x)-y0 ) <= error 或者 abs( y(x)-y0 )/(y(x)+y0) < rsd, error/rsd是能接受的计算误差/相对误差,一般可以设得很小,比如1E-10。 2、x变化后,再重新计算y(x),判断属于a、b、c那种情况,如此重复,直到满足情况a。 为了保证计算速度,最好让x按下面规则增大缩小: 1)如果一直是情况b,就一直让x翻倍 2)如果一直是情况c,就一直让x减半 3)如果出现过情况b,也出现过情况c,最近一次出现b情况对应的x值设为x_min、最近一次出现c情况对应的x值设为x_max,x=sqrt(x_min*x_max) |
6楼2020-07-10 13:20:14













回复此楼