function y=repaire(t)
y=0.4*t^1.3; %残值
function y=residual(t,pt)
y=(0.85^t)*pt;
B=[7.2,9.6,9.12,8.482,8.058]; %汽车价格
C=[7.2,10.56,10.032,9.330,8.863]; %汽车购置费
A=zeros(5,5);
for i=1:5
if i==1
t=4;
else
t=1;
end
for j=i:5
y1=repaire(t);
if i==1
y2=residual(t-3,B(i));
else
y2=residual(t,B(i));
end
if j==i
switch i
case 1
A(i,j)=cost(C(i),y1,y2);
case 2
Q=A(:,1);
Q(Q==0)=NaN;
m=min(Q);
A(i,j)=cost(C(i),y1,y2)+m;
case 3
Q=A(:,2);
Q(Q==0)=NaN;
m=min(Q);
A(i,j)=cost(C(i),y1,y2)+m;
case 4
Q=A(:,3);
Q(Q==0)=NaN;
m=min(Q);
A(i,j)=cost(C(i),y1,y2)+m;
case 5
Q=A(:,4);
Q(Q==0)=NaN;
m=min(Q);
A(i,j)=cost(C(i),y1,y2)+m;
end
else
A(i,j)=cost(y2/0.85,y1,y2)+A(i,j-1);
end
t=t+1;
end
end
DISP(A)
你好同学。
你的代码逻辑比较混乱,两个函数堆叠在一起,而且第二个函数都有返回值y了,后面那些代码都是浪费。cost函数也没给出,这样吧,你把应用背景讲一下,帮你捋一捋代码。