24小时热门版块排行榜    

CyRhmU.jpeg
查看: 1533  |  回复: 11

iangie

木虫 (著名写手)

强气受

[求助] 形如1-(1-x)^a=by的方程怎么做拟合?

已知一个模型是1-(1-x)^a=by
a, b是参数
x, y是一堆实验数据
请问怎么把这个方程拟合到实验数据里,得到最优的a, b值?
怎么变形这个方程, 转换实验数据, 做最小二乘法线性拟合的?
还是必须用软件做非线性拟合?

谢谢
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

超越性别的爱情才是纯粹的爱情
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zhfzh

木虫 (正式写手)

【答案】应助回帖

★ ★ ★ ★
感谢参与,应助指数 +1
fegg7502: 金币+4, 3ks 2012-06-09 20:23:23
两边取对数,在作变量带换就变成线性拟合了,你可以用matlab直接拟合的,ctftool
2楼2012-06-08 23:20:42
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zhfzh

木虫 (正式写手)

引用回帖:
2楼: Originally posted by zhfzh at 2012-06-08 23:20:42
两边取对数,在作变量带换就变成线性拟合了,你可以用matlab直接拟合的,ctftool

前面那种方法不行,看错了
3楼2012-06-08 23:27:32
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dingd

铁杆木虫 (职业作家)

【答案】应助回帖

★ ★ ★ ★ ★
感谢参与,应助指数 +1
fegg7502: 金币+4, 3ks 2012-06-09 20:23:31
iangie: 金币+1, 有帮助, 这不是线行拟合~我是想做线性拟合用斜率和截距求a,b 2012-06-14 15:54:10
把公式“1-(1-x)^a=by”变为“y=(1-(1-x)^a)/b”就成为一般的拟合了,实现起来非常简单。
4楼2012-06-09 09:36:19
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

z萝莉

银虫 (小有名气)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★
fegg7502: 金币+5, 应助指数+1, 3ks 2012-06-09 20:23:55
iangie: 金币+4, 有帮助, 谢谢~奈何我不会matlab啊~有mathematica的程序吗? 2012-06-14 15:54:54
首先可以把式子化为y=1/b*(1-(1-x)^a);然后再进行拟合方法如下:
先编写一个名字为jack的m文件内容为
function f=jack(a,x,xdata)
f=1/a(2)*(1-(1-x)^a(1));!这里a为向量且a(1)是a,a(2)是b当然你也可以用其他的表示。
然后再工作窗中输入[xx,res]=lsqcurvefit(@jack,[1,1],xdata,ydata)
! 括号中[1,1]是a,b的初始值可以自己随意取为了精确尽量先猜测一下,去个与结果接近的值。
做好自己该做的事
5楼2012-06-09 16:18:16
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

z萝莉

银虫 (小有名气)


fegg7502: 金币+1, 3ks 2012-06-09 20:24:05
引用回帖:
5楼: Originally posted by z萝莉 at 2012-06-09 16:18:16
首先可以把式子化为y=1/b*(1-(1-x)^a);然后再进行拟合方法如下:
先编写一个名字为jack的m文件内容为
function f=jack(a,x,xdata)
f=1/a(2)*(1-(1-x)^a(1));!这里a为向量且a(1)是a,a(2)是b当然你也可以用其他 ...

修改一下,把jack括号后面的xdata删除,写错了。
做好自己该做的事
6楼2012-06-09 19:35:52
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zhoucandong

木虫 (著名写手)

【答案】应助回帖


感谢参与,应助指数 +1
fegg7502: 金币+1, 3ks 2012-06-09 20:24:16
可以在orgin软件的非线性拟合中设定函数,然后进行拟合。
pipi
7楼2012-06-09 19:37:23
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

iangie

木虫 (著名写手)

强气受

引用回帖:
4楼: Originally posted by dingd at 2012-06-09 09:36:19
把公式“1-(1-x)^a=by”变为“y=(1-(1-x)^a)/b”就成为一般的拟合了,实现起来非常简单。

y=(1-(1-x)^a)/b也不是线性拟合啊
超越性别的爱情才是纯粹的爱情
8楼2012-06-09 20:39:17
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

iangie

木虫 (著名写手)

强气受

引用回帖:
5楼: Originally posted by z萝莉 at 2012-06-09 16:18:16
首先可以把式子化为y=1/b*(1-(1-x)^a);然后再进行拟合方法如下:
先编写一个名字为jack的m文件内容为
function f=jack(a,x,xdata)
f=1/a(2)*(1-(1-x)^a(1));!这里a为向量且a(1)是a,a(2)是b当然你也可以用其他 ...

这是用的什么软件??
超越性别的爱情才是纯粹的爱情
9楼2012-06-09 20:39:32
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

iangie

木虫 (著名写手)

强气受

除了线性拟合....
我只会用mathematica, matlab不会....
谢谢
超越性别的爱情才是纯粹的爱情
10楼2012-06-09 20:40:13
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 iangie 的主题更新
信息提示
请填处理意见