声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

楼主: unknowno

[其它软件] 如何绘制两个非线性隐函数确定的关系曲线!

[复制链接]
 楼主| 发表于 2007-10-17 10:52 | 显示全部楼层

回复 #16 dingd 的帖子

这样的趋势就对了!
回复 支持 反对
分享到:

使用道具 举报

发表于 2007-10-17 12:14 | 显示全部楼层

回复 #15 dingd 的帖子

1stOpt这个东西确实不错哈
 楼主| 发表于 2007-10-17 13:12 | 显示全部楼层
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的版本可供下载试用!不知道贵不贵
 楼主| 发表于 2007-10-17 14:39 | 显示全部楼层

回复 #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
发表于 2007-10-17 15:01 | 显示全部楼层
1.5太老了。
 楼主| 发表于 2007-10-17 15:15 | 显示全部楼层

回复 #20 dingd 的帖子

那就是说仅使用1.5的试用版还是不能达到我的目的,进行两个非线性方程组的求解和绘图?

[ 本帖最后由 unknowno 于 2007-10-17 15:36 编辑 ]
 楼主| 发表于 2007-10-17 18:46 | 显示全部楼层
我想到了一个使用matlab解决这个问题的方法!

先使用ezplot通过第一方程绘制出来A-B的关系曲线,再从曲线中提取相应的A和B的值,然后将提取的A和B值代入第二个方程解出A1,这样就可以得到A1的值进而就可以绘制出来B-A1的关系曲线!(不知道对不对,还望高手指点)
基于这种方法,我有一个关于ezplot的问题就是,ezplot绘制A-B曲线时采取的是变步长,能不能自定义步长进行绘制?
发表于 2007-10-17 19:53 | 显示全部楼层
原帖由 unknowno 于 2007-10-17 18:46 发表
我想到了一个使用matlab解决这个问题的方法!

先使用ezplot通过第一方程绘制出来A-B的关系曲线,再从曲线中提取相应的A和B的值,然后将提取的A和B值代入第二个方程解出A1,这样就可以得到A1的值进而就可以绘 ...

可以尝试修改ezplot函数本身
 楼主| 发表于 2007-10-18 10:34 | 显示全部楼层
终于使用matlab搞定了
谢谢大家的帮助
特别感谢“dingd”、“花如月”、“无水”
jietu.jpg
发表于 2007-10-18 18:05 | 显示全部楼层

回复 #24 unknowno 的帖子

把你的解决办法那出来,也好让大家可以学习下:handshake
发表于 2007-10-18 19:38 | 显示全部楼层
两根曲线相交了两次,和1stOpt得的不太一样。把详细结果放上来看看。
发表于 2007-10-18 19:44 | 显示全部楼层
原帖由 dingd 于 2007-10-18 19:38 发表
两根曲线相交了两次,和1stOpt得的不太一样。把详细结果放上来看看。

非常赞同,把绘图的程序弄上来吧。以便对比分析
 楼主| 发表于 2007-10-19 10:53 | 显示全部楼层
昨晚没上网,刚看见帖子:lol

我的基本思路就是:
一、利用ezplot绘制出第一个方程中B-A的曲线
二、从曲线B-A中提取出B和A的数据点
三、将二中提取的数据点带入第二个方程求出对应的A1,plot(B,A1)

考虑到ezplot绘制曲线是变步长的,这样可能影响求A1的精度,不知各位如何看?
大家觉得我的方法是否可行?有什么可以改进的?

上次贴的那个图我也不知道怎么算出来是那样子,可能某个参数搞错了吧,我又算了一遍。
现在把我的方法帖上来:
  1. clear
  2. clc
  3. syms x y%x=B,y=A
  4. ezplot(y-x^2/((1-x^2+0.03*y^2)^2+0.16*x^2)^(1/2),[0,2.5,0,3]) ;
  5. hold on;
  6. a=get(gca);b=get(a.Children);
  7. B=b.XData;
  8. A=b.YData;
  9. for i=1:length(A)
  10.     A1(i)=(1+(2/B(i)^2-1)*A(i)^2+0.06/B(i)^2*A(i)^4)^(1/2);
  11. end
  12. plot(B,A1,'R');
复制代码
jietu.jpg

评分

1

查看全部评分

发表于 2007-10-19 15:41 | 显示全部楼层

回复 #28 unknowno 的帖子

不错的方法。学习了!
发表于 2010-12-7 10:32 | 显示全部楼层
谢谢啊,学到了。。
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-4-20 02:39 , Processed in 0.090983 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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