Fsolve says 'equation solved at initial point' -- how to fix?
조회 수: 12 (최근 30일)
이전 댓글 표시
Hello everyone,
I would like to ask a question regarding some code I am working on at the moment. This is my first time posting on this site, so I do apologise if I fail to follow all conventions and/or etiquette, and thank you very much for your patience and help!
The code below is supposed to provide the solution to a system of 562 non-linear simultaneous equations. Put simply, my question is: why does MATLAB say that the '[e]quation [was] solved at [the] initial point' (see output below)? And how can I get it to perform the 'usual' iterative routine until a solution is found?
Norm of First-order Trust-region
Iteration Func-count f(x) step optimality radius
0 563 1.26012e-25 5.34e-10 1
Equation solved at initial point.
fsolve completed because the vector of function values at the initial point
is near zero as measured by the value of the function tolerance, and
the problem appears regular as measured by the gradient.
As I am still relatively new to MATLAB, I do not understand the intricacies of the fsolve algorithm deeply enough to understand where the issue lies -- which is why I thought I would try and soak up some of the wisdom here. I tried checking the code (variables, equations, etc.) for possible mistakes, but it seems to me that the code is correct as is. I am attaching the whole code anyway, both the main file and the function (thus probably breaching etiquette already!) so that sharper eyes may spot mistakes where I do not see any. Any leads, anyone? Thank you all very much!
Mark
clear all;
close all;
A = [1 1];
B = [0 0];
C = [1 1 1 1 1 1 1 1 1 1 1 1];
D = [1 1 1 1 0 1 1 1 1 1 1 0];
E = [1 1 1 1 1 1 1 1 1 1 1 0];
F = [0 1 0 0 0 1 1 1 1 0 0 0];
G = [0 0 1 1 1 1 1 1 1 0 0 0];
H = [1 0 0 0 0 0 0 0 0 1 1 1];
I = [1 0 1 1 1 0 0 0 0 1 1 1];
J = [1 1 0 0 0 0 0 0 0 1 1 1];
K = [0 0 1 1 0 1 1 1 1 0 0 0];
L = [0 0 0 0 1 1 1 1 1 1 1 0];
M = [0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75];
N = [0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75];
O = [0 0 0 0 0 0 0 0 0 0 0 0];
P = [0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 0];
Q = [0 0 0 0 0 0 0 0 0 0 0 0];
R = [1 1 1 1 1 1 1 1];
S = [0.90 0.90 0.90 0.90 0.90 0.90 0.90 0.90; 0.90 0.90 0.90 0.90 0.90 0.90 0.90 0.90; 0 0 0 0 0 0 0 0; 0 0 0 0 0 0 0 0; 0 0 0 0 0 0 0 0; 0 0 0 0 0 0 0 0; 0 0 0 0 0 0 0 0;
0 0 0 0 0 0 0 0; 0 0 0 0 0 0 0 0; 0 0 0 0 0 0 0 0; 0 0 0 0 0 0 0 0; 0 0 0 0 0 0 0 0];
T = [1.50 1.50 1.50 1.50 1.50 1.50 1.50 1.50];
U = 0.025;
V = 0;
W = 0.05;
X = 0.50;
Y = 0.10;
Z = 0.10;
AA = [1177,2088];
AB = [200 25 2 0 0 100 200 200 0 20 0 0; 0 100 0 6 0 95 200 20 20 20 30 0; 0 0 20 0 0 82 0 0 0 0 0 0; 0 0 0 30 0 0 58 0 0 0 0 0; 0 0 0 0 0 0 0 0 0 0 0 0;
10 10 0 0 0 20 5 10 0 20 20 0; 0 15 0 0 0 0 5 0 10 0 80 40; 20 40 10 20 0 10 0 50 30 100 25 0; 0 20 0 10 4 0 10 0 100 75 200 30; 94 29 28 26 0 15 150 60 34 300 508 0;
0 113 0 50 12 0 120 0 70 400 700 175; 0 0 0 0 0 0 0 0 0 0 0 0];
AC = [1 1 1 1 1 1 1 1 1 1 1 1; 1 1 1 1 1 1 1 1 1 1 1 1; 1 1 1 1 1 1 1 1 1 1 1 1; 1 1 1 1 1 1 1 1 1 1 1 1; 1 1 1 1 1 1 1 1 1 1 1 1; 1 1 1 1 1 1 1 1 1 1 1 1;
1 1 1 1 1 1 1 1 1 1 1 1; 1 1 1 1 1 1 1 1 1 1 1 1; 1 1 1 1 1 1 1 1 1 1 1 1; 1 1 1 1 1 1 1 1 1 1 1 1; 1 1 1 1 1 1 1 1 1 1 1 1; 1 1 1 1 1 1 1 1 1 1 1 1];
AD = [0 0 0 0 0 0 0 0 0 0 0 0; 0 0 0 0 0 0 0 0 0 0 0 0; 0 0 0 0 0 0 0 0 0 0 0 0; 0 0 0 0 0 0 0 0 0 0 0 0; 0 0 0 0 0 0 0 0 0 0 0 0; 0 0 0 0 0 0 0 0 0 0 0 0;
0 0 0 0 0 0 0 0 0 0 0 0; 0 0 0 0 10 15 30 10 18 30 125 0; 0 0 0 0 20 50 70 20 10 140 180 50; 0 0 0 0 10 25 40 10 5 100 75 0; 0 0 0 0 10 10 10 10 5 30 20 50;
0 0 0 0 0 0 0 0 0 0 0 0];
AE = [800 350; 153 147; 36 54; 36 54; 3 22; 9 71; 16 74; 2 48; 2 73; 84 461; 32 478; 4 256];
AF = ["RNT = Rents" "MLT = Melt" "FL = Fuel"];
AG = [0 0 0; 9 21 5; 0 0 0; 0 0 0; 0 0 0; 13 14 6; 5 6 6; 56 58 28; 50 51 50; 0 0 0; 0 0 0; 0 0 0];
AH = [0 0 0; 0 0 0; 5 13 3; 16 39 9; 0 0 0; 16 16 8; 8 8 8; 8 8 4; 3 3 3; 0 0 0; 0 0 0; 0 0 0];
AI = [1 1 1 1 1 1 1 0];
AJ = [0 0 14 15 1.2 15.8 8 0; 10 2 5 6 0.6 7.4 1 0; 0 0 0 0 0 0 0 0; 0 0 0 0 0 0 0 0; 0 0 0 0 0 0 0 0; 25 7 3 3 0.3 3.7 8 0; 0 0 0 0 0.3 3.7 30 0; 14 4 6 6 0.1 1.9 18 0;
0 0 3 4 0.4 4.6 11 0; 22 6 2 2 0.3 4.7 5 0; 0 0 2 3 0.2 1.8 20 0; 0 0 0 0 0 0 0 0];
AK = [0 0 47 47 4.4 57.6 31 0; 30 7 15 15 1.4 17.6 3 0; 0 0 0 0 0 0 0 0; 0 0 0 0 0 0 0 0; 0 0 0 0 0 0 0 0; 34 9 4 3 0.3 3.7 8 0; 0 0 0 0 0.3 3.7 31 0; 19 5 7 7 0.2 2.8 18 0;
0 0 3 4 0.4 4.6 11 0; 8 2 1 0 0.1 0.9 1 0; 0 0 1 1 0.1 0.9 6 0; 0 0 0 0 0 0 0 0];
AL = [0 0 16 16 1.6 21.4 12 0; 10 2 3 4 0.4 4.6 1 0; 0 0 0 0 0 0 0 0; 0 0 0 0 0 0 0 0; 0 0 0 0 0 0 0 0; 23 6 2 1 0.1 1.9 4 0; 0 0 0 0 0.2 2.8 30 0; 13 4 3 3 0.1 0.9 9 0;
0 0 1 2 0.4 4.6 11 0; 26 7 1 2 0.3 3.7 3 0; 0 0 1 2 0.2 2.8 26 0; 0 0 0 0 0 0 0 0];
AM = [875 230 181 181 12 147 97 187; 119 31 105 107 9 119 20 101; 0 0 0 0 0 0 0 13; 0 0 0 0 0 0 0 48; 0 0 0 0 0 0 0 0; 246 64 40 40 4 53 88 92; 0 0 0 0 9 114 838 49;
158 42 93 95 2 22 241 125; 0 0 40 40 10 125 278 77; 349 91 37 38 5 66 70 13; 0 0 57 58 6 69 757 9; 0 0 0 0 0 0 0 0];
AN = [0 0 0 0 0 0 0 0; 0 0 0 0 0 0 0 0; 0 0 0 0 0 0 0 0; 0 0 0 0 0 0 0 0; 0 0 0 0 0 0 0 0; 0 0 0 0 0 0 0 0; 0 0 0 0 0 0 0 0; 0 0 0 0 0 0 0 0; 0 0 0 0 2 23 25 0;
0 0 0 0 0 0 0 0; 0 0 0 0 2 23 25 0; 0 0 0 0 0 0 0 0];
AO = [6400 650; 400 100; 200 40; 100 20; 10 10; 70 70; 50 30; 10 30; 10 60; 700 500; 260 500; 10 80];
AP = [0 151 0 0 0 187 152 802 1361 0 0 0];
AQ = [0 0 125 248 141 217 232 113 82 0 0 0];
AR = [2349 814 240 375 141 602 1138 490 415 2080 2873 505];
FO0 = [875 162 90 143 0 0 0 0 0 0 0 0];
AT = [1000 50 100 50 0 0 0 0 0 0 0 0];
AU = [0 0 0 0 625 1250 1875 625 475 3750 5000 2000];
AV = [1 1 1 1 1 1 1 1 1 1 1 1];
AW = [0 6 0 0 0 14 10 60 110 0 0 0];
AX = [0 0 0 0 0 0 0 0 0 0 0 0];
AY0 = [0 0 0 0 0 0 0 238 790 265 395 0];
AZ0 = [0 0 0 0 50 100 150 50 38 300 400 100];
BA = [0 0 0 0 50 100 150 50 38 300 400 100];
BB = [0 0 0 0 0 0 0 0 0 0 0 505];
BC = [2025 462 180 233 125 280 390 150 151 1145 1310 260];
BD = [1 1 1 1 1 1 0 0];
BE = [911 54 269 36 0 0 0 0];
CD = [0 0 0 100 0 150 400 0];
BG = [0 0 0 100 0 150 400 0];
BH = [0 0 0 258 0 188 70.4 0];
BI = [0 0 0 0 0 0 0 0];
BJ = [0 0 0 0 0 0 0 0];
BK = 1000;
BL = 950;
BM = 505;
CE = 0;
BO = 6478;
BP = 5299;
BQ = 445;
FV = 617.8;
BS = 10000;
BT = 500;
BU = 1579.2;
CF = 0;
BW = 200;
BX = 100;
BY = 0;
BZ = 0;
CA = 0.1088;
CB = 0.2176;
CC = B;
CD = CD/BK;
CE = CE/BK;
CF = CF/BK;
CG = AM;
CH = AR-AQ;
CI = CH+AP;
CJ = AO;
CK = sum(CJ);
CL = AA./CK;
CM = zeros(size(C,2),size(A,2));
CM(CJ~=0) = (AE./CJ)./CL;
CN = AG;
CO = AH;
CP = zeros(size(C,2),size(R,2));
CP(:,AI~=0) = AJ(:,AI~=0);
CQ = zeros(size(C,2),size(R,2));
CQ(:,AI~=0) = AK(:,AI~=0);
CR = zeros(size(C,2),size(R,2));
CR(:,AI~=0) = AL(:,AI~=0);
CS = sum(CN,2);
CT = sum(CO,2);
CU = zeros(size(C,2),size(R,2));
CU(:,AI~=0) = CP(:,AI~=0)+CQ(:,AI~=0)+CR(:,AI~=0);
CV = zeros(size(C,2),size(R,2));
CV(:,AI~=0) = AN(:,AI~=0);
CW = zeros(size(C,2),size(R,2));
CW(:,AI~=0) = CV(:,AI~=0)./(CG(:,AI~=0)-CV(:,AI~=0));
CW(CG==0) = 0;
CX = zeros(size(C,2),size(R,2));
CX(:,AI~=0) = CU(:,AI~=0)./(CG(:,AI~=0)-CV(:,AI~=0)-CU(:,AI~=0));
CX(CG==0) = 0;
CY = [0 CX(1,4) 0 0 0 CX(1,4) 0 CX(1,4) 0 CX(1,4) 0 0; 0 0 0 0 0 0 0 0 CX(2,6) 0 CX(2,6) 0; 0 0 0 0 0 CX(3,4) 0 0 0 0 0 0;
0 0 0 0 0 0 CX(4,6) 0 0 0 0 0; 0 0 0 0 0 0 0 0 0 0 0 0; CX(6,2) 0 0 0 0 0 CX(6,6) 0 0 0 CX(6,6) 0;
0 CX(7,4) 0 0 0 0 0 0 0 0 0 0; CX(8,2) 0 CX(8,2) 0 0 0 0 0 CX(8,6) 0 CX(8,6) 0; 0 CX(9,4) 0 CX(9,4) 0 0 0 0 0 CX(9,4) 0 0;
CX(10,2) 0 CX(10,2) 0 0 0 0 0 CX(10,6) 0 CX(10,6) 0; 0 CX(11,4) 0 CX(11,4) 0 0 0 0 0 CX(11,4) 0 0;
0 0 0 0 0 0 0 0 0 0 0 0];
CZ = AC+CY;
DA = AB./AR;
DB = DA./CZ;
DC = sum(DA.*AR,2); DC = DC';
DD = zeros(size(C,2),size(C,2));
DD(:,L~=0) = AD(:,L~=0)./AZ0(:,L~=0);
DD(:,end) = AD(:,end)/AZ0(end);
DE = zeros(1,size(C,2));
DE(L~=0) = (BA(L~=0)./AU(L~=0));
DE(end) = BA(end)/AU(end);
DF = sum(BA(L~=0));
DG = BT/BS;
DH = zeros(1,size(C,2));
DH(E~=0) = AU(E~=0)./sum(AU(E~=0));
DI = AV;
DJ = AV;
DK = AV;
DL = zeros(1,size(C,2));
DL(G~=0) = (AV(G~=0).*CH(G~=0)+DK(G~=0).*AQ(G~=0))./AR(G~=0);
DL(G==0) = (AV(G==0).*CH(G==0))./AR(G==0);
DM = zeros(1,size(C,2));
DM(F~=0) = (AV(F~=0).*CH(F~=0)+DJ(F~=0).*AP(F~=0))./CI(F~=0);
DM(F==0) = (AV(F==0).*CH(F==0))./CI(F==0);
DM(CI==0) = 0;
DN = BC./ AR;
DO = 1;
DP = 0;
DQ = 0;
DR = CN(:,2);
DS = CO(:,2);
DT = CQ;
DU = CN(:,3);
DV = CO(:,3);
DW = CR;
DX = CN(:,1);
DY = CO(:,1);
DZ = CP;
EA = zeros(1,size(C,2));
EA(F~=0) = AW(F~=0)./(AP(F~=0)-AW(F~=0)-CS(F~=0)');
EB = zeros(1,size(C,2));
EB(F~=0) = CS(F~=0)'./(AP(F~=0)-CS(F~=0)');
EC = zeros(1,size(C,2));
EC(G~=0) = AX(G~=0)./(AQ(G~=0)+AX(G~=0)+CT(G~=0)');
ED = zeros(1,size(C,2));
ED(G~=0) = CT(G~=0)'./(AQ(G~=0)+CT(G~=0)');
EE = DJ./((1+EA).*(1+EB)*BK);
EF = DK./((1-EC).*(1-ED)*BK);
EG = [1 0 1 0 0 0 0 0 0 0 0 0];
EH = [0 1 0 1 0 1 0 1 0 1 0 0];
EI = [0 0 0 0 1 0 1 0 1 0 1 1];
EJ = [(sum(CJ(EG~=0,1)))/1000, (sum(CJ(EG~=0,2)))/1000, (sum(CJ(EH~=0,1)))/1000, (sum(CJ(EH~=0,2)))/1000, (sum(CJ(EI~=0,1)))/1000, (sum(CJ(EI~=0,2)))/1000, 18, 0];
EK = zeros(size(C,2),size(R,2));
EK(D~=0,AI~=0) = (CG(D~=0,AI~=0)./EJ(AI~=0))./((1+CW(D~=0,AI~=0)).*(1+CX(D~=0,AI~=0)));
EK(CG==0) = 0;
EL = zeros(size(C,2),size(R,2));
EL(D~=0,AI~=0) = (1+CX(D~=0,AI~=0)).*(1+CW(D~=0,AI~=0));
EM = zeros(size(C,2),size(R,2));
EM(D~=0,AI~=0) = S(D~=0,AI~=0).*EK(D~=0,AI~=0);
EN = zeros(size(C,2),size(R,2));
EN(D~=0,AI~=0) = (EL(D~=0,AI~=0).*(EK(D~=0,AI~=0)-EM(D~=0,AI~=0)))./sum(EL(D~=0,AI~=0).*(EK(D~=0,AI~=0)-EM(D~=0,AI~=0)));
EO = zeros(size(C,2),size(R,2));
EO(D~=0,AI~=0) = (EN(D~=0,AI~=0)./(EL(D~=0,AI~=0).^(1-T(AI~=0)))).^(1./T(AI~=0));
EP = BB(end)/(BB(end)+BP);
EQ = zeros(1,size(C,2));
EQ(E~=0) = AR(E~=0)/sum(AR(E~=0));
ER = zeros(1,size(C,2));
ER(D~=0) = CI(D~=0)/sum(CI(D~=0));
ES = zeros(size(C,2),size(R,2));
ES(E~=0,AI~=0) = CG(E~=0,AI~=0)./sum(CG(E~=0,AI~=0));
ET = zeros(1,size(C,2));
ET(F~=0) = EB(F~=0)'./(DR(F~=0)+DX(F~=0)+DU(F~=0));
EU = repmat(ET',1,size(AF,2));
EV = zeros(1,size(C,2));
EV(K~=0) = ED(K~=0)'./(DS(K~=0)+DY(K~=0)+DV(K~=0));
EW = repmat(EV',1,size(AF,2)); EW(5,:) = 0;
EX = zeros(size(C,2),size(R,2));
EX(D~=0,AI~=0) = DT(D~=0,AI~=0)+DZ(D~=0,AI~=0)+DW(D~=0,AI~=0);
EY = zeros(size(C,2),size(R,2));
EY(D~=0,AI~=0) = CX(D~=0,AI~=0)./EX(D~=0,AI~=0);
EY(EX==0) = 0;
EZ=zeros(size(C,2),size(R,2)); EZ(D~=0,AI~=0) = EY(D~=0,AI~=0);
FA=zeros(size(C,2),size(R,2)); FA(D~=0,AI~=0) = EY(D~=0,AI~=0);
FB=zeros(size(C,2),size(R,2)); FB(D~=0,AI~=0) = EY(D~=0,AI~=0);
FC = zeros(1,size(C,2));
FC(F~=0) = (DJ(F~=0)./(AV(F~=0))).*((AP(F~=0)./(CH(F~=0))).^(1./M(F~=0)));
FC((AP==0) & (F~=0)) = 0;
FC(F~=0) = FC(F~=0)./(1+FC(F~=0));
FD = zeros(1,size(C,2));
FD(F~=0) = CI(F~=0)./(FC(F~=0).*(AP(F~=0).^(1-1./M(F~=0)))+(1-FC(F~=0)).*(CH(F~=0).^(1-1./M(F~=0)))).^(1./(1-1./M(F~=0)));
FE = zeros(1,size(C,2));
FE(G~=0) = 1./(1+AV(G~=0)./DK(G~=0).*((AQ(G~=0)./CH(G~=0)).^(1./N(G~=0))));
FE((CH==0)&(G~=0)) = 0;
FE(H~=0) = 0;
FE(5) = 0;
FG = [1 1 1 1 0 0 0 0 0 0 0 0];
FH = zeros(1,size(C,2));
FH(FG~=0) = FO0(FG~=0)./(DN(FG~=0).*AR(FG~=0));
FH(L~=0) = 0;
FH(end)=0;
FI = (CM.*CL.*CJ)'./(DN.*AR);
FJ = zeros(1,size(C,2));
FJ(L~=0) = (1-FH(L~=0)-sum(FI(:,(L~=0)),1));
FJ(end) = 0;
FK = zeros(1,size(C,2));
FK(E~=0) = (CJ((E~=0),2)'.^FI(2,(E~=0))).*(CJ((E~=0),1)'.^FI(1,(E~=0))).*(AT(E~=0).^FH(E~=0)).*(AU(E~=0).^FJ(E~=0)).*(BS.^O(E~=0));
FK(end) = (CJ(end,2)^FI(2,end))*(CJ(end,1)^FI(1,end))*(BS^O(end));
FL = AR./FK;
FM = sum((AR.*DN.*FI)'./(CM.*CL));
FM(CM==0) = 0;
FN = zeros(1,size(C,2));
FN(G~=0) = AR(G~=0)./(FE(G~=0).*(AQ(G~=0).^(1+1./N(G~=0)))+(1-FE(G~=0)).*(CH(G~=0).^(1+1./N(G~=0)))).^(1./(1+(1./N(G~=0))));
FN((FE==0)&(G~=0)) = 0;
FO0 = FH.*AR.*DN;
FP0 = BC-FO0-sum(CL.*CM.*CJ,2)';
FQ = zeros(1,size(C,2));
FQ(L~=0) = (FP0(L~=0)-BA(L~=0))./AU(L~=0);
FR = sum(FP0(L~=0)-BA(L~=0))./sum(AU(L~=0));
FS = FR;
FT = (BK*CB)./sum((FQ(L~=0)+DE(L~=0)).*(DI(L~=0).*AU(L~=0)));
FU = (FS-W)/(FT^X);
FV = FV/BK;
FW = sum(DN.*AR);
FX = sum(AR-DC);
FY = FW/FX;
FZ = CA;
GA = [1 1 0 0 0 0 0 0];
GB = [0 0 1 1 0 0 0 0];
GC = zeros(1,size(R,2));
GC(1) = BE(1)./sum(BE(GA~=0));
GC(2) = 1-GC(1);
GC(3) = BE(3)./sum(BE(GB~=0));
GC(4) = 1-GC(3);
GD = zeros(1,size(R,2));
GD(1) = sum((AE(EG~=0,1))+(GC(1).*FO0(EG~=0))');
GD(2) = sum((AE(EG~=0,2))+(GC(2).*FO0(EG~=0))');
GD(3) = sum((AE(EH~=0,1))+(GC(3).*FO0(EH~=0))');
GD(4) = sum((AE(EH~=0,2))+(GC(4).*FO0(EH~=0))');
GD(5) = sum(AE(EI~=0,1));
GD(6) = sum(AE(EI~=0,2));
GD(7) = sum(BC(E~=0))-sum(sum(AE(E~=0,:)))-sum(FO0(E~=0))+sum((CN(:,1))+(CO(:,1))+sum(CP(:,AI~=0),2))-BK*CB;
GE = zeros(1,size(R,2));
GE(AI~=0) = BG(AI~=0)./GD(AI~=0);
GF = zeros(1,size(R,2));
GF(AI~=0) = GD(AI~=0).*(1-GE(AI~=0))+BI(AI~=0)+BJ(AI~=0)+BK.*CD(AI~=0);
GG = zeros(1,size(R,2));
GG(AI~=0) = BH(AI~=0)./GF(AI~=0);
GH = zeros(1,size(R,2));
GH(7) = U;
GH(1)=sum(CJ(EG~=0,1)./(sum(CK).*(1+GH(7))));
GH(2)=sum(CJ(EG~=0,2)./(sum(CK).*(1+GH(7))));
GH(3)=sum(CJ(EH~=0,1)./(sum(CK).*(1+GH(7))));
GH(4)=sum(CJ(EH~=0,2)./(sum(CK).*(1+GH(7))));
GH(5)=sum(CJ(EI~=0,1)./(sum(CK).*(1+GH(7))));
GH(6)=sum(CJ(EI~=0,2)./(sum(CK).*(1+GH(7))));
GI = sum(AY0);
GJ = sum(EQ(E~=0).*DL(E~=0));
GK = sum(ER(D~=0).*DM(D~=0));
GL = zeros(1,size(R,2));
GL(AI~=0) = sum((ES(E~=0,AI~=0)).*EL(E~=0,AI~=0));
GM = sum(GH(AI~=0).*GL(AI~=0));
GN = zeros(1,size(R,2));
GN(AI~=0) = sum(EO(D~=0,AI~=0).*(EK(D~=0,AI~=0)-EM(D~=0,AI~=0)).^(1-1./T(AI~=0))).^(1./(1-1./T(AI~=0)));
GO = sum(AR(EH~=0));
GP = sum(sum(CJ(EH~=0,:)));
GQ = zeros(1,size(C,2));
GR = [0 1 0 1 0 0 0 0 0 0 0 0];
GQ(GR~=0) = 1;
GS = zeros(1,size(C,2));
GS(2) = FL(2)/FL(1);
GS(4) = FL(4)/FL(3);
GT = zeros(1,size(C,2));
GT(GR~=0) = 1./(2.*GS(GR~=0)-1);
GU = zeros(1,size(C,2));
GV(GR~=0) = (1-(1-GT(GR~=0)).*(atan(GQ(GR~=0).^(-P(GR~=0))))./(pi/2));
GW = zeros(1,size(C,2));
GW(GR~=0) = FL(GR~=0)./GU(GR~=0);
GS(6) = FL(6)/FL(7);
GS(8) = FL(8)/FL(9);
GS(10) = FL(10)/FL(11);
GX = [0 0 0 0 0 1 0 1 0 1 0 0];
GQ(GX~=0) = (tan((1-GS(GX~=0)).*(pi/2))).^(-1./P(GX~=0));
GU(GX~=0) = (1-(atan(GQ(GX~=0).^(-P(GX~=0))))/(pi/2));
GW(GX~=0) = FL(GX~=0)./GU(GX~=0);
DJ(F==0) = 0;
DK(G==0) = 0;
DI(L==0) = 0;
GY = CX;
EL = EL(D~=0,AI~=0); CX = CX(D~=0,AI~=0); EM = EM(D~=0,AI~=0);
GZ = EK;
EK = EK(D~=0,AI~=0);
x0 = [AV DJ(F~=0) DK(G~=0) DI(L~=0) DL DM EL(:)' DN FY GJ GK GL(AI~=0) GM CI AR CH AQ AP CL CJ(:)' FO0(FG~=0) FP0(L~=0) FQ(L~=0) FR DH(L~=0) FS CB CA EB(F~=0) ED(G~=0),...
CX(:)' DC EM(:)' EK(:)' AY0(E~=0) FW FX GD(AI~=0) GF(AI~=0) BL BW BX BY BZ DP BG(AI~=0) BM BH(AI~=0) DF BQ BU AZ0(L~=0) BA(L~=0)];
xss = @(x)Code_Answers_fun(x,FD,FL,V,FV,O,FJ,FI,FH,FN,Y,Z,GZ,EO,FC,DE,BJ,BT,AZ0,CF,GE,X,M,N,BK,FZ,CE,FT,DQ,FE,BB,EJ,GH,C,D,AY0,L,F,DD,H,FG,I,J,DB,CZ,E,EG,CW,EI,G,K,EH,AI,...
BS,AU,Q,AT,A,GC,CK,DT,DS,DR,DW,DV,DU,GG,FB,FA,EZ,EW,EU,FU,EF,DO,EE,DZ,DY,DX,FP0,CD,FO0,W,S,T,GY,EC,EA,BI,ES,CM,EQ,ER);
options = optimoptions('fsolve','Display','iter');
[xss,x] = fsolve(xss,x0,options);
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
function [xss, xout] = Code_Answers_fun(x,FD,FL,V,FV,O,FJ,FI,FH,FN,Y,Z,GZ,EO,FC,DE,BJ,BT,AZ0,CF,GE,X,M,N,BK,FZ,CE,FT,DQ,FE,BB,EJ,GH,C,D,AY0,CJ,F,DD,H,FG,I,J,DB,CZ,E,EG,CW,EI,...
G,K,EH,AI,BS,AU,Q,AT,A,GC,CK,DT,DS,DR,DW,DV,DU,GG,FB,FA,EZ,EW,EU,FU,EF,DO,EE,DZ,DY,DX,FP0,CD,FO0,W,S,T,GY,EC,EA,BI,ES,CM,EQ,ER)
% A. Endogenous variables
AV = x(1:size(C,2)); CT = size(C,2);
DJ = x(CT+1:CT+size(F(F~=0),2)); CT = CT+size(F(F~=0),2);
DK = x(CT+1:CT+size(G(G~=0),2)); CT = CT+size(G(G~=0),2);
DI = x(CT+1:CT+size(CJ(CJ~=0),2)); CT = CT+size(CJ(CJ~=0),2);
DL = x(CT+1:CT+size(C,2)); CT = CT+size(C,2);
DM = x(CT+1:CT+size(C,2)); CT = CT+size(C,2);
EL = x(CT+1:CT+size(D(D~=0),2)*size(AI(AI~=0),2)); CT = CT+size(D(D~=0),2)*size(AI(AI~=0),2);
DN = x(CT+1:CT+size(C,2)); CT = CT+size(C,2);
FY = x(CT+1); CT = CT+1;
GJ = x(CT+1); CT = CT+1;
GK = x(CT+1); CT = CT+1;
GL = x(CT+1:CT+size(AI(AI~=0),2)); CT = CT+size(AI(AI~=0),2);
GM = x(CT+1); CT = CT+1;
CI = x(CT+1:CT+size(C,2)); CT = CT+size(C,2);
AR = x(CT+1:CT+size(C,2)); CT = CT+size(C,2);
CH = x(CT+1:CT+size(C,2)); CT = CT+size(C,2);
AQ = x(CT+1:CT+size(C,2)); CT = CT+size(C,2);
AP = x(CT+1:CT+size(C,2)); CT = CT+size(C,2);
CL = x(CT+1:CT+size(A,2)); CT = CT+size(A,2);
BOH = x(CT+1:CT+size(C,2)*size(A,2)); CT = CT+size(C,2)*size(A,2);
FO = x(CT+1:CT+size(FG(FG~=0),2)); CT = CT+size(FG(FG~=0),2);
FP = x(CT+1:CT+size(CJ(CJ~=0),2)); CT = CT+size(CJ(CJ~=0),2);
FQ = x(CT+1:CT+size(CJ(CJ~=0),2)); CT = CT+size(CJ(CJ~=0),2);
FR = x(CT+1); CT = CT+1;
DH = x(CT+1:CT+size(CJ(CJ~=0),2)); CT = CT+size(CJ(CJ~=0),2);
FS = x(CT+1); CT = CT+1;
CB = x(CT+1); CT = CT+1;
CA = x(CT+1); CT = CT+1;
EB = x(CT+1:CT+size(F(F~=0),2)); CT = CT+size(F(F~=0),2);
ED = x(CT+1:CT+size(G(G~=0),2)); CT = CT+size(G(G~=0),2);
CX = x(CT+1:CT+size(D(D~=0),2)*size(AI(AI~=0),2)); CT = CT+size(D(D~=0),2)*size(AI(AI~=0),2);
DC = x(CT+1:CT+size(C,2)); CT = CT+size(C,2);
EM = x(CT+1:CT+size(D(D~=0),2)*size(AI(AI~=0),2)); CT = CT+size(D(D~=0),2)*size(AI(AI~=0),2);
EK = x(CT+1:CT+size(D(D~=0),2)*size(AI(AI~=0),2)); CT = CT+size(D(D~=0),2)*size(AI(AI~=0),2);
AY = x(CT+1:CT+size(E(E~=0),2)); CT = CT+size(E(E~=0),2);
FW = x(CT+1); CT = CT+1;
FX = x(CT+1); CT = CT+1;
GD = x(CT+1:CT+size(AI(AI~=0),2)); CT = CT+size(AI(AI~=0),2);
GF = x(CT+1:CT+size(AI(AI~=0),2)); CT = CT+size(AI(AI~=0),2);
BL = x(CT+1); CT = CT+1;
BW = x(CT+1); CT = CT+1;
BX = x(CT+1); CT = CT+1;
BY = x(CT+1); CT = CT+1;
BZ = x(CT+1); CT = CT+1;
DP = x(CT+1); CT = CT+1;
BG = x(CT+1:CT+size(AI(AI~=0),2)); CT = CT+size(AI(AI~=0),2);
BM = x(CT+1); CT = CT+1;
BH = x(CT+1:CT+size(AI(AI~=0),2)); CT = CT+size(AI(AI~=0),2);
DF = x(CT+1); CT = CT+1;
BQ = x(CT+1); CT = CT+1;
BU = x(CT+1); CT = CT+1;
AZ = x(CT+1:CT+size(CJ(CJ~=0),2)); CT = CT+size(CJ(CJ~=0),2);
BA = x(CT+1:CT+size(CJ(CJ~=0),2));
% B. Parameters
CZ(6,1) = 1+GY(6,1);
CZ(8,1) = 1+GY(8,1);
CZ(10,1) = 1+GY(10,1);
CZ(6,1) = 1+GY(6,2);
CZ(8,1) = 1+GY(8,2);
CZ(10,1) = 1+GY(10,2);
CZ(1,2) = 1+GY(1,3);
CZ(7,2) = 1+GY(7,3);
CZ(9,2) = 1+GY(9,3);
CZ(11,2) = 1+GY(11,3);
CZ(1,2) = 1+GY(1,4);
CZ(7,2) = 1+GY(7,4);
CZ(9,2) = 1+GY(9,4);
CZ(11,2) = 1+GY(11,4);
CZ(8,3) = 1+GY(8,1);
CZ(10,3) = 1+GY(10,1);
CZ(8,3) = 1+GY(8,2);
CZ(10,3) = 1+GY(10,2);
CZ(9,4) = 1+GY(9,3);
CZ(11,4) = 1+GY(11,3);
CZ(9,4) = 1+GY(9,4);
CZ(11,4) = 1+GY(11,4);
CZ(1,6) = 1+GY(1,3);
CZ(3,6) = 1+GY(3,3);
CZ(1,6) = 1+GY(1,4);
CZ(3,6) = 1+GY(3,4);
CZ(4,7) = 1+GY(4,5);
CZ(6,7) = 1+GY(6,5);
CZ(4,7) = 1+GY(4,6);
CZ(6,7) = 1+GY(6,6);
CZ(1,8) = 1+GY(1,3);
CZ(1,8) = 1+GY(1,4);
CZ(2,9) = 1+GY(2,5);
CZ(8,9) = 1+GY(8,5);
CZ(10,9) = 1+GY(10,5);
CZ(2,9) = 1+GY(2,6);
CZ(8,9) = 1+GY(8,6);
CZ(10,9) = 1+GY(10,6);
CZ(1,10) = 1+GY(1,3);
CZ(9,10) = 1+GY(9,3);
CZ(11,10) = 1+GY(11,3);
CZ(1,10) = 1+GY(1,4);
CZ(9,10) = 1+GY(9,4);
CZ(11,10) = 1+GY(11,4);
CZ(2,11) = 1+GY(2,5);
CZ(6,11) = 1+GY(6,5);
CZ(8,11) = 1+GY(8,5);
CZ(10,11) = 1+GY(10,5);
CZ(2,11) = 1+GY(2,6);
CZ(6,11) = 1+GY(6,6);
CZ(8,11) = 1+GY(8,6);
CZ(10,11) = 1+GY(10,6);
% C. Additional constraints
AP(I~=0) = 0;
AQ(J~=0) = 0;
AQ(H~=0) = 0;
GZ(end,AI~=0) = 0;
GZ(3,AI~=0) = 0;
GZ(4,AI~=0) = 0;
GZ(5,AI~=0) = 0;
GZ(7,1) = 0;
GZ(7,2) = 0;
GZ(7,3) = 0;
GZ(7,4) = 0;
GZ(9,1) = 0;
GZ(9,2) = 0;
GZ(11,1) = 0;
GZ(11,2) = 0;
FO(CJ~=0) = 0;
AT(CJ~=0) = 0;
AU(FG~=0) = 0;
%FP(FG~=0) = 0;
MAT = [W W+FU.*FT.^X];
% 'REFILL' SOME MATRICES (when inputs are subsets but whole sets are
% required later on in the code)
PMFULL = [1 1 1 1 1 1 1 1 1 1 1 1];
PEFULL = [1 1 1 1 1 1 1 1 1 1 1 1];
PKFULL = [1 1 1 1 1 1 1 1 1 1 1 1];
RSFULL = FO0;
RKFULL = FP0;
DKFULL = AZ0;
IDFULL = AY0;
% RESHAPE MATRICES (that have been 'flattened out' into vectors at the
% beginning of this file)
BOH = reshape(BOH,[12 2]);
EL = reshape(EL, [10 7]);
CX = reshape(CX, [10 7]);
EM = reshape(EM, [10 7]);
EK = reshape(EK, [10 7]);
% Equations
xss1 = DJ-EE(F~=0).*BK.*(1+EA(F~=0)).*(1+EB); xss{1} = xss1;
xss2 = DK-EF(G~=0).*BK.*(1-EC(G~=0)).*(1-ED); xss{2} = xss2;
PLACE = DL.*AR-AV.*CH-PEFULL.*AQ; PLACE(G==0) = (DL(G==0).*AR(G==0)-AV(G==0).*CH(G==0));
xss3 = PLACE; xss{3} = xss3;
xss4 = DL(E~=0)-DN(E~=0)-sum(CZ(E~=0,E~=0).*DB(E~=0,E~=0).*DM(E~=0)',1); xss{4} = xss4;
xss5 = DN(end) - sum(CL.*CM(end,:).*BOH(end,:),2)./ AR(end); xss{5} = xss5;
PLACE = DM.*CI-AV.*CH-PMFULL.*AP; PLACE(F==0) = DM(F==0).*CI(F==0)-AV(F==0).*CH(F==0); PLACE(D==0) = [];
xss6 = PLACE; xss{6} = xss6;
xss7 = DI(1:end)-sum(DM(E~=0).*DD(E~=0,CJ~=0)',2)'; xss{7} = xss7;
xss8 = PKFULL(end)-sum(DM(E~=0).*(DD(E~=0,end)'),2); xss{8} = xss8;
PLACE = EL-(1+CX).*(1+CW(D~=0,AI~=0)).*DM(D~=0)'; PLACE = PLACE(:)';
xss9 = PLACE; xss{9} = xss9;
xss10 = GJ-sum(EQ.*DL); xss{10} = xss10;
xss11 = GK-sum(ER(D~=0).*DM(D~=0)); xss{11} = xss11;
xss12 = GL-sum(ES(D~=0,AI~=0).*EL,1); xss{12} = xss12;
xss13 = GM-sum(GH(AI~=0).*GL(AI~=0)); xss{13} = xss13;
xss14 = FY-(FW./FX); xss{14} = xss14;
xss15 = AR-FL.*AT.^FH.*prod(BOH'.^FI).*AU.^FJ.*BS.^O; xss{15} = xss15;
PLACE = CL.*CM.*BOH-AR'.*DN'.*(FI)'; PLACE = PLACE(:)';
xss16 = PLACE; xss{16} = xss16;
xss17 = sum(BOH,1)-CK; xss{17} = xss17;
xss18 = AR(K~=0)-FN(K~=0).*(FE(K~=0).*AQ(K~=0).^(1+1./N(K~=0))+(1-FE(K~=0)).*CH(K~=0).^(1+1./N(K~=0))).^(1./(1+1./N(K~=0))); xss{18} = xss18;
xss19 = AQ(K~=0)./CH(K~=0)-(PEFULL(K~=0)./AV(K~=0).*(1-FE(K~=0))./FE(K~=0)).^(N(K~=0)); xss{19} = xss19;
xss20 = CI(F~=0)-FD(F~=0).*(FC(F~=0).*AP(F~=0).^(1-1./M(F~=0))+(1-FC(F~=0)).*CH(F~=0).^(1-1./M(F~=0))).^(1./(1-1./M(F~=0))); xss{20} = xss20;
xss21 = AP(F~=0)./CH(F~=0)-(AV(F~=0)./DJ.*FC(F~=0)./(1-FC(F~=0))).^(M(F~=0)); xss{21} = xss21;
xss22 = CH(J~=0)-AR(J~=0); xss{22} = xss22;
xss23 = CI(I~=0)-CH(I~=0); xss{23} = xss23;
xss24 = AR(end)-BB(end); xss{24} = xss24;
xss25 = AR(5)-AQ(5); xss{25} = xss25;
xss26 = RSFULL-FH.*AR.*DN; xss{26} = xss26;
xss27 = RKFULL-DN.*AR+RSFULL+sum(CL.*CM.*BOH,2)'; xss{27} = xss27;
xss28 = FW-sum(DN.*AR); xss{28} = xss28;
xss29 = FX-sum(AR-DC); xss{29} = xss29;
xss30(1) = GD(1)-sum(CL(1).*CM(EG~=0,1).*BOH(EG~=0,1)+GC(1).*RSFULL(EG~=0)');
xss30(2) = GD(2)-sum(CL(2).*CM(EG~=0,2).*BOH(EG~=0,2)+GC(2).*RSFULL(EG~=0)');
xss30(3) = GD(3)-sum(CL(1).*CM(EH~=0,1).*BOH(EH~=0,1)+GC(3).*RSFULL(EH~=0)');
xss30(4) = GD(4)-sum(CL(2).*CM(EH~=0,2).*BOH(EH~=0,2)+GC(4).*RSFULL(EH~=0)');
xss30(5) = GD(5)-sum(CL(1).*CM(EI~=0,1).*BOH(EI~=0,1));
xss30(6) = GD(6)-sum(CL(2).*CM(EI~=0,2).*BOH(EI~=0,2));
xss30(7) = GD(7)-sum(FP)-sum(DX+DY+sum(DZ(:,AI~=0),2))+BY+BK.*CB; xss{30} = xss30;
xss31 = BK.*CB-FT.*sum((FQ+DE(CJ~=0)).*DI(1:end).*AU(CJ~=0)); xss{31} = xss31;
xss32 = GF(AI~=0)-GD(AI~=0).*(1-GE(AI~=0))-BI(AI~=0)-BJ(AI~=0)-BK.*CD(AI~=0); xss{32} = xss32;
xss33 = BH(AI~=0)-GG(AI~=0).*GF(AI~=0); xss{33} = xss33;
xss34 = DC-sum(CZ'.*DB'.*AR',1); xss{34} = xss34;
PLACE = EM-S(D~=0,AI~=0).*EK; PLACE = PLACE(:)';
xss35 = PLACE; xss{35} = xss35;
PLACE = EL.*EK-EL.^(1-T(AI~=0)).*EO(D~=0,AI~=0).^T(AI~=0)./sum(EL.^(1-T(AI~=0)).*EO(D~=0,AI~=0).^T(AI~=0),1).*((1-GG(AI~=0)).*(GF(AI~=0)./EJ(AI~=0))-sum(EL.*EM,1))-EL.*EM; PLACE = PLACE(:)';
xss36 = PLACE; xss{36} = xss36;
xss37 = BL-BW-BZ-BX-BY-sum(BG(AI~=0))+DP; xss{37} = xss37;
xss38 = BM-(DN(end)+sum(CZ(E~=0,end).*DB(E~=0,end).*DM(E~=0)',1)).*BB(end); xss{38} = xss38;
xss39 = BQ-BL+BM+sum(BI(AI~=0))+sum(BJ(AI~=0))+BK.*CE; xss{39} = xss39;
xss40 = BW-sum(EA(F~=0).*AP(F~=0).*EE(F~=0)).*BK; xss{40} = xss40;
xss41 = BX-sum(sum(CW(D~=0,AI~=0).*(1+CX).*EJ(AI~=0).*EK.*DM(D~=0)',1),2); xss{41} = xss41;
xss42 = BY-sum((Q(CJ~=0)./(1+Q(CJ~=0))).*(FP-BA)); xss{42} = xss42;
xss43 = BG(AI~=0)-GD(AI~=0).*GE(AI~=0); xss{43} = xss43;
xss44 = BZ-sum(EC(G~=0).*AQ(G~=0).*BK.*EF(G~=0)); xss{44} = xss44;
xss45 = DP-sum(DQ.*DO.*(DU+DV+sum(DW(:,AI~=0),2))); xss{45} = xss45;
xss46 = FQ-((FP-BA)./(1+Q(CJ~=0)))./(DI(1:end).*AU(CJ~=0)); xss{46} = xss46;
xss47 = FR-sum((FP-BA)./(1+Q(CJ~=0)))./sum(DI(1:end).*AU(CJ~=0)); xss{47} = xss47;
PLACE = max(MAT);
xss48 = FS-PLACE; xss{48} = xss48;
xss49 = BA-DE(CJ~=0).*AU(CJ~=0).*DI(1:end); xss{49} = xss49;
xss50 = DF-sum(BA); xss{50} = xss50;
xss51 = DH-AU(CJ~=0)./sum(AU(CJ~=0)); xss{51} = xss51;
xss52 = DI(1:end).*AZ-DH.*(1+ V.*(FQ-FR)).*(BU+BK.*CA-PKFULL(end).*(DKFULL(end)+BT)); xss{52} = xss52;
xss53 = AY-sum(DD(E~=0,CJ~=0).*AZ,2)'-DD(E~=0,end)'.*(DKFULL(end)+BT); xss{53} = xss53;
xss54 = (EB'-EU(F~=0,3).*DO.*(1-DQ).*DU(F~=0)-EU(F~=0,2).*DR(F~=0)-EU(F~=0,1).*DX(F~=0))'; xss{54} = xss54;
xss55 = (ED'-EW(G~=0,3).*DO.*(1-DQ).*DV(G~=0)-EW(G~=0,2).*DS(G~=0)-EW(G~=0,1).*DY(G~=0))'; xss{55} = xss55;
PLACE = CX-FB(D~=0,AI~=0).*DO.*(1-DQ).*DW(D~=0,AI~=0)-FA(D~=0,AI~=0).*DT(D~=0,AI~=0)-EZ(D~=0,AI~=0).*DZ(D~=0,AI~=0); PLACE = PLACE(:)';
xss56 = PLACE; xss{56} = xss56;
xss57 = CA-FZ-Y.*((FR./FS).^Z-1).*FX./BK; xss{57} = xss57;
xss58 = sum(EE(F~=0).*AP(F~=0))+sum((DO./BK).*(DU+DV+sum(DW(:,AI~=0),2)))+CF+CE+CB-sum(EF(G~=0).*AQ(G~=0))-FV-sum(CD(AI~=0))-CA; xss{58} = xss58;
xss59 = CI-sum(EJ(AI~=0).*GZ(:,AI~=0),2)'-DR'-DS'-sum(DT(:,AI~=0),2)'-DC-IDFULL-BB; xss{59} = xss59;
xss = cell2mat(xss);
% REHSAPE BACK
BOH = BOH(:)';
EL = EL(:)';
CX = CX(:)';
EM = EM(:)';
EK = EK(:)';
xout = [AV DJ DK DI DL DM EL DN FY GJ GK GL GM CI AR CH AQ AP CL BOH FO FP FQ FR DH FS CB CA EB ED CX DC EM EK AY FW FX GD GF BL BW BX BY BZ DP BG BM BH DF BQ BU AZ BA];
댓글 수: 0
채택된 답변
Walter Roberson
2021년 8월 2일
Your xout only involves 544 of the 562 variables.
To establish this, change
xss = cell2mat(xss);
to
xss = horzcat(xss{:});
and then put a breakpoint at
[xss,x] = fsolve(xss,x0,options);
When it stops there,
syms XX [1 562]
FUN = xss(XX)
size(FUN) %will be 1 x 562
length(symvar(FUN)) %will be 544
In particular, the unused variables will be
XX48, XX55, XX185, XX186, XX194, XX195, XX196, XX197, XX199, XX200, XX201, XX206, XX207, XX208, XX235, XX236, XX237, XX238
추가 답변 (0개)
참고 항목
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!