Я установил метод золотого поиска, чтобы определить оптимальный угол и максимальное расстояние при любой заданной пользователем начальной скорости для задачи движения снаряда.
сначала я создал имя функции
function [maxDist, thetaOpt] = SolutionL3P1(v,x)
errormax = 0.00001;
a = 0:0.1:90;
plot(a,x(a))
%this is the golden ratio
R = (1 + sqrt(5))/2;
%bounds
aL = 0.1;
aU =90;
d = (R-1)*(aU-aL);
a1 = aL + d;
a2 = aU - d;
if (x(a2)>x(a1))
aOpt = a1;
end
et = ((2-R) * abs(aU - aL) / aOpt) * 100;
while (1)
if(et<errormax)
break
end
if (x(a2) > x(a1))
aOpt = a2;
aU = a1;
d = (R - 1)*(aU - aL);
a1 = aL + d;
a2 = aU - d;
else
aOpt = a1;
aL = a2
d = (R-1)*(aU - aL);
a1 = aL + d;
a2 = aU - d;
end
et = ((2-R)*abs(aU-aL)/aOpt)*100
end
maxDist = x(aOpt);
thetaOpt = aOpt;
hold on
plot(thetaOpt, maxDist, 'ro')
hold off
Я ожидаю, что он покажет thetaOpt = 45
и maxDist
= некоторое число, основанное на начальной скорости, введенной пользователем v ...
Кроме того, у меня возникают проблемы с пониманием, как вызывать эту функцию.