回复 #16 dingd 的帖子
这样的趋势就对了!回复 #15 dingd 的帖子
1stOpt这个东西确实不错哈 1stOpt是七维高科有限公司(7D-Soft High Technology Inc.)独立开发,拥有完全自主知识产权的一套数学优化分析综合工具软件包。在非线性回归,曲线拟合,非线性复杂工程模型参数估算求解等领域傲视群雄,首屈一指,居世界领先地位。除去简单易用的界面,其计算核心是基于七维高科有限公司科研人员十数年的革命性研究成果【通用全局优化算法】(Universal Global Optimization - UGO),该算法之最大特点是克服了当今世界上在优化计算领域中使用迭代法必须给出合适初始值的难题,即用户勿需给出参数初始值,而由1stOpt随机给出,通过其独特的全局优化算法,最终找出最优解。以非线性回归为例,目前世界上在该领域最有名的软件工具包诸如OriginPro,Matlab,SAS,SPSS,DataFit,GraphPad,TableCurve2D,TableCurve3D等,均需用户提供适当
的参数初始值以便计算能够收敛并找到最优解。如果设定的参数初始值不当则计算难以收敛,其结果是无法求得正确结果。而在实际应用当中,对大多数用户来说,给出(猜出)恰当的初始值是件相当困难的事,特别是在参数量较多的情况下,更无异于是场噩梦。而1stOpt凭借其超强的寻优,容错能力,在大多数情况下(大于90%),从任一随机初始值开始,都能求得正确结果。
http://7d-soft.com/cn/index.htm
看了它的网站还没到2.5的版本,只有1.5的版本可供下载试用!不知道贵不贵
回复 #15 dingd 的帖子
我很想知道#15中的两个图你是怎么绘制出来的,我使用的是1stOpt1.5,输入#9的代码后在结果栏里面只出现了这些东西,找不到在那里显示图形!恳请指点迭代数: 31
计算用时(时:分:秒:毫秒): 00:00:00:280
计算中止原因: 达到收敛判定标准
优化算法: 麦夸特法(Levenberg-Marquardt) + 通用全局优化法
函数表达式 1: a-b^2/((1-b^2+0.03*a^2)^2+0.16*b^2)^(1/2)-(0)
2: a1-(1+(2/b^2-1)*a^2+0.06/b^2*a^4)^(1/2) -( 0)
目标函数值: 3.65596442009064E-13
B: 1.66079436240865
a: 1.5197749382945
a1: 0.693619672961436 1.5太老了。
回复 #20 dingd 的帖子
那就是说仅使用1.5的试用版还是不能达到我的目的,进行两个非线性方程组的求解和绘图?[ 本帖最后由 unknowno 于 2007-10-17 15:36 编辑 ] 我想到了一个使用matlab解决这个问题的方法!
先使用ezplot通过第一方程绘制出来A-B的关系曲线,再从曲线中提取相应的A和B的值,然后将提取的A和B值代入第二个方程解出A1,这样就可以得到A1的值进而就可以绘制出来B-A1的关系曲线!(不知道对不对,还望高手指点)
基于这种方法,我有一个关于ezplot的问题就是,ezplot绘制A-B曲线时采取的是变步长,能不能自定义步长进行绘制? 原帖由 unknowno 于 2007-10-17 18:46 发表 http://www.chinavib.com/forum/images/common/back.gif
我想到了一个使用matlab解决这个问题的方法!
先使用ezplot通过第一方程绘制出来A-B的关系曲线,再从曲线中提取相应的A和B的值,然后将提取的A和B值代入第二个方程解出A1,这样就可以得到A1的值进而就可以绘 ...
可以尝试修改ezplot函数本身 终于使用matlab搞定了
谢谢大家的帮助
特别感谢“dingd”、“花如月”、“无水”
回复 #24 unknowno 的帖子
把你的解决办法那出来,也好让大家可以学习下:handshake 两根曲线相交了两次,和1stOpt得的不太一样。把详细结果放上来看看。 原帖由 dingd 于 2007-10-18 19:38 发表 http://www.chinavib.com/forum/images/common/back.gif两根曲线相交了两次,和1stOpt得的不太一样。把详细结果放上来看看。
非常赞同,把绘图的程序弄上来吧。以便对比分析 昨晚没上网,刚看见帖子:lol
我的基本思路就是:
一、利用ezplot绘制出第一个方程中B-A的曲线
二、从曲线B-A中提取出B和A的数据点
三、将二中提取的数据点带入第二个方程求出对应的A1,plot(B,A1)
考虑到ezplot绘制曲线是变步长的,这样可能影响求A1的精度,不知各位如何看?
大家觉得我的方法是否可行?有什么可以改进的?
上次贴的那个图我也不知道怎么算出来是那样子,可能某个参数搞错了吧,我又算了一遍。
现在把我的方法帖上来:
clear
clc
syms x y%x=B,y=A
ezplot(y-x^2/((1-x^2+0.03*y^2)^2+0.16*x^2)^(1/2),) ;
hold on;
a=get(gca);b=get(a.Children);
B=b.XData;
A=b.YData;
for i=1:length(A)
A1(i)=(1+(2/B(i)^2-1)*A(i)^2+0.06/B(i)^2*A(i)^4)^(1/2);
end
plot(B,A1,'R');