Использование функции поиска золотого сечения для оптимизации движения снаряда - PullRequest
0 голосов
/ 31 октября 2019

Я установил метод золотого поиска, чтобы определить оптимальный угол и максимальное расстояние при любой заданной пользователем начальной скорости для задачи движения снаряда.

сначала я создал имя функции

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 ...

Кроме того, у меня возникают проблемы с пониманием, как вызывать эту функцию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...