Azzera filtri
Azzera filtri

How to define variables in the main program instead of in the function file

2 visualizzazioni (ultimi 30 giorni)
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),'-.')

Risposta accettata

madhan ravi
madhan ravi il 3 Ago 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 Commenti
madhan ravi
madhan ravi il 3 Ago 2019
Modificato: madhan ravi il 3 Ago 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

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su Function Creation in Help Center e File Exchange

Prodotti


Release

R2014a

Community Treasure Hunt

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

Start Hunting!

Translated by