Итеративное решение нелинейного уравнения - PullRequest
0 голосов
/ 19 ноября 2018

Я пытаюсь итеративно решить следующее нелинейное уравнение, как показано в приведенной ниже выдержке из «Модели скользящего потока пропеллера для малых беспилотных летательных аппаратов» В. Хана, М. Нахона, Р. Каверли, стр. 3

paper extract

Пока у меня есть следующий код, который, я надеюсь, относительно понятен, хотя у меня есть ощущение, что я использую неправильный метод, пытаясь использовать функцию решения:

% III A Induced Velocity at Propeller Plane
%Data from Table I
Sno = [1,2,3,4,5,6,7] 
radialLoc = [5,20,40,60,80,100,127]                             % r
chord = [12.374,16.230,22.850,28.215,28.902,26.310,13.066]      % c
chordlinePitchAngle = [25,26.5,21.89,14.39,9.80,4.75,6.59]      % theta
zeroLiftAngleOfAttack = [0,0,-9.66,-8.70,-7.40,-10.70,-8.40]    % a0
liftCurveSlope = 6.28                                           % Cla
dragCoefficient = 0.02                                          % Cd

%Other data
angularVel = 1710                                                  % Omega (1710RPM /6710RPM)
numBlades = 2                                                   % N
forwardVel = 0                                                  % Vx

%data to be determined
phi = 0

eqn = angularVel*numBlades*chord(1)*(liftCurveSlope*(chordlinePitchAngle(1)-zeroLiftAngleOfAttack(1)-phi)-dragCoefficient*tan(phi))-8*pi*sin(phi)*(angularVel*radialLoc(1)*tan(phi)-forwardVel)
a = solve(eqn,phi)

любая помощь в решении уравнения будет принята.

примечание: я понимаю, что в итоге получу 7 значений phi, в настоящее время я просто пытаюсь найти первое и перейду оттуда.

Полный текст статьи доступен по адресу https://www.researchgate.net/profile/Waqas_Khan15/publication/264773240_Propeller_Slipstream_Model_for_Small_Unmanned_Aerial_Vehicles/links/54c289670cf2911c7a4922cd/Propeller-Slipstream-Model-for-Small-Unmanned-Aerial-Vehicles.pdf

С сопроводительным документом (ссылка 21) можно ознакомиться по следующей ссылке: (хотя я прочитал соответствующие разделы, и в нем, похоже, отсутствует какая-либо дополнительная соответствующая информация) https://ieeexplore.ieee.org/document/6523983

1 Ответ

0 голосов
/ 19 ноября 2018

Метод решения предназначен для символического решения уравнения.Если вы хотите решить ее численно, вы должны использовать fzero .

Кстати, есть несколько несоответствий (если я правильно понял вашу проблему)

  • При angularVel=0 ваше уравнение станет 0 = 0.

  • В вашем определении eqn есть phi(1), но в вашем случае phi простопеременная, а не массив.

  • Почему для radialLoc всего 6 значений?Я думаю, что один отсутствует.

В любом случае, вот способ сделать это с помощью fzero:

%Other data
angularVel = 1710/6710;   % Just a guess                % Omega (1710RPM /6710RPM)
numBlades = 2;                                          % N
forwardVel = 0;                                         % Vx

%data to be determined
phi_sol = zeros(7,1);

for i=1:6
    % Define the function handle
    eqn = @(phi) angularVel*numBlades*chord(i)*(liftCurveSlope * ...
    (chordlinePitchAngle(i)-zeroLiftAngleOfAttack(i)-phi) - dragCoefficient ...
    * tan(phi))-8*pi*sin(phi)*(angularVel*radialLoc(i)*tan(phi)-forwardVel);

    % Find phi such that eqn(phi) = 0 (uses phi=0 as initial guess for fzero)
    phi_sol(i) = fzero(eqn, 0);
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...