Error using vertcat in fsolve
2 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Innocente Andrea Contalbo
am 4 Apr. 2019
Bearbeitet: Innocente Andrea Contalbo
am 4 Apr. 2019
Hello, I have tried to run this code but I get a vertcat error. The goal is to solve a system of 2 non linear vectorial equations by using fsolve and finding 'vi' and 'a'.
%% Data
R=5.5;
n=1000;
drdr=1/n;
drdr=0.1:drdr:1;
dr=R/n;
r=R*drdr;
c=0.3;
rho=1.225;
theta_0=0.2618; %collective pitch [rad]
theta_twist=0.0349; %[rad]
theta_r=theta_0 + r.*theta_twist; %[rad]
b=4;
V_tip=205;
Omega=V_tip/R; % [rad/s]
Vc=5;
%% Swirl
phi_swirl=@(vi,a) atan((vi + Vc)./((1-a).*Omega.*r));
U=@(vi,a) sqrt(((1-a).*Omega.*r).^2 + (vi + Vc).^2);
alpha_swirl=@(vi,a) theta_r - atan((vi + Vc)./((1-a).*Omega.*r));
G_swirl=@(vi,a) 2./pi.*acos(exp(-b./2.*(1-drdr)./(drdr.*(atan((vi+Vc)./(((1-a).*Omega.*r)))))));
F_swirl1=@(vi,a) 0.5.*b.*rho.*U(vi,a).^2.*2.*pi.*alpha_swirl(vi,a).*cos(phi_swirl(vi,a)).*c.*dr ...
-4.*pi.*rho.*r.*vi.*(vi+Vc).*G_swirl(vi,a).*dr;
F_swirl2= @(vi,a) 0.5.*b.*rho.*U(vi,a).^2.*(2.*pi.*alpha_swirl(vi,a).*sin(phi_swirl(vi,a))+cdr.*cos(phi_swirl(vi,a))).*c.*r.*dr...
-4.*pi.*Omega.*a.*(vi+Vc).*r.^3.*dr;
F_swirl=@(vi,a) [F_swirl1;F_swirl2];
Initialguess=[zeros(1,numel(drdr));zeros(1,numel(drdr))];
vi_a=fsolve(F_swirl,Initialguess);
The error is the following:
Error using vertcat
Nonscalar arrays of function handles are not allowed; use cell arrays instead.
Error in Untitled2>@(vi,a)[F_swirl1;F_swirl2]
Error in fsolve (line 242)
fuser = feval(funfcn{3},x,varargin{:});
Error in Untitled2 (line 32)
vi_a=fsolve(F_swirl,Initialguess);
Caused by:
Failure in initial objective function evaluation. FSOLVE cannot continue.
Any idea on how to solve it?
0 Kommentare
Antworten (0)
Siehe auch
Kategorien
Mehr zu Systems of Nonlinear Equations finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!