Error with "too many output arguments" using function "gradient"
Show older comments
% %Step 1 Simulate true data
n=1e5;
mu_L=5000;%mm
sigma_L=100;%mm
mu_E=210e3;%N/mm^2
sigma_E=2000;%N/mm^2
mu_I=17500e4;%mm^4
sigma_I=10000;%mm^4
mu_A=136e2;%mm^2
sigma_A=1500;%mm^2
mu_fy=275;%N/mm^2
sigma_fy=30;%N/mm^2
%load
mu_load=2e6;
sigma_load=2e4;
%Simulate the true data
ui=rand(11,n);
uL=ui(1,:);%geometrical prop for experimental resistance data
uE=ui(2,:);%material prop for experimental resistance data
uI=ui(3,:);%geometrical prop for experimental resistance data
uA=ui(4,:);%geometricalprop for experimental resistance data
ufy=ui(5,:);%material prop for experimental resistance data
utL=ui(6,:);%geometrical prop for theoretical resistance data
utE=ui(7,:);%material prop for theoretical resistance data
utI=ui(8,:);%geometrical prop for theoretical resistance data
utA=ui(9,:);%geometricalprop for theoretical resistance data
utfy=ui(10,:);%material prop for theoretical resistance data
uload=ui(11,:);
L_e=mu_L-sqrt(2)*erfcinv(2*uL)*sigma_L;
E_e=mu_E-sqrt(2)*erfcinv(2*uE)*sigma_E;
I_e=mu_I-sqrt(2)*erfcinv(2*uI)*sigma_I;
A_e=mu_A-sqrt(2)*erfcinv(2*uA)*sigma_A;
fy_e=mu_fy-sqrt(2)*erfcinv(2*ufy)*sigma_fy;
L_t=mu_L-sqrt(2)*erfcinv(2*utL)*sigma_L;
E_t=mu_E-sqrt(2)*erfcinv(2*utE)*sigma_E;
I_t=mu_I-sqrt(2)*erfcinv(2*utI)*sigma_I;
A_t=mu_A-sqrt(2)*erfcinv(2*utA)*sigma_A;
fy_t=mu_fy-sqrt(2)*erfcinv(2*utfy)*sigma_fy;
alpha=0.34; %buckling curve b, buckling along y-y axis
Ncr_e=((pi())^2)*E_e.*I_e./(L_e.^2);
lamda_bar_e=sqrt(A_e.*fy_e./Ncr_e);
phi_e=0.5*(1+alpha*(lamda_bar_e-0.2)+lamda_bar_e.^2);
chi_e=1./(phi_e+sqrt(phi_e.^2-lamda_bar_e.^2));
Nb_Rd_e=chi_e.*A_e.*fy_e;
alpha=0.34; %buckling curve b, buckling along y-y axis
Ncr_t=((pi())^2)*E_t.*I_t./(L_t.^2);
lamda_bar_t=sqrt(A_t.*fy_t./Ncr_t);
phi_t=0.5*(1+alpha*(lamda_bar_t-0.2)+lamda_bar_t.^2);
chi_t=1./(phi_t+sqrt(phi_t.^2-lamda_bar_t.^2));
Nb_Rd_t=chi_t.*A_t.*fy_t;
b=sum(Nb_Rd_e.*Nb_Rd_t)/sum(Nb_Rd_t.^2);
plot(Nb_Rd_t,Nb_Rd_e)
%The true b value is used to generate samples
%calculate the characteristic resistance according to eurocode Annex D
error=Nb_Rd_e./(b*Nb_Rd_t);
%Take natural log
delta=log(error);
%estimated value of expected value of error
delta_bar=sum(delta)/n;
%estimated error variance
error_var=(sum(delta-delta_bar)^2)/(n-1);
%coefficient of variance of error
v_delta=sqrt(exp(error_var^2)-1);
%Assessment via the characteristic value
Xd_L=mu_L*(1-1.64*sigma_L/mu_L);%kn chosen as 1.64 due to large no. of tests
Xd_E=mu_E*(1-1.64*sigma_E/mu_E);
Xd_I=mu_I*(1-1.64*sigma_I/mu_I);
Xd_A=mu_A*(1-1.64*sigma_A/mu_A);
Xd_fy=mu_fy*(1-1.64*sigma_fy/mu_fy);
alpha=0.34; %buckling curve b, buckling along y-y axis
Ncr_t=((pi())^2)*E_t.*I_t./(L_t.^2);
lamda_bar_t=sqrt(A_t.*fy_t./Ncr_t);
phi_t=0.5*(1+alpha*(lamda_bar_t-0.2)+lamda_bar_t.^2);
chi_t=1./(phi_t+sqrt(phi_t.^2-lamda_bar_t.^2));
Nb_Rd_t=chi_t.*A_t.*fy_t;
%summation of variance
%partial derivative of L
[pL,pE,pI,pA,pfy]=gradient(Nb_Rd_t);
sum_var=((pL*sigma_L).^2)+((pE*sigma_E).^2)+((pI*sigma_I).^2)+((pA*sigma_A).^2)+((pfy*sigma_fy).^2);
%resistance evaluated using mean values of basic variables
alpha=0.34; %buckling curve b, buckling along y-y axis
Ncr_m=((pi())^2)*mu_E.*mu_I./(mu_L.^2);
lamda_bar_m=sqrt(mu_A.*mu_fy./Ncr_m);
phi_m=0.5*(1+alpha*(lamda_bar_m-0.2)+lamda_bar_m.^2);
chi_m=1./(phi_m+sqrt(phi_m.^2-lamda_bar_m.^2));
Nb_Rd_m=chi_m.*mu_A.*mu_fy;
%coefficient of variation Vrt
v_rt_square=sum_var/(Nb_Rd_m^2);
%coefficient of variation Vr_square
vr_square=v_delta^2+v_rt_square;
%Q
Q=sqrt(log(vr_square+1));
%rk
rk=b*Nb_Rd_m*exp(-1.64*Q-0.5*(Q^2))

end end
I want to evaluate the partial derivative of Nb_Rd_t with respect to five different variables L_t, E_t, I_t, A_t, fy_t. These variables are 1 by 1e5 vectors. I do not understand why there are too many output arguments. Thanks for your answers in advance!!
3 Comments
@allen leung: we cannot run a screenshot. We cannot edit a screenshot. We cannot search a screenshot. We cannot use a screenshot in any meaninglful way.
Please upload your actual code text by clicking the paperclip button.
Also please shows us the complete error message. This means all of the red text.
Jan
on 9 Aug 2018
Prefer to post code as text using the "{} Code" button. This is usually more convenient than a screenshot.
allen leung
on 9 Aug 2018
Accepted Answer
More Answers (0)
Categories
Find more on Smoothing in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!