matlab 迭代?x0=(sum(r*w*xi)/di)/(sum(r*w*xi)y0=(sum(

发布时间:2021-02-26 01:54:14

matlab 迭代?x0=(sum(r*w*xi)/di)/(sum(r*w*xi)y0=(sum(r*w*yi)/di)/(sum(r*w*xi)其中 r wi,yi,xi已知,其中di=sqrt((x0-xi)^2+(y0-yi)^2)我这个是重心法求费用的 求偏导得到的,给出初始的x0,y0,利用迭代法怎么利用matlab修正x0,y0,并输出结果求程序代码,刚刚接触不太懂 自己写了 老是出

网友回答

%迭代公式 x(k+1)=(sum(r*w*xi)/di(k))/(sum(r*w*xi));
% y(k+1)=(sum(r*w*yi)/di(k))/(sum(r*w*xi));
% di(k+1)=sqrt((x(k)-xi)^2+(y(k)-yi)^2);
r=0.8;
w=[6398014.98,6525900.99,3752178.53,1400985.31,2495271.42,1506266.52,1953408.82];
xi=[117.00,118.05,117.13,116.29,115.97,118.03,118.49]; yi=[36.65,36.78,36.18,37.45,36.45,37.36,37.46]; n=0;W=0.01 % W 为x,y的迭代精度假设为0.01x0=117.34;y0=36.75; %初值
while (1)
di=sqrt((x0-xi).^2+(y0-yi).^2);
x=(sum(r*w.*xi./di))./(sum(r.*w.*xi))
y=(sum(r*w.*yi./di))./(sum(r.*w.*xi))
if abs(x-x0)>W && abs(y-y0)>W %若不满足迭代终止条件则继续迭代
x0=x;y0=y;n=n+1;
continue;
elsedisp('迭代次数为:')
ndisp('x的迭代值为:');
xbreak; %满足后输出结果并退出
endend%问题还是有些不清楚的,sum那个地方,我改了一下,不知道是你要表达的意思
以上问题属网友观点,不代表本站立场,仅供参考!