声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2751|回复: 2

[1stopt] 如何在1stopt中实现顺序计算

[复制链接]
发表于 2011-7-4 11:26 | 显示全部楼层 |阅读模式

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

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

x
       最近在算一个方程组,未知数并不是很多,如果按顺序计算可以很快得到正确的结果,但把几个方程放在一起,用1stiopt求解方程组的话,若不精确设定参数的初始值,最后的结果就会偏离很远,请问1stopt只能进行全局优化计算么?我用的是“麦夸特法(Levenberg-Marquardt) + 通用全局优化法”,如果换一种计算方法是不是可以实现不精确设定初始值而得到正确的解呢,如果可以的话,应该选则哪种方法使方程顺序计算呢?
方程组如下:
constant    x48=98.4,x46=2971,time=2e-3,mox=3.77e-7,x42=3.25e-5;
function     
                 x58=mox+x42*time;                     // 1
                 x58=x52*x46*1e-15;                    // 2
                 x52=4*pi*(x49^3)/3-x51;             // 3
                 x47=sqrt(x48^2+x49^2);             // 4      
                 x51=pi*(x48+x49-x47)^2*(x47^2+2*x47*x49-3*x49^2+2*x47*x48+6*x49*x48-3*x48^2)/(12*x47); // 5  

比较精确的解应该是:
                 x47: 105.282661726041
                 x49: 37.4416699819826
                 x51: 66274.69708878
                x52: 153589.362371435
                x58: 4.42013158476194E-7
若设定参数初始值范围
Parameter   x47=110[50,250],x49=30[0,200],x51=65000[2000,252000],
                   x52=150000[100000,45000000],x58[3.0e-7,3.77e-5];
是可以得到的,若不设定范围,计算的结果就会相差很远。而若根据已知参数,从方程1开始,把每一步计算得到的参数结果代入下一个方程逐个进行计算,也是可以得到上面的结果的,但实际的操作就变成了运行5次程序。
实际问题是打算用这个方程求解不用工况下的计算结果,而每次的初始值并不能事先精确计算出来,有什么办法可以运行一次程序就得到精确的解么?

回复
分享到:

使用道具 举报

发表于 2011-7-4 16:40 | 显示全部楼层
应该是有多解。
 楼主| 发表于 2011-7-8 16:57 | 显示全部楼层
回复 2 # dingd 的帖子

谢谢dingd主任的回复,可是计算时若从方程1开始,把每一步计算得到的参数结果代入下一个方程,这样逐个进行计算,也是可以得到上面的结果的,所以原方程组应该不是有多解的呀。
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-4-25 17:31 , Processed in 0.051480 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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