不知道matlab能否建立这样一个函数:他的变量是经过一系列条件判断,然后建立函数,即函数是跟着条件判断变的,如果不行,那又怎么办?谢谢 %第一年初 x0=[0.3 0.15 0.2 0.1 0.1 0.1 0.05 0 0 0 0.3 0.15 0.2 0.1 0.1 0.1 0.05 0 0 0 0.3 0.15 0.2 0.1 0.1 0.1 0.05 0 0 0.3 0.15 0.15 0.2 0.2 0.5 0.5 0] a=20; if a*x(5)~=0.05 x(5)=0 if a*x(1)>2 a=a+a*x(1)*0.01; if (x(3)~=0)&(x(4)~=0) A2=(x(3)*0.2+x(4)*0.2)*a; %1年初同时投资项目3和4到第3年初的本利和 else A2=(x(3)*0.2+x(4)*0.1)*a; %1年初投资项目3和4中之一到第3年初的本利和 end if (x(5)~=0)&(x(6)~=0) A3=(x(5)*0.1+x(6)*0.4)*a; %1年初同时投资项目5和6到第4年初的本利和 else A3=(x(5)*0.4+x(6)*0.5)*a; %1年初投资项目5和6中之一到第4年初的本利和 end end end A1=(x(1)*1.5+x(2)*1.8)*a;%1年初投资项目1和2到第2年初的本利和 Q1=x(7)*a; Q2=x(8)*a; Q3=x(9)*a; Q4=x(10)*a; %第二年初 a1=A1+Q1; if a1*x(15)~=0.05 x(15)=0 if a*x(11)>2 a1=a1+a1*x(11)*0.01; if (x(13)~=0)&(x(14)~=0) B2=(x(13)*0.2+x(14)*0.5)*a1; %2年初同时投资项目3和4到第4年初的本利和 else B2=(x(13)*0.5+x(14)*1.2)*a1; %2年初投资项目3和4中之一到第4年初的本利和 end if (x(15)~=0)&(x(16)~=0) B3=(x(15)*1.5'+x(16)*1.5)*a1; %2年初同时投资项目5和6到第5年初的本利和 else B3=(x(15)*1.5+x(16)*1.8)*a1; %2年初投资项目5和6中之一到第5年初的本利和 end end end B1=(x(11)*1.2+x(12)*1.5)*a1;% 2年初投资项目1和2到第3年初的本利和 B4=x(17)*r27; % 2年初投资项目7到第5年末的本利和 P1=x(18)*a1; P2=x(19)*a1; P3=x(20)*a1; %三年初 a2=B1+A3+P1+Q2; if a2*x(25)~=0.05 x(25)=0 if a2*x(21)>2 a2=a2+a2*x(21)*0.01; if (x(23)~=0)&(x(24)~=0) C2=(x(23)*1.4+x(24)*1.4)*a2;% 3年初同时投资项目3和4到第5年初的本利和 else C2=(x(23)*1.7+x(24)*1.8)*a2; % 3年初投资项目3和4其中之一到第5年初的本利和 end if (x(25)~=0)&(x(26)~=0)&(x(27)~=0) C3=(x(25)*1.7+x(26)*1.7+x(27)*1.7)*a2; % 3年初同时投资项目5、6和8到第6年初的本利和 elseif (x(25)~=0)&(x(26)~=0) C3=(x(25)*1.7+x(26)*1.4+x(27)*1.7)*a2; % 3年初同时投资项目5、6不投资8到第6年初的本利和 else C3=(x(25)*1.7+x(26)*1.55+x(27)*1.35)*a2; % 3年初投资项目5、6和8其中之一到第5年初的本利和 end end end C1=(x(21)*1.25+x(22)*1.24)*a2;% 3年初投资项目1和2到第4年初的本利和 S1=x(28)*a2; S2=x(29)*a2; %4年初 a3=C1+B2+A3+S1+P2+Q3; if a3*x(30)>2 a3=a3+a3*x(30)*0.01; if (x(32)~=0)&(x(33)~=0) D2=(x(32)*1.45+x(33)*1.24)*a3;% 4年初同时投资项目3和4到第6年初的本利和 else D2=(x(32)*1.245+x(33)*1.24)*a3; % 4年初投资项目3和4其中之一到第6年初的本利和 end end D1=(x(30)*1.45+x(31)*1.24)*a3;%4年初投资项目1和2到第5年初的本利和 O=x(34)*a3; %5年初 a4=D1+C2+B3+O+S2+P3+Q4; if a4*x(35)>2 a4=a4+a4*x(35)*0.01; E=(x(35)*1.24+x(36)*1.24)*a4; R=X(37)*a4; end function z=fun(x) z=E+D2+C3+B4+R |