Solving odes with ode45 by using actual values for physical constants....

1 回表示 (過去 30 日間)
Douglas Alves
Douglas Alves 2014 年 5 月 17 日
Whenever I try to use actual values for constants in a physical problem I get stuck in a 'busy' message from MATLAB. What do I have to do in order to use the true values for my problem? the code does not work because in inits I`ve got M(r=Rt) = 1e+22 which is a mass of a celestial body. I need to use huge values like that but whenever I do it. I get a bug.
function Europa
% Model for only one layer
%
const=setup;
%mass_constrain = [3.9825 6.372]*1e+21 ;
inits = [0 1e+22];
radious = [1e+3 1];
[r,y] = ode45(@moon,radious,inits,[],const);
rho = const.rho_0*(1+y(:,1)/const.k);
y(:,3) = rho ;
plot(r,y)
legend('P','M','rho')
function europa = moon(r,y,const)
europa = zeros(2,1);
P = y(1) ;
m = y(2) ;
europa(1) = -(const.rho_0*(1+P/const.k)*const.G.*m)./r.^2 ;
europa(2) = 4*pi*(const.rho_0*(1+P/const.k)).*r^2 ;
function const=setup
const.G = 1e-11 ;
const.rho_0 = 1e+3 ;
const.k = 1e+6 ;

回答 (0 件)

カテゴリ

Help Center および File ExchangeOrdinary Differential Equations についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by