Я пытался повторить первую цифру по этой ссылке https://www.iitk.ac.in/kangal/resources.shtml, но я не уверен, что написал этот код правильно или нет. Пожалуйста, исправьте, где я сделал ошибки. Видимо, есть две разницы:
1.Пик кривой не у родительских значений 2 и 5
2. Начальные значения дочерних решений не из -1. Когда я определяю диапазон x и y от -1, это нарушает фигуру.
eta1=2;
eta2=5;
eta3=10;
x = (0:0.01:100);
y = (0:0.01:100);
for i = 1:length(x)
if x(i) <= 1
fc11(i) = 0.5*(eta1+1)*x(i).^eta1;
else
fc11(i) = (0.5*(eta1+1))./(x(i).^(eta1+2));
end
end
for i = 1:length(x)
if x(i) <= 1
fc21(i) = 0.5*(eta2+1)*x(i).^eta2;
else
fc21(i) = (0.5*(eta2+1))./(x(i).^(eta2+2));
end
end
for i = 1:length(x)
if x(i) <= 1
fc31(i) = 0.5*(eta3+1)*x(i).^eta3;
else
fc31(i) = (0.5*(eta3+1))./(x(i).^(eta3+2));
end
end
for i = 1:length(y)
if y(i) <= 1
fc12(i) = 0.5*(eta1+1)*y(i).^eta1;
else
fc12(i) = (0.5*(eta1+1))./(y(i).^(eta1+2));
end
end
for i = 1:length(y)
if y(i) <= 1
fc22(i) = 0.5*(eta2+1)*y(i).^eta2;
else
fc22(i) = (0.5*(eta2+1))./(y(i).^(eta2+2));
end
end
for i = 1:length(y)
if y(i) <= 1
fc32(i) = 0.5*(eta3+1)*y(i).^eta3;
else
fc32(i) = (0.5*(eta3+1))./(y(i).^(eta3+2));
end
end
linVec = {'-', '-.','--'};
colorVec = {'k', 'b', 'r'};
figure(1)
plot([x y+2],[fc11 fc12],'Color',colorVec{1}, 'LineStyle',linVec{1}, 'LineWidth',2);
hold on
plot([x y+2],[fc21 fc22],'Color',colorVec{2}, 'LineStyle',linVec{2}, 'LineWidth',2);
plot([x y+2],[fc31 fc32],'Color',colorVec{3}, 'LineStyle',linVec{3}, 'LineWidth',2);
hold off
legend('\eta=2', '\eta=5','\eta=10')
title('Probability distribution for creating children solutions of continuous variables')
xlabel('children solution')
ylabel('probability density per child')
xlim([-1 8])
ylim([0 3])