24小时热门版块排行榜    

查看: 843  |  回复: 4

Charles201

新虫 (小有名气)

[求助] 求助matlab高手看一下菜鸟写的非线性拟合程序,有关苯胺络合萃取的 已有2人参与

待拟合方程求助matlab高手看一下菜鸟写的非线性拟合程序,有关苯胺络合萃取的,需得到b1,b2的值
原始数据:
   x1                 x2                  y
0.10         3.27         6.49
0.20         2.99         9.10
0.30         2.86         12.65
0.40         2.77         16.96
0.50         2.73         22.88
0.60         2.70         28.12

已写的程序,一直出错,求各位大神帮我修改一下:
m文件:
function y=aniline_1fun(b,x)
x1=x(0:0.01:1.00);
x2=x(4.00:-0.02:2.00);
b1=m;
b2=KE;
y=b1*b2*0.0104^(b1-1)*x1/(1+b2*0.0104^b1)/(1+10^(4.67-x2));

>> x=[0.10,0.20,0.30,0.40,0.50,0.60;
3.27,2.99,2.86,2.77,2.73,2.70]';
>> y=[6.49,9.10,12.65,16.96,22.88,28.12];
>> b0=[0,5]';
>> [b,Q]=lsqcurvefit(aniline_1fun,b0,x,y)
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dingd

铁杆木虫 (职业作家)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
Charles201: 金币+30, ★★★★★最佳答案 2015-08-05 15:14:26
公式有问题吧,过拟合:

y=b1*b2*0.0104^(b1-1)*x1/(1+b2*0.0104^b1)/(1+10^(4.67-x2));
可写成:
y=b1*b2*0.0104^(b1-1)/(1+b2*0.0104^b1)/(1+10^(4.67-x2))*x1;

上式中:b1*b2*0.0104^(b1-1)/(1+b2*0.0104^b1)可以用一个参数代替,如b3

等价公式:y=b3/(1+10^(4.67-x2))*x1;

仅有一个参数

» 本帖已获得的红花(最新10朵)

2楼2015-08-03 18:22:37
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

Charles201

新虫 (小有名气)

送红花一朵
引用回帖:
2楼: Originally posted by dingd at 2015-08-03 18:22:37
公式有问题吧,过拟合:

y=b1*b2*0.0104^(b1-1)*x1/(1+b2*0.0104^b1)/(1+10^(4.67-x2));
可写成:
y=b1*b2*0.0104^(b1-1)/(1+b2*0.0104^b1)/(1+10^(4.67-x2))*x1;

