声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 3968|回复: 10

[1stopt] 新手求助1stOpt求解超定非线性方程组

[复制链接]
发表于 2008-10-28 08:53 | 显示全部楼层 |阅读模式

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

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

x
有限元得到的一个维数201X190的超定稀疏非线性方程组,用matlab求解的时候有的参数计算结果收敛的很好,有的参数结果就不收敛,就想借助1stOpt来求解,但是刚刚接触有许多地方还不明白,这么大的方程组,是不是也得一个一个方程输入,能不能像matlab一样用矩阵来表示 Image00000.jpg
回复
分享到:

使用道具 举报

发表于 2008-10-28 10:40 | 显示全部楼层
虽然麻烦,但应该可以,用for语句。下面是个简单的例子:
Function
1/(x1+x2*(160.73)^(x3))+x4*(160.73)^x5-(6302.25)-(0.1*1) = 0;
1/(x1+x2*(111.85)^(x3))+x4*(111.85)^x5-(2090.46)-(0.1*2) = 0;
1/(x1+x2*(67.717)^(x3))+x4*(67.717)^x5-(487.44)-(0.1*3) = 0;
1/(x1+x2*(53.836)^(x3))+x4*(53.836)^x5-(1452.07)-(0.1*4) = 0;
1/(x1+x2*(40.602)^(x3))+x4*(40.602)^x5-(5557.26)-(0.1*5) = 0;

可以写成:
Constant a=[160.73,111.85,67.717,53.836,40.602],
                  b=[6302.25,2090.46,487.44,1452.07,5557.26];
Function For(i=1:5,a,b)(1/(x1+x2*a^(x3))+x4*a^x5-b=0.1*i);
 楼主| 发表于 2008-10-28 13:53 | 显示全部楼层

回复 沙发 dingd 的帖子

谢谢,有点启发!1stOpt有没有矩阵相乘运算,矩阵转置,按照上面的提示一百多个变量的系数列向量一个一个全部写出来也是很费时间的,另外上面的a,b都是行向量,有没有列向量这一说,谢谢!小弟昨天刚刚入手,不懂的地方实在太多,这方面的资料也少
发表于 2008-10-28 15:58 | 显示全部楼层
写成下面效果也是一样的:
DataSet;
        a,b=
        160.73        6302.25
        111.85        2090.46
        67.717        487.44
        53.836        1452.07
        40.602        5557.26
EndDataSet;
Function For(i=1:5,a,b)(1/(x1+x2*a^(x3))+x4*a^x5-b=0.1*i);
 楼主| 发表于 2008-10-29 10:31 | 显示全部楼层

回复 地板 dingd 的帖子

主任,怎么你写的形式考过去说表达式有误呢,不知道怎么修改,开始说a和b定义有误,我就改为a(1:5),b(1:5),但是表达式不知道咋改。有没有类似的教程啥的
发表于 2008-10-29 13:56 | 显示全部楼层
你用的版本太老了吧?试试2.0以后的。
 楼主| 发表于 2008-10-29 15:39 | 显示全部楼层

回复 6楼 dingd 的帖子

哪有2.0或者2.5的下载地址,或者给我传一个,多谢了!
发表于 2008-11-20 00:05 | 显示全部楼层
我买了一个2.5   现在运行不了 不知道为什么 启动就是说内存某个地方错误 不能读写 接着就没反应了
不知道是软件问题 还是我内存问题
发表于 2008-12-30 20:44 | 显示全部楼层
这的确是个问题,比如我的矩阵是12个52×100的放在1stopt中来相乘实在不是一点麻烦:@(
还有请问一下,1stopt中可否读写文件方式来优化,看了一下帮助,可以用externalexe来做,但没有具体的例子,不知有没有大侠试过?

[ 本帖最后由 geni2003 于 2008-12-30 21:07 编辑 ]
发表于 2009-1-2 23:27 | 显示全部楼层
可以直接读取Excel文件数据:
DataSet;
        a,b="c:\data files\test.xls[A1:B5]]";
EndDataSet;
Function For(i=1:5,a,b)(1/(x1+x2*a^(x3))+x4*a^x5-b=0.1*i);
发表于 2009-1-2 23:33 | 显示全部楼层
dingd版主,1stopt可否调用其它程序生成的dll,看了帮助,
//Constant M=100;
parameters x1[-100,100],x2[-100,100];
CallExternalDll "ExtDll.dll OptFunc"; //External Dll file name
是演示代码,试着编了一个简单的dll文件,但根本用类似演示的代码无法运行,
出来的结果是 :parameter x1[-100,100] MinFunction  CallExternalDll "sample.dll sample" = parameter x1[-100,100] minfunction  CallExternalDll sample.dll sample
请dingd版主看看这个是怎么解决的,谢谢

[ 本帖最后由 geni2003 于 2009-1-2 23:44 编辑 ]
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-5-20 09:08 , Processed in 0.057964 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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