clc, clear
delta_epsilon=0.01;
E=142;
a=382.6;
b=0.55;
sigma_Y=19.53;
epsilon(1)=0;
epsilon_p(1)=0;
q(1)=0;
gamma(1)=0;
for i=1:40
epsilon(i+1)=epsilon(i)+delta_epsilon;
sigma_trial(i+1)=E*(epsilon(i+1)-epsilon_p(i));
f_trial(i+1)=abs(sigma_trial(i+1))-(sigma_Y+a*(2/3)^0.5*epsilon_p(i)^b);
if f_trial(i+1)<=0
gamma(i+1)=gamma(i);
epsilon_p(i+1)=epsilon_p(i);
q(i+1)=q(i);
sigma(i+1)=sigma_trial(i+1);
elseif f_trial(i+1)>0
epsilon_p(i+1)=solve(epsilon(i+1)-epsilon_p(i+1)-(sigma_Y+a*(2/3)^0.5*epsilon_p(i+1)^b)==0,epsilon_p(i+1));
gamma(i)=1/(b*a*(2/3)^0.5*epsilon_p(i+1)^b);
sigma(i+1)=sigma_trial(i+1)-E*gamma(i);
q(i+1)=q(i)+gamma(i);
end
end
plot(epsilon,sigma)
%%加黄部分改了很多次,始终出现索引超出数组范围的情况,请大神指教,应该怎么改

 Respuesta aceptada

0 votos

仅供参考,但方程求解不一定总是存在解哈
clc, clear
delta_epsilon=0.01;
E=142;
a=382.6;
b=0.55;
sigma_Y=19.53;
epsilon(1)=0;
epsilon_p(1)=0;
q(1)=0;
gamma(1)=0;
for i=1:40
    epsilon(i+1)=epsilon(i)+delta_epsilon;
    sigma_trial(i+1)=E*(epsilon(i+1)-epsilon_p(i));
    f_trial(i+1)=abs(sigma_trial(i+1))-(sigma_Y+a*(2/3)^0.5*epsilon_p(i)^b);
    if f_trial(i+1)<=0
        gamma(i+1)=gamma(i);
        epsilon_p(i+1)=epsilon_p(i);
        q(i+1)=q(i);
        sigma(i+1)=sigma_trial(i+1);
    elseif f_trial(i+1)>0
        syms x
        epsilon_p(i+1)=vpasolve(epsilon(i+1)-x-(sigma_Y+a*(2/3)^0.5*x^b)==0,x);
        gamma(i)=1/(b*a*(2/3)^0.5*epsilon_p(i+1)^b);
        sigma(i+1)=sigma_trial(i+1)-E*gamma(i);
        q(i+1)=q(i)+gamma(i);
    end
end
plot(epsilon,sigma)

Más respuestas (0)

Categorías

Más información sobre 循环及条件语句 en Centro de ayuda y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!