上式中:b1*b2*0.0104^(b1-1)/(1+b2*0.010 ...

谢谢,我一会改一下,试试能不能搞定

[ 发自小木虫客户端 ]
3楼2015-08-03 18:26:06
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

Charles201

新虫 (小有名气)

引用回帖:
2楼: Originally posted by dingd at 2015-08-03 18:22:37
公式有问题吧,过拟合:

y=b1*b2*0.0104^(b1-1)*x1/(1+b2*0.0104^b1)/(1+10^(4.67-x2));
可写成:
y=b1*b2*0.0104^(b1-1)/(1+b2*0.0104^b1)/(1+10^(4.67-x2))*x1;

上式中:b1*b2*0.0104^(b1-1)/(1+b2*0.010 ...

我将m文件改成了如下形式
function y=aniline_1fun(b,x)
x1=x(0:0.01:1.00);
x2=x(4.00:-0.02:2.00);
b3=b1*b2*0.0104^(b1-1)/(1+b2*0.0104^b1);
y=b3*x1/(1+10^(4.67-x2));
主程序:
x=[0.10,0.20,0.30,0.40,0.50,0.60;
3.27,2.99,2.86,2.77,2.73,2.70]';
y=[6.49,9.10,12.65,16.96,22.88,28.12];
b3=[0]';
[b,Q]=lsqcurvefit(aniline_1fun,b0,x,y)
但是运行后提示输入参数的数目不足。请问这是什么原因呢?
4楼2015-08-03 19:39:23
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

月只蓝

主管区长 (职业作家)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
Charles201: 金币+20, ★★★很有帮助 2015-08-05 15:14:38
引用回帖:
4楼: Originally posted by Charles201 at 2015-08-03 19:39:23
我将m文件改成了如下形式
function y=aniline_1fun(b,x)
x1=x(0:0.01:1.00);
x2=x(4.00:-0.02:2.00);
b3=b1*b2*0.0104^(b1-1)/(1+b2*0.0104^b1);
y=b3*x1/(1+10^(4.67-x2));
主程序:
x=';
y=;
b3=';
=l ...

dingd大神这么耐心地讲解,我直接给你结果吧。
我这些结果是用1stOpt软件做的,MATLAB肯定也可以做,在这里不我讨论MATLAB代码。

dingd大神说的过拟合很有道理的。
如果按照双参数公式:
y=b1*b2*0.0104^(b1-1)*x1/(1+b2*0.0104^b1)/(1+10^(4.67-x2))
将会得到无限组结果:
b1                 -0.480056251311531
b2                 -0.110217887023378
----------        -------------
b1                 -1.43102339222656
b2                 -0.0013970972484279
----------        -------------
b1                 -0.594292430579858
b2                 -0.0652159450286256
----------        -------------
b1                 -0.438212028430683
b2                 -0.13357689181283
----------        -------------
b1                 1.03961552899074
b2                 -118.681614122118

……  ……
尽管b1和b2变化不定,但是两个参数按照下式计算:
b3=b1*b2*0.0104^(b1-1)/(1+b2*0.0104^b1)
b3一定都是等于3425.94298397334。
也就是说,楼主最原始的公式是过拟合的。
MATLAB、MS小问题、普通问题请发帖求助!时间精力有限,恕不接受无偿私信求助。
5楼2015-08-04 11:17:06
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 Charles201 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[基金申请] 93BebMhtakh前后11位开头都是大写 +3 且听虎啸 2026-08-17 4/200 2026-08-17 22:31 by ccec101
[基金申请] 欢迎发来filecode的Mz6后的代码验证其规律 +36 医学老男孩 2026-08-13 85/4250 2026-08-17 21:23 by lcmdlut
[基金申请] 感觉是下周放榜了 +5 angus9576 2026-08-17 9/450 2026-08-17 20:57 by ssxclkj
[基金申请] 时间戳变了,能看出什么问题? +4 基诺咪客 2026-08-17 4/200 2026-08-17 16:10 by Vivilian
[基金申请] 哪位老哥知道今年的国自然具体哪一天放榜? +12 Ldrop2023 2026-08-13 15/750 2026-08-17 15:02 by 小豌豆_发芽
[基金申请] 今天系统多次维护,明天很可能放榜! +8 zju2000 2026-08-16 9/450 2026-08-17 12:20 by lmz0216
[基金申请] 2027广东省杰青 +3 奶牛小黑 2026-08-15 6/300 2026-08-16 20:07 by 奶牛小黑
[基金申请] 快农历七夕节了,轻松一下,男人悄悄话,女施主请不要进来。 +3 Tide man 2026-08-14 3/150 2026-08-16 17:47 by jurkat.1640
[基金申请] 咱们一起用铁证分析2026国家社科基金中标与否 +7 启萌科技 2026-08-12 26/1300 2026-08-16 12:35 by 启萌科技
[基金申请] 有时候,自然基金真的不能太认真 (我的申报经验) +10 majunge000 2026-08-11 12/600 2026-08-16 08:18 by xli1984
[精细化工] 招聘 金属平磨液,抛光液研发工程师 +3 小天0311 2026-08-14 3/150 2026-08-16 07:31 by H9PLUS
[基金申请] 各位道友,我要去昆明玩几天,回来见。 +7 Tide man 2026-08-14 8/400 2026-08-15 01:11 by arzu_hma
[基金申请] 是这周出结果还是下周出结果? +4 yuleib84 2026-08-11 4/200 2026-08-14 23:05 by lfy8008
[基金申请] 重要来源:本周末出结果 +10 瞬息宇宙 2026-08-12 10/500 2026-08-13 15:46 by likettle
[基金申请] 不应该看fileCode +7 且听虎啸 2026-08-12 9/450 2026-08-13 14:27 by flydreamws
[基金申请] Filecode 又变了,巨变 +3 WH3796 2026-08-12 4/200 2026-08-13 14:13 by 小木虫6752397
[基金申请] 分享一下我之前已中青C的计划书的filecode +4 布布和一二 2026-08-11 5/250 2026-08-13 12:56 by cratir
[基金申请] 结合人工智能,周易传统文化,filecode打分制来了,3分以上希望很大。 +3 Tide man 2026-08-12 4/200 2026-08-13 08:35 by ZJTJZ
[基金申请] 2019年青年基金涵评意见,大家看看几个A,几个B? +11 Tide man 2026-08-11 11/550 2026-08-13 07:35 by 撸猫猫
[基金申请] 什么时候出结果,有咨询渠道??? +3 Tide man 2026-08-11 3/150 2026-08-11 17:54 by kudofaye
信息提示
请填处理意见