以下matlab程序,哪位大神能帮忙改正,感激不尽啊。。。。总是提示Error using ==> mtimes

2025-03-22 01:30:51
推荐回答(2个)
回答1:

你的程序有误,矩阵的乘法有时要加一个点.用于矩阵元素运算而不是整个矩阵运算,修改后还是有误,如下:
p=700;
d=400;
m=0.03;
t=40;
q=0:0.1:20;
h=400;
n=15;
a=log(1+t*d*m*exp(m*t/n)/p)/m;
b=h*q/((d+h)-p*exp(-m*t/n));
c=exp(-m.*b).*(p./m.*(exp(m.*b)-exp(m*a))+(d+h).*(t-b).*exp(m*t/n));

for i=1:length(q);
if b(i) b(i)=h*q(i)./((d+h)-p*exp(-m*t/n));
c(i)=exp(-m.*b).*(p./m.*(exp(m.*b)-exp(m*a))+(d+h).*(t-b).*exp(m*t/n)); %%这里出错
else
b(i)=(p*(exp(m*a)-1)*exp(-m*t/n)+m*h*q(i))/(m*(d+h));
c(i)=(d+h).*(t-b).*exp(m*t/n).*exp(-m*b);
end
end
plot(q,c)
xlabel('Td');
ylabel('Pt');

改了后c(i)一行那有错(已标出),不能这样赋值给c(i),与之前的数据不匹配,你再修改看看吧,可能要将b改为b(i),不知道你程序的意思我不好肯定的说。最后建一个script文件运行,便于查错~

回答2:

clc
p=700;
d=400;
m=0.03;
t=40;
q=0:0.1:20;
h=400;
n=15;
a=log(1+t*d*m*exp(m*t/n)/p)/m;
b=h.*q/((d+h)-p*exp(-m*t/n));
c=exp(-m.*b).*(p/m.*(exp(m.*b)-exp(m*a))+(d+h).*(t-b)*exp(m*t/n));
for i=1:length(q);
if b(i) b(i)=h*q(i)./((d+h)-p*exp(-m*t/n));
c(i)=exp(-m.*b(i)).*(p/m.*(exp(m.*b(i))-exp(m*a))+(d+h).*(t-b(i))*exp(m*t/n));
else
b(i)=(p*(exp(m*a)-1)*exp(-m*t/n)+m*h*q(i))/(m*(d+h));
c(i)=(d+h).*(t-b(i))*exp(m*t/n).*exp(-m*b(i));
end
end
plot(q,c)
xlabel('Td');
ylabel('Pt');
按上面语句试试