声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 32179|回复: 54

[其它软件] [原创]1stOpt非线性拟合 - 与Origin对比!

[复制链接]
发表于 2006-6-22 16:08 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
Origin最引以自豪的主要功能之一就是非线性拟合,但与1stOpt相比,不论是在易用性还是拟合能力与效果上,相差甚远!在研学论坛的Origin版块,已有大侠进行了对比,可参考帖子非线性拟合 - 1stOpt vs. Origin。下面给出一实例,大家可验证一下,用Origin,Matlab等几无可能得到正确结果,但用1stOpt,却轻而易举!

对数值计算软件,大家大可不必对外“崇洋媚外”,对内“妄自菲薄”。

版主如果觉得推荐优秀国产软件就是在作广告,请先用Origin、Matlab或其它拿手的工具做一下下面的例子,如果能获得正解,请将此贴删除!(正解的均方差RMSE=0.033377163531,残差平方和为0.0211666658630,相关系数R = 0.999497560)

拟合公式:y = (p1)+(p2*Exp(-p3*x/p5)+p4/(1+p4*p5*x))
p1,p2,p3,p4,p5为待求参数

数据(x, y)
0, 0.928
0.0000098, 1.02
0.0000195, 1.12
0.0000293, 1.25
0.0000391, 1.42
0.0000488, 1.7
0.0000586, 2.01
0.0000684, 2.26
0.0000781, 2.46
0.0000879, 2.63
0.0000977, 2.82
0.0001074, 3.01
0.0001172, 3.2
0.000127, 3.41
0.0001367, 3.59
0.0001465, 3.72
0.0001562, 3.85
0.000166, 3.98
0.0001758, 4.08

[ 本帖最后由 suffer 于 2008-5-24 09:03 编辑 ]

评分

1

查看全部评分

回复
分享到:

使用道具 举报

发表于 2006-7-10 00:59 | 显示全部楼层
说实话,不喜欢楼主这种扬此抑彼的思维方式,任何软件都有自己的强项和弱点,但最终是算法决定一切,而不是软件名称,那只是个代号而已。我记得在simwe论坛我还是第一个在MATLAB板块宣传1stopt软件的人,其数据拟合功能和线性整数规划问题等求解能力的确强于现有MATLAB官方的工具箱,这是毫无疑问的。可是我们做研究工作,应当注意的重点该是如何利用各种软件取长补短。MATLAB最大的好处不是提供了一堆现成的工具箱,而是给我们提供一个平台和环境以目前已有的工具箱作为样板去自主创作属于我们自己的作品。例如:记得从前MATLAB中没有tabpanel,可是不断有人开发提供相应的M文件,现在虽然还不完善,却早已前进了一大步;以前MATLAB编译无法去除那个dos的黑窗口,taohe自己想出了四种不同方式解决;MATLAB的fig图形无法无缝嵌入VC,scie写出函数完善之...等等的例子已经很能够说明,研究工作本身就是弥补缺陷的过程。而如果初学者从开始就把思维方式调整到只是利用现成的软件来解决问题,后续的研究工作成果就很难使人信服。毕竟咱们不是MALTAB公司或者七维高科的销售部门经理。如果真要叫真,看看MATLAB样条拟合结果:
样条拟合数据.jpg
再看看1stopt的拟合结果:
1stopt拟合数据结果.jpg
哪个更加符合,一目了然!这是算法和思维方式区别的的优势,而不是软件的优势。因为样条拟合是多个三次多项式形式函数分段拟合的具体可以参考spline toolbox中的ppform相关内容。lsqcurvefit和nlinfit等函数无法求解的根本原因不是“MATLAB无法求解”,而是基于最小二乘的相关算法不能很好的适应以及解决系数剧烈振荡的拟合问题,如果有一天MATLAB将1stopt所采用的算法移植到MATLAB中,写出相应的M文件和C-MEX,问题一样能迎刃而解!同样,1stopt的研发人员也一直不停地对产品进行着修正。对用户而言,这些都是很好的软件,也是很好的现象。对我而言哪个软件的优化都很难舍弃,只能是哪个适合于我就用哪个。而我最喜欢的就是优先用MATLAB去写程序,毕竟用的时间长,也熟悉。另外,1stopt目前还不能支持多文本页面的编辑模式,不太方便。实在不行再用1stopt和lingo去验证或者重新写。另外补充一句:在1stopt中也不是所有的算法都能达到楼主所说的均方差,只有差分进化法可以。其它的大致在0.08~0.15左右。(当然在这里我对楼主没有任何个人看法,只是事关大家尤其初学者思路、方向选择的问题,因此相对强烈地提出个人的看法,如果有得罪的地方,还请您原谅。您的帖子我也已经阅读过,是学习1stopt和MATLAB优化问题求解很好的一个范例,从这个角度上讲您的工作对大家是很有意义的)

[ 本帖最后由 bainhome 于 2006-7-10 02:01 编辑 ]

点评

赞成: 5.0
赞成: 5
  发表于 2010-11-15 00:01

评分

1

查看全部评分

 楼主| 发表于 2006-7-14 09:49 | 显示全部楼层
bainhome所言不错,只是本贴的题目是“非线性拟合”,且有确定的模型公式,用样条拟合结果来对比,是否”偏题“ 了?
1stOpt是Tab形式的多页面,按F6试试。
发表于 2006-8-23 16:48 | 显示全部楼层
! 1stOpt的全局最优化方法是否已经公开?!
而计算的效率呢?


对此保持持续的关注
发表于 2006-9-3 16:54 | 显示全部楼层

1stopvsmatlab

其实matlab的拟合工具箱挺好用的,能满足一般的需求
只是在多元拟合时候很困难

1stopt,在全局优化方面可能领先一筹,是值得我们骄傲,国产软件能做到这样已经很不错了

而且其安装程序只有几兆---我原以为有几百兆呢!

挺好的,用于一般拟合和非线性计算,应该多用



我用的是试用版的,好麻烦,每次数据要输入,不能拷贝

那位大侠有破解版的
借助这里的人气,请发给我grhua@163.com
谢谢!
发表于 2006-9-6 12:01 | 显示全部楼层
如果有破解版我也想要一个!多谢了
cold.birdy@google.com
发表于 2006-9-9 11:06 | 显示全部楼层
如果有破解版我也想要一个!谢谢
Llinzhiwei@gmail.com
 楼主| 发表于 2006-9-11 12:47 | 显示全部楼层
再发一个1stOpt拟合实例,该例不同与一般的拟合,包含不等式约束和等式约束。
拟合公式: y = b1/(b2+2^(-b3+b1*b4*x))
不等式约束1:b1/(b2+2^(-b3+b1*b4*1.02))>=90
不等式约束2:b1/(b2+2^(-b3+b1*b4*1.02))<=90.5
等式约束:b1+b2+b3+b4=100

1stOpt代码:

Algorithm = SM3[100];                                                       //设定算法
Function y=b1/(b2+2^(-b3+b1*b4*x));
              90.5>=b1/(b2+2^(-b3+b1*b4*1.02))>=90;     //不等式约束
              Sum(i=1:4)(b)=100;                                         //等式约束
Data;
//x        y
0.45        91
0.94        90
1.02        90
0.29        85
-0.77        12
0.21        97
-0.91        10
-1.84        2
-1.15        5
-0.08        63
0.19        81
-0.14        50
-0.06        70
0.34        100
-0.85        8
0.44        78
0.62        92
0.92        80
0.75        95
dme.jpg

评分

1

查看全部评分

发表于 2006-10-8 19:05 | 显示全部楼层
我也想用一下看看
又破解版的请给我也发一份xfchen_610@sina.com
发表于 2006-10-9 17:31 | 显示全部楼层
istopt 能不能解微分方程
发表于 2006-10-17 10:35 | 显示全部楼层
楼主你好,我现在正在拟合的问题上产生麻烦,软件我已经下载,可不会定义和应用语句。
不知道楼主有使用说明么?
我的邮箱:tristan008@tom.com
谢谢
 楼主| 发表于 2006-10-17 11:42 | 显示全部楼层
有问题提出来大家一起讨论!相比Matlab、Origin等,1stOp在使用上,设计的已经非常简单易懂了,看一下使用手册,再看看附带的大量例子,很快就会上手的。
发表于 2006-10-19 09:09 | 显示全部楼层
我下得那个版本,使用手册打不开。
发表于 2006-10-19 09:46 | 显示全部楼层
Title hhh;
//Parameters x[0,24] y[30,70];
//Parameters a b;
//Variable x y;
//Function y=a+blnx;
//data ;
//x y
0.25 32.80
0.50 35.61
1.00 39.39
1.50 43.33
2.00 44.43
4.00 47.63
6.00 54.01
8.00 57.38
12.00 59.42
16.00 63.31
20.00 66.19
24.00 69.74

非线性拟合方程,这个程序怎么写?
 楼主| 发表于 2006-10-19 11:26 | 显示全部楼层
Title hhh;
Parameters a, b;
Variable x, y;
Function y=a+b*ln(x);
data ;
//x y
0.25 32.80
0.50 35.61
1.00 39.39
1.50 43.33
2.00 44.43
4.00 47.63
6.00 54.01
8.00 57.38
12.00 59.42
16.00 63.31
20.00 66.19
24.00 69.74
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-5-1 14:01 , Processed in 0.067384 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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