24小时热门版块排行榜    

查看: 866  |  回复: 5

dingx2005

金虫 (正式写手)

[求助] 1stOpt拟合求助 已有1人参与

为了求出参数a,b,c,d。编写了下边的程序,运行时老提示方程不正确。新手不知如何改进,还望大侠指点
1stOpt拟合求助
Title "step 2";
Parameter a,b,c,d;
ConstStr  1=2*b*m*n^2+sqrt(b*d)*m*n+n;
DataSet;
       X, Y =
         0.6        0.51
         0.7        0.477
         0.8        0.461
         0.9        0.449
         1        0.443
EndDataSet;
MinFunction sum(i=1:5)(-y+a*b*m*n^2+c*sqrt(b*d)*m*n)+
                    sum(i=1:5)(-x+m+b*m*(n)^2+sqrt(b*d)*m*n);
回复此楼
人就这一辈子,能够从事自己喜欢的事情,并且可以从中获取生活资本,这是非常幸运的事情。
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dingd

铁杆木虫 (职业作家)

【答案】应助回帖

感谢参与,应助指数 +1
这样写:
CODE:
Title "step 2";
Parameter a,b,c,d;
DataSet;
       X, Y =
         0.6        0.51
         0.7        0.477
         0.8        0.461
         0.9        0.449
         1        0.443
EndDataSet;
MinFunction sum(i=1:5,y)(-y+a*b*m*n^2+c*sqrt(b*d)*m*n)+sum(i=1:5,x)(-x+m+b*m*(n)^2+sqrt(b*d)*m*n);
            1=2*b*m*n^2+sqrt(b*d)*m*n+n;

只是结果不对,无穷小,参数有范围限制吧?
2楼2015-10-23 19:04:44
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dingx2005

金虫 (正式写手)

引用回帖:
2楼: Originally posted by dingd at 2015-10-23 19:04:44
这样写:

Title "step 2";
Parameter a,b,c,d;
DataSet;
       X, Y =
         0.6        0.51
         0.7        0.477
         0.8        0.461
         0.9        0.449
         ...

谢谢您的回复
参数都是大于零
人就这一辈子,能够从事自己喜欢的事情,并且可以从中获取生活资本,这是非常幸运的事情。
3楼2015-10-23 22:29:22
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dingd

铁杆木虫 (职业作家)

【答案】应助回帖

不唯一吧:

1:
目标函数值(最小): -6.34
a: 0
b: 1.43801264441738
c: 6.93475569356464
d: 11.8339281140646
m: 0
n: 0.999999999999951

约束函数:
1: 1-(2*b*m*n^2+sqrt(b*d)*m*n+n) = 4.862776848E-014

2:
目标函数值(最小): -6.34
a: 0.690915185725316
b: 0.0244748821230291
c: 0.0396681396914308
d: 0.0143748852975545
m: 1.58458487214934E-16
n: 0.999999999999912

约束函数:
1: 1-(2*b*m*n^2+sqrt(b*d)*m*n+n) = 8.792966355E-014
4楼2015-10-23 22:45:22
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dingx2005

金虫 (正式写手)

谢谢,我也不知道有几个解。但是m,n不是一个值,每组x,y对应一组m,n。
我想再请教一下我的函数处理的算法对不对:
我想用实验数据拟合以下函数,从而求得未知数a,b,c,d.
y=a*b*m*n^2+c*sqrt(b*d)*m*n
x=m+b*m*(n)^2+sqrt(b*d)*m*n
2*b*m*n^2+sqrt(b*d)*m*n+n=1
在编程时将函数处理为MinFunction sum(i=1:5,y)(-y+a*b*m*n^2+c*sqrt(b*d)*m*n)+sum(i=1:5,x)(-x+m+b*m*(n)^2+sqrt(b*d)*m*n);1=2*b*m*n^2+sqrt(b*d)*m*n+n;
不知道这种处理合适不合适?
人就这一辈子,能够从事自己喜欢的事情,并且可以从中获取生活资本,这是非常幸运的事情。
5楼2015-10-24 10:40:59
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dingx2005

金虫 (正式写手)

引用回帖:
4楼: Originally posted by dingd at 2015-10-23 22:45:22
不唯一吧:

1:
目标函数值(最小): -6.34
a: 0
b: 1.43801264441738
c: 6.93475569356464
d: 11.8339281140646
m: 0
n: 0.999999999999951

约束函数:
1: 1-(2*b*m*n^2+sqrt(b*d)*m*n+n) = 4.86277684 ...

谢谢,我也不知道有几个解。但是m,n不是一个值,每组x,y对应一组m,n。
我想再请教一下我的函数处理的算法对不对:
我想用实验数据拟合以下函数,从而求得未知数a,b,c,d.
y=a*b*m*n^2+c*sqrt(b*d)*m*n
x=m+b*m*(n)^2+sqrt(b*d)*m*n
2*b*m*n^2+sqrt(b*d)*m*n+n=1
在编程时将函数处理为MinFunction sum(i=1:5,y)(-y+a*b*m*n^2+c*sqrt(b*d)*m*n)+sum(i=1:5,x)(-x+m+b*m*(n)^2+sqrt(b*d)*m*n);1=2*b*m*n^2+sqrt(b*d)*m*n+n;
不知道这种处理合适不合适?
人就这一辈子,能够从事自己喜欢的事情,并且可以从中获取生活资本,这是非常幸运的事情。
6楼2015-10-24 10:42:07
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 dingx2005 的主题更新
信息提示
请填处理意见