matlab 优化问题(矛盾方程组)多多指教
c=;d=;
我的模型为求两个未知数,有20组数据!(真实值2040)
用
x1=c\d求得
x1 =
19.1771
40.3242
基本接近
但是用x2=lsqnonneg(c,d)求得
x2 =
0
46.7701
相差很大
用lb=;
>> x3=lsqlin(c,d,[],[],[],[],lb)
Optimization terminated: relative function value changing by less
than OPTIONS.TolFun.
x3 =
0.4509
1.3404
相差更大
请求赐教谢谢! lsqnonneg本来就是这样,doc lsqnonneg里的例题也是这么说的。
至于lsqlin,如果不加限制条件的话结果同左除一样:
>>x3=lsqlin(c,d,[],[],[],[])
x3 =
19.1771
40.3242
如果是加了lb,可以考虑把c和d等比例放大:
>>x3=lsqlin(c*1e10,d*1e10,[],[],[],[],)
Optimization terminated: relative function value changing by less
than OPTIONS.TolFun.
x3 =
19.1772
40.3241 2# nwcwww
你好! 我刚试了一下,确实是这样,但是为什么要把c,d比例放大呢??具体放大多少倍怎么考虑呢???谢谢
此外
lsqnonneg
lsqnonneg
lsqnonneg 是不是c,d倍数也放大 结果就接近呢!??
谢谢! 2# nwcwww
我的这个模型是有参数.>=0的约束的,我想知道为什么加上约束条件需要把C,d乘个大的系数!谢谢 lsqlin默认算法large scale algorithm本身的问题。
除了放大C和d之外,也可以指定用medium scale algorithm。
>> x3=lsqlin(c,d,[],[],[],[],,[],[],optimset('largescale','off'))
Optimization terminated.
x3 =
19.1771
40.3242
lsqnonneg同样可以放大c和d来获得你想要的结果。 5# nwcwww
非常感谢! 因为毕业论文需要用到优化.明白不少! 5# nwcwww
同时我想咨询下:
因为要求解的方程组为m×n(其中m>n)
要看这个方程组的性态的话是不是用 cond(c)来求呢??
用lsqlin求的解是全局的还是局部的呢??再次感谢!
页:
[1]