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
来源:学生作业帮助网 编辑:六六作业网 时间:2024/12/19 04:19:59
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
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都能算
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
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的时候就算好就行了