找回密码
 注册
Simdroid-非首页
查看: 135|回复: 6

matlab 优化问题(矛盾方程组)多多指教

[复制链接]
发表于 2011-5-3 22:30:26 | 显示全部楼层 |阅读模式 来自 四川成都
c=[8.19e-16 1.67e-15;3.16e-15 6.55e-15;6.50e-14 1.68e-13;7.35e-14 1.95e-13;6.87e-15 1.45e-14;1.18e-14 2.53e-14;1.77e-14 3.88e-14;2.44e-14 5.49e-14;3.18e-14 7.34e-14;3.98e-14 9.4e-14;4.81e-14 1.17e-13;5.65e-14 1.41e-13;8.19e-14 2.24e-13;9.04e-14 2.55e-13;9.89e-14 2.86e-13;1.07e-13 3.18e-13;1.16e-13 3.51e-13;1.24e-13 3.84e-13;1.33e-13 4.18e-13;1.41e-13 4.52e-13];
d=[8.31e-14;3.25e-13;8.00e-12;9.28e-12;7.17e-13;1.25e-12;1.91e-12;2.69e-12;3.57e-12;4.56e-12;5.63e-12;6.78e-12;1.06e-11;1.2e-11;1.34e-11;1.49e-11;1.64e-11;1.79e-11;1.94e-11;2.09e-11];

我的模型为求两个未知数,有20组数据!(真实值20  40)

x1=c\d  求得
x1 =
   19.1771
   40.3242
基本接近

但是用x2=lsqnonneg(c,d)求得
x2 =
         0
   46.7701
相差很大
用lb=[0;0];
>> x3=lsqlin(c,d,[],[],[],[],lb)
Optimization terminated: relative function value changing by less
than OPTIONS.TolFun.
x3 =
    0.4509
    1.3404
相差更大  
请求赐教  谢谢!
发表于 2011-5-4 00:16:19 | 显示全部楼层 来自 英国
Simdroid开发平台
lsqnonneg本来就是这样,doc lsqnonneg里的例题也是这么说的。

至于lsqlin,如果不加限制条件的话结果同左除一样:
>>x3=lsqlin(c,d,[],[],[],[])

x3 =

   19.1771
   40.3242

如果是加了lb,可以考虑把c和d等比例放大:
>>x3=lsqlin(c*1e10,d*1e10,[],[],[],[],[0 0])
Optimization terminated: relative function value changing by less
than OPTIONS.TolFun.

x3 =

   19.1772
   40.3241

评分

1

查看全部评分

回复 不支持

使用道具 举报

 楼主| 发表于 2011-5-4 12:23:35 | 显示全部楼层 来自 四川成都
2# nwcwww
你好! 我刚试了一下,确实是这样,但是为什么要把c,d比例放大呢??具体放大多少倍怎么考虑呢???谢谢  
此外



lsqnonneg




lsqnonneg

lsqnonneg 是不是c,d倍数也放大 结果就接近呢!??
谢谢!
回复 不支持

使用道具 举报

 楼主| 发表于 2011-5-4 12:29:57 | 显示全部楼层 来自 四川成都
2# nwcwww
我的这个模型是有参数.>=0的约束的,我想知道为什么加上约束条件需要把C,d乘个大的系数!谢谢
回复 不支持

使用道具 举报

发表于 2011-5-4 21:06:06 | 显示全部楼层 来自 英国
lsqlin默认算法large scale algorithm本身的问题。
除了放大C和d之外,也可以指定用medium scale algorithm。

>> x3=lsqlin(c,d,[],[],[],[],[0 0],[],[],optimset('largescale','off'))
Optimization terminated.

x3 =

   19.1771
   40.3242


lsqnonneg同样可以放大c和d来获得你想要的结果。
回复 不支持

使用道具 举报

 楼主| 发表于 2011-5-4 21:35:15 | 显示全部楼层 来自 四川成都
5# nwcwww

非常感谢! 因为毕业论文需要用到优化.明白不少!
回复 不支持

使用道具 举报

 楼主| 发表于 2011-5-4 21:42:27 | 显示全部楼层 来自 四川成都
5# nwcwww

同时我想咨询下:
因为要求解的方程组为m×n  (其中m>n)
要看这个方程组的性态的话是不是  用 cond(c)  来求呢??

用lsqlin求的解是全局的还是局部的呢??再次感谢!
回复 不支持

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Simapps系列直播

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-10-4 19:30 , Processed in 0.043631 second(s), 17 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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