matlab里面5*x(1)+4*x(2)+3*x(3)+2*x(4)+1*x(5) 用sum怎么写,因为项目有好多

问题描述:

matlab里面5*x(1)+4*x(2)+3*x(3)+2*x(4)+1*x(5) 用sum怎么写,因为项目有好多
比如说有20项,通项是 (20-n)*x(n)
实际可能项数达到50;
我的目的是求一个无约束线性优化问题,这个公式特别大,四项x的如下
function sh=fun1(x)
sh=sum(x.^2)/2*1000000+x(1)^2*0.9*23000 ...
+(x(1)+x(1)+x(2))^2*0.9*21000+(x(1)+x(1)+x(2)+x(1)+x(2)+x(3))^2*0.9*19000+(x(1)+x(1)+x(2)+x(1)+x(2)+x(3)+x(1)+x(2)+x(3)+x(4))^2*0.9*17000 ...
-(x(1)+x(1)+x(2)+x(1)+x(2)+x(3)+sum(x))*150
然后用这个求解的
[x]=fminsearch(@fun1,[1 2 3 4])
好像是个非线性的,不管那么多了,反正fminsearch都能算
1个回答 分类:综合 2014-11-17

问题解答:

我来补答
x=rand(1,20);%定义好x
n=1:20;
y=sum((20*ones(1,20)-n+1).*x(n));
下面的sum 很简单,就是n的一个循环就行了,结果放在y里,每次循环y=y+sum()
y=0;
x=rand(1,20);
for n=1:20
y=y+sum((n*ones(1,n)-n+1).*x(n))^2*0.9*(23000-2000*n);
end
当然,这个y没有加第一项和最后一样,最后再加上去,或者一开始定义y的时候就算好就行了
再问: 我试试哈
再答: 能用就好,我还是受了上一个回答的启发的
 
 
展开全文阅读
剩余:2000
下一页:先解十一题