I've been working on a file in matlab and it says that I have not enough input arguments. It looks strange because I don't see what I should add. Does anybody understands why it shows this ?
Here are the code. Thank you very much for your help.
WHat I get :
Not enough input arguments.
Error in Multi_Solverss/equ (line 7)
values(1)=-ss(7)+ PHI(1)*ss(1)^-VARIOUS(2)*ss(16);
Error in Multi_Solverss (line 45)
rez=fsolve(equ,x0,options);
Here is a solver for a system of non-linear equations, where the equations are dfined by equ that you can find after.
function liste = Multi_Solverss(GAMMA,ALPHA,BETA,PHI,VARIOUS)
N = length(ALPHA);
x0=ones(1,5*N+2);
options=optimset('display','off','MaxFunEvals',3000,'MaxIter',3000);
rez=fsolve(equ,x0,options);
liste = rez;
end
Here is the system equations.
function values = equ(ss)
%Conso
values(1)=-ss(7)+ PHI(1)*ss(1)^-VARIOUS(2)*ss(16);
values(2)=-ss(8)+ PHI(2)*ss(2)^-VARIOUS(2)*ss(16);
values(3)=-ss(9)+ PHI(3)*ss(3)^-VARIOUS(2)*ss(16);
%Labour supply
values(4)=-ss(4)+(ss(10)/ss(17))^VARIOUS(1)*ss(16)^VARIOUS(5);
values(5)=-ss(5)+(ss(11)/ss(17))^VARIOUS(1)*ss(16)^VARIOUS(5);
values(6)=-ss(6)+(ss(12)/ss(17))^VARIOUS(1)*ss(16)^VARIOUS(5);
%L^(1+VARIOUS(1)) = L_A^(1+VARIOUS(1)) + L_B^(1+VARIOUS(1)) + L_C^(1+VARIOUS(1));
values(7)=-ss(17)^(1+VARIOUS(1)) + ss(10)^(1+VARIOUS(1)) + ss(11)^(1+VARIOUS(1)) + ss(12)^(1+VARIOUS(1));
%1 = PHI_A*P_A^(1-VARIOUS(2)) + PHI_B*P_B^(1-VARIOUS(2)) + PHI_C*P_C^(1-VARIOUS(2));
values(8)=-1 + PHI(1)*ss(1)^(1-VARIOUS(2)) + PHI(2)*ss(2)^(1-VARIOUS(2)) + PHI(3)*ss(3)^(1-VARIOUS(2));
%L_A = BETA(1)*(P_A/W_A)*Y_A;
values(9)=-ss(10) + BETA(1)*(ss(1)/ss(4))*ss(13);
%L_B = BETA(2)*(P_B/W_B)*Y_B;
values(10)= -ss(11) + BETA(2)*(ss(2)/ss(5))*ss(14);
%L_C = BETA(3)*(P_C/W_C)*Y_C;
values(11)=-ss(12) + BETA(3)*(ss(3)/ss(6))*ss(15);
% 1 = (VARIOUS(3)*ALPHA(1)/(1-VARIOUS(3)*(1-VARIOUS(4))))^ALPHA(1)*(BETA(1)*ss(1)/ss(3))^(BETA(1))*GAMMA(1)^GAMMA(1)*(GAMMA(4)*ss(1)/ss(2))^GAMMA(4));
values(12)=- 1 + (VARIOUS(3)*ALPHA(1)/(1-VARIOUS(3)*(1-VARIOUS(4))))^ALPHA(1)*(BETA(1)*ss(1)/ss(4))^(BETA(1))*GAMMA(1)^GAMMA(1)*(GAMMA(4)*ss(1)/ss(2))^GAMMA(4)*(GAMMA(7)*ss(1)/ss(3))^(GAMMA(7));
% 1 = (VARIOUS(3)*ALPHA(1)/(1-VARIOUS(3)*(1-VARIOUS(4))))^ALPHA(1)*(BETA(1)*ss(1)/ss(3))^(BETA(1))*GAMMA(1)^GAMMA(1)*(GAMMA(4)*ss(1)/ss(2))^GAMMA(4));
values(13)=- 1 + (VARIOUS(3)*ALPHA(2)/(1-VARIOUS(3)*(1-VARIOUS(4))))^ALPHA(2)*(BETA(2)*ss(2)/ss(5))^(BETA(2))*GAMMA(5)^GAMMA(5)*(GAMMA(2)*ss(2)/ss(1))^GAMMA(2)*(GAMMA(8)*ss(2)/ss(3))^(GAMMA(8));
%Production function for sector C
values(14)= - 1 + (VARIOUS(3)*ALPHA(3)/(1-VARIOUS(3)*(1-VARIOUS(4))))^ALPHA(3)*(BETA(3)*ss(3)/ss(6))^(BETA(3))*GAMMA(9)^GAMMA(9)*(GAMMA(3)*ss(3)/ss(1))^GAMMA(3)*(GAMMA(6)*ss(3)/ss(2))^(GAMMA(6));
% W_A*L_A/(BETA(1)*P_A) = C_A + VARIOUS(4)*(VARIOUS(3)*ALPHA(1)/(1-VARIOUS(3)*(1-VARIOUS(4))))*W_A*L_A/(BETA(1)*P_A)+GAMMA(1)*W_A*L_A/(BETA(1)*P_A)+GAMMA(2)*P_B/P_A*W_B*L_B/(BETA(2)*P_B);
values(15)=- ss(13) + ss(7) + VARIOUS(4)*(VARIOUS(3)*ALPHA(1)/(1-VARIOUS(3)*(1-VARIOUS(4))))*ss(13)+GAMMA(1)*ss(13)+GAMMA(2)*ss(2)/ss(1)*ss(14)+GAMMA(3)*ss(3)/ss(1)*ss(15);
% W_A*L_A/(BETA(1)*P_A) = C_A + VARIOUS(4)*(VARIOUS(3)*ALPHA(1)/(1-VARIOUS(3)*(1-VARIOUS(4))))*W_A*L_A/(BETA(1)*P_A)+GAMMA(1)*W_A*L_A/(BETA(1)*P_A)+GAMMA(2)*P_B/P_A*W_B*L_B/(BETA(2)*P_B);
values(16)=- ss(14) + ss(8) + VARIOUS(4)*(VARIOUS(3)*ALPHA(2)/(1-VARIOUS(3)*(1-VARIOUS(4))))*ss(14)+GAMMA(5)*ss(14)+GAMMA(4)*ss(1)/ss(2)*ss(13)+GAMMA(6)*ss(3)/ss(2)*ss(15);
% Resource constraint for sector C
values(17)=- ss(15) + ss(9) + VARIOUS(4)*(VARIOUS(3)*ALPHA(3)/(1-VARIOUS(3)*(1-VARIOUS(4))))*ss(15)+GAMMA(9)*ss(15)+GAMMA(7)*ss(1)/ss(3)*ss(13)+GAMMA(8)*ss(2)/ss(3)*ss(14);
end

 採用された回答

Yongjian Feng
Yongjian Feng 2021 年 11 月 4 日

0 投票

Maybe you need to pass PHI and VARIOUS into you equ function as well?

8 件のコメント

Côme Poirier
Côme Poirier 2021 年 11 月 4 日
To avoid this issue I changed the program using nested loops but I get the same message :
function liste = Multi_Solverss(GAMMA,ALPHA,BETA,PHI,VARIOUS)
N = length(ALPHA);
function values = equ(ss)
for i=1:N
%Conso
values(i)=-ss(2*N+i)+ PHI(i)*ss(i)^-VARIOUS(2)*ss(5*N+1);
%Labour supply
values(N+i)=-ss(N+i)+(ss(3*N+i)/ss(5*N+2))^VARIOUS(1)*ss(5*N+1)^VARIOUS(5);
%Labour demand
values(2*N+i)=-ss(3*N+i) + BETA(1)*(ss(i)/ss(N+i))*ss(4*N+i);
end
%L^(1+VARIOUS(1)) = L_A^(1+VARIOUS(1)) + L_B^(1+VARIOUS(1)) + L_C^(1+VARIOUS(1));
values(7)=-ss(17)^(1+VARIOUS(1)) + ss(10)^(1+VARIOUS(1)) + ss(11)^(1+VARIOUS(1)) + ss(12)^(1+VARIOUS(1));
%1 = PHI_A*P_A^(1-VARIOUS(2)) + PHI_B*P_B^(1-VARIOUS(2)) + PHI_C*P_C^(1-VARIOUS(2));
values(8)=-1 + PHI(1)*ss(1)^(1-VARIOUS(2)) + PHI(2)*ss(2)^(1-VARIOUS(2)) + PHI(3)*ss(3)^(1-VARIOUS(2));
% 1 = (VARIOUS(3)*ALPHA(1)/(1-VARIOUS(3)*(1-VARIOUS(4))))^ALPHA(1)*(BETA(1)*ss(1)/ss(3))^(BETA(1))*GAMMA(1)^GAMMA(1)*(GAMMA(4)*ss(1)/ss(2))^GAMMA(4));
values(12)=- 1 + (VARIOUS(3)*ALPHA(1)/(1-VARIOUS(3)*(1-VARIOUS(4))))^ALPHA(1)*(BETA(1)*ss(1)/ss(4))^(BETA(1))*GAMMA(1)^GAMMA(1)*(GAMMA(4)*ss(1)/ss(2))^GAMMA(4)*(GAMMA(7)*ss(1)/ss(3))^(GAMMA(7));
% 1 = (VARIOUS(3)*ALPHA(1)/(1-VARIOUS(3)*(1-VARIOUS(4))))^ALPHA(1)*(BETA(1)*ss(1)/ss(3))^(BETA(1))*GAMMA(1)^GAMMA(1)*(GAMMA(4)*ss(1)/ss(2))^GAMMA(4));
values(13)=- 1 + (VARIOUS(3)*ALPHA(2)/(1-VARIOUS(3)*(1-VARIOUS(4))))^ALPHA(2)*(BETA(2)*ss(2)/ss(5))^(BETA(2))*GAMMA(5)^GAMMA(5)*(GAMMA(2)*ss(2)/ss(1))^GAMMA(2)*(GAMMA(8)*ss(2)/ss(3))^(GAMMA(8));
%Production function for sector C
values(14)= - 1 + (VARIOUS(3)*ALPHA(3)/(1-VARIOUS(3)*(1-VARIOUS(4))))^ALPHA(3)*(BETA(3)*ss(3)/ss(6))^(BETA(3))*GAMMA(9)^GAMMA(9)*(GAMMA(3)*ss(3)/ss(1))^GAMMA(3)*(GAMMA(6)*ss(3)/ss(2))^(GAMMA(6));
% W_A*L_A/(BETA(1)*P_A) = C_A + VARIOUS(4)*(VARIOUS(3)*ALPHA(1)/(1-VARIOUS(3)*(1-VARIOUS(4))))*W_A*L_A/(BETA(1)*P_A)+GAMMA(1)*W_A*L_A/(BETA(1)*P_A)+GAMMA(2)*P_B/P_A*W_B*L_B/(BETA(2)*P_B);
values(15)=- ss(13) + ss(7) + VARIOUS(4)*(VARIOUS(3)*ALPHA(1)/(1-VARIOUS(3)*(1-VARIOUS(4))))*ss(13)+GAMMA(1)*ss(13)+GAMMA(2)*ss(2)/ss(1)*ss(14)+GAMMA(3)*ss(3)/ss(1)*ss(15);
% W_A*L_A/(BETA(1)*P_A) = C_A + VARIOUS(4)*(VARIOUS(3)*ALPHA(1)/(1-VARIOUS(3)*(1-VARIOUS(4))))*W_A*L_A/(BETA(1)*P_A)+GAMMA(1)*W_A*L_A/(BETA(1)*P_A)+GAMMA(2)*P_B/P_A*W_B*L_B/(BETA(2)*P_B);
values(16)=- ss(14) + ss(8) + VARIOUS(4)*(VARIOUS(3)*ALPHA(2)/(1-VARIOUS(3)*(1-VARIOUS(4))))*ss(14)+GAMMA(5)*ss(14)+GAMMA(4)*ss(1)/ss(2)*ss(13)+GAMMA(6)*ss(3)/ss(2)*ss(15);
% Resource constraint for sector C
values(17)=- ss(15) + ss(9) + VARIOUS(4)*(VARIOUS(3)*ALPHA(3)/(1-VARIOUS(3)*(1-VARIOUS(4))))*ss(15)+GAMMA(9)*ss(15)+GAMMA(7)*ss(1)/ss(3)*ss(13)+GAMMA(8)*ss(2)/ss(3)*ss(14);
end
x0=ones(1,5*N+2);
disp(equ(x0));
options=optimset('display','off','MaxFunEvals',3000,'MaxIter',3000);
rez=fsolve(equ,x0,options);
liste = rez;
end
Yongjian Feng
Yongjian Feng 2021 年 11 月 4 日
What are the inputs you used for GAMMA, ALPHA, BETA, PHI, and VARIOUS?
Côme Poirier
Côme Poirier 2021 年 11 月 4 日
These are vectors that are well defined in my program. For example, ALPHA = [0.3, 0.3, 0.3]
Yongjian Feng
Yongjian Feng 2021 年 11 月 4 日
Post one sample of everything please. Need to run your code to check.
Côme Poirier
Côme Poirier 2021 年 11 月 4 日
Sure :
ALPHA = [0.3, 0.3, 0.3]
BETA = [0.2, 0.2, 0.2]
PHI = [0.45, 0.45, 0.45]
GAMMA = [0.48, 0.01, 0.01, 0.01,0.48, 0.01,0.01, 0.01,0.48]
VARIOUS = [-0.1, 1.2, 0.987, 0.02, 0.99]
Yongjian Feng
Yongjian Feng 2021 年 11 月 4 日
equ is a function. See the change in the 3rd last line.
function liste = Multi_Solverss(GAMMA,ALPHA,BETA,PHI,VARIOUS)
N = length(ALPHA);
function values = equ(ss)
for i=1:N
%Conso
values(i)=-ss(2*N+i)+ PHI(i)*ss(i)^-VARIOUS(2)*ss(5*N+1);
%Labour supply
values(N+i)=-ss(N+i)+(ss(3*N+i)/ss(5*N+2))^VARIOUS(1)*ss(5*N+1)^VARIOUS(5);
%Labour demand
values(2*N+i)=-ss(3*N+i) + BETA(1)*(ss(i)/ss(N+i))*ss(4*N+i);
end
%L^(1+VARIOUS(1)) = L_A^(1+VARIOUS(1)) + L_B^(1+VARIOUS(1)) + L_C^(1+VARIOUS(1));
values(7)=-ss(17)^(1+VARIOUS(1)) + ss(10)^(1+VARIOUS(1)) + ss(11)^(1+VARIOUS(1)) + ss(12)^(1+VARIOUS(1));
%1 = PHI_A*P_A^(1-VARIOUS(2)) + PHI_B*P_B^(1-VARIOUS(2)) + PHI_C*P_C^(1-VARIOUS(2));
values(8)=-1 + PHI(1)*ss(1)^(1-VARIOUS(2)) + PHI(2)*ss(2)^(1-VARIOUS(2)) + PHI(3)*ss(3)^(1-VARIOUS(2));
% 1 = (VARIOUS(3)*ALPHA(1)/(1-VARIOUS(3)*(1-VARIOUS(4))))^ALPHA(1)*(BETA(1)*ss(1)/ss(3))^(BETA(1))*GAMMA(1)^GAMMA(1)*(GAMMA(4)*ss(1)/ss(2))^GAMMA(4));
values(12)=- 1 + (VARIOUS(3)*ALPHA(1)/(1-VARIOUS(3)*(1-VARIOUS(4))))^ALPHA(1)*(BETA(1)*ss(1)/ss(4))^(BETA(1))*GAMMA(1)^GAMMA(1)*(GAMMA(4)*ss(1)/ss(2))^GAMMA(4)*(GAMMA(7)*ss(1)/ss(3))^(GAMMA(7));
% 1 = (VARIOUS(3)*ALPHA(1)/(1-VARIOUS(3)*(1-VARIOUS(4))))^ALPHA(1)*(BETA(1)*ss(1)/ss(3))^(BETA(1))*GAMMA(1)^GAMMA(1)*(GAMMA(4)*ss(1)/ss(2))^GAMMA(4));
values(13)=- 1 + (VARIOUS(3)*ALPHA(2)/(1-VARIOUS(3)*(1-VARIOUS(4))))^ALPHA(2)*(BETA(2)*ss(2)/ss(5))^(BETA(2))*GAMMA(5)^GAMMA(5)*(GAMMA(2)*ss(2)/ss(1))^GAMMA(2)*(GAMMA(8)*ss(2)/ss(3))^(GAMMA(8));
%Production function for sector C
values(14)= - 1 + (VARIOUS(3)*ALPHA(3)/(1-VARIOUS(3)*(1-VARIOUS(4))))^ALPHA(3)*(BETA(3)*ss(3)/ss(6))^(BETA(3))*GAMMA(9)^GAMMA(9)*(GAMMA(3)*ss(3)/ss(1))^GAMMA(3)*(GAMMA(6)*ss(3)/ss(2))^(GAMMA(6));
% W_A*L_A/(BETA(1)*P_A) = C_A + VARIOUS(4)*(VARIOUS(3)*ALPHA(1)/(1-VARIOUS(3)*(1-VARIOUS(4))))*W_A*L_A/(BETA(1)*P_A)+GAMMA(1)*W_A*L_A/(BETA(1)*P_A)+GAMMA(2)*P_B/P_A*W_B*L_B/(BETA(2)*P_B);
values(15)=- ss(13) + ss(7) + VARIOUS(4)*(VARIOUS(3)*ALPHA(1)/(1-VARIOUS(3)*(1-VARIOUS(4))))*ss(13)+GAMMA(1)*ss(13)+GAMMA(2)*ss(2)/ss(1)*ss(14)+GAMMA(3)*ss(3)/ss(1)*ss(15);
% W_A*L_A/(BETA(1)*P_A) = C_A + VARIOUS(4)*(VARIOUS(3)*ALPHA(1)/(1-VARIOUS(3)*(1-VARIOUS(4))))*W_A*L_A/(BETA(1)*P_A)+GAMMA(1)*W_A*L_A/(BETA(1)*P_A)+GAMMA(2)*P_B/P_A*W_B*L_B/(BETA(2)*P_B);
values(16)=- ss(14) + ss(8) + VARIOUS(4)*(VARIOUS(3)*ALPHA(2)/(1-VARIOUS(3)*(1-VARIOUS(4))))*ss(14)+GAMMA(5)*ss(14)+GAMMA(4)*ss(1)/ss(2)*ss(13)+GAMMA(6)*ss(3)/ss(2)*ss(15);
% Resource constraint for sector C
values(17)=- ss(15) + ss(9) + VARIOUS(4)*(VARIOUS(3)*ALPHA(3)/(1-VARIOUS(3)*(1-VARIOUS(4))))*ss(15)+GAMMA(9)*ss(15)+GAMMA(7)*ss(1)/ss(3)*ss(13)+GAMMA(8)*ss(2)/ss(3)*ss(14);
end
x0=ones(1,5*N+2);
disp(equ(x0));
options=optimset('display','off','MaxFunEvals',3000,'MaxIter',3000);
rez=fsolve(@equ,x0,options); %%% HERE IS THE CHANGE
liste = rez;
end
Côme Poirier
Côme Poirier 2021 年 11 月 4 日
Thanks so much ! It works now ! Thank you !
Yongjian Feng
Yongjian Feng 2021 年 11 月 4 日
Cool. Accept the answer please if it works.

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File ExchangeMathematics についてさらに検索

タグ

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by