How to define variables in the main program instead of in the function file
2 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
dcydhb dcydhb
le 3 Août 2019
Commenté : dcydhb dcydhb
le 4 Août 2019
I want to use a loop in the main program to make
a
the different value, and then get different graphics, but without defining
a
in the function file it can't run, how to solve, thank you!
codes are as this
function file
function f = rigid(t,y)
syms a
f = zeros(2,1); % a column vector
f(1) = a*y(2) * y(1);
f(2) = -y(1) * y(2);
main program
a=1;
options = odeset('RelTol',1e-4,'AbsTol',[1e-4 1e-4]);
[T,Y] = ode45(@rigid,[0 12],[1 1],options);
plot(T,Y(:,1),'-',T,Y(:,2),'-.')
0 commentaires
Réponse acceptée
madhan ravi
le 3 Août 2019
function f = rigid(t,y,a)
% syms a %% not needed
f = zeros(2,1); % a column vector
f(1) = a*y(2) * y(1);
f(2) = -y(1) * y(2);
%-------
a=1;
options = odeset('RelTol',1e-4,'AbsTol',[1e-4 1e-4]);
[T,Y] = ode45(@(t,y)rigid(t,y,a),[0 12],[1 1],options);
plot(T,Y(:,1),'-',T,Y(:,2),'-.')
3 commentaires
madhan ravi
le 3 Août 2019
Modifié(e) : madhan ravi
le 3 Août 2019
That was also an example you can change other parameters too , it's called parameterization see the link below:
for a = 1:10
options = odeset('RelTol',1e-4,'AbsTol',[1e-4 1e-4]);
[T,Y] = ode45(@(t,y)rigid(t,y,a),[0 12],[1 1],options);
plot(T,Y(:,1),'-',T,Y(:,2),'-.')
end
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Function Creation dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!