How to arrange correctly with a graph

1 回表示 (過去 30 日間)
Emilia
Emilia 2021 年 1 月 2 日
回答済み: Mischa Kim 2021 年 1 月 2 日
Hello,
I want to produce a graph using ode45,But it gives me an error.
Thanks for the helpers
function second_oder_ode
h=0.01;
t = 0:h:60;
initial_y = 0;
initial_dydt = 0;
[t,y]=ode45( @rhs, t, [initial_y initial_dydt] );
plot(t,y(:,1));
xlabel('t'); ylabel('y');
function y_out=rhs(y)
L0=128;
W=100;
g = 9.81; % Gravitational acceleration (m/s^2)
A=(pi*(0.02)^2)/4;
m=W/g; % Mass of the jumper (kg)
if y(1)<=L0
y_out = [y(2);g];
else
y_out = [y(2);g-((Viscosity(y)*(y(1)-L0)^0.8)*y(2))/(m*y(1))-(ElasticModulus(y)*y(1)*A)/(m*L0)];
end
function [eta]=Viscosity(y)
L0=128;
gammadot= y(2)/(y(1)-L0);
table_gammadot=[0.02 0.05 0.09 0.18 0.3 0.5 0.9 1.8 3 5 9 18 30];
table_eta=[62.20241 28.73309 16.96822 9.024566 5.742004 3.634656 2.099485 1.107372 0.703221 0.429745 0.251424 0.134518 0.082058];
eta=interp1(table_gammadot, table_eta, gammadot, 'nearest', 'extrap');
end
function [G]=ElasticModulus(y)
L0=128;
lambda=y(1)/L0;
table_lambda=[1.355667 1.67225 1.981016 2.309324 2.645449 2.973758 3.302066 3.626466 3.954774 4.294807 4.619207 4.947515 5.291457 5.486879 5.93244 6.25684 6.596873 6.925181 7.241764];
table_G=[117.957 177.1892 183.9973 189.4069 193.7871 196.9072 195.846 199.0777 205.7417 168.6455 175.6384 234.3298 252.4299 277.298 291.751 317.9678 347.2071 382.3623 478.0037];
G=interp1(table_lambda, table_G, lambda, 'nearest', 'extrap')*1000;
end
end
end

採用された回答

Mischa Kim
Mischa Kim 2021 年 1 月 2 日
Anton, add t as an input arg to:
function y_out=rhs(t,y)

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeProgramming についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by