Effacer les filtres
Effacer les filtres

Using euler's method to plot x(t) graph

2 vues (au cours des 30 derniers jours)
Kristina
Kristina le 6 Oct 2022
I created a code to run euler's method for the function x^3+x^2-12x. It works and everything seems to be fine, but when I try to create the x(t) graph using euler's method it does not graph the anticipated graph. The anticipated graph is the hand-drawn graph. The graph I receive is based on the codes I provided. I'm not sure where my code is maybe producing incorrect values in order to get the hand-drawn graph.
function y = eulersub(a,b)
h = 0.01;
x = -5:h:5;
y = zeros(size(x));
y(1)=-40;
n = numel(y);
for i=1:n-1
f = 3*x(i).^2+2*x(i)-12;
y(i+1) = y(i) + h * f;
end
plot(x,y)
ICs = zeros(4,1);
ICs(1) = -5;
ICs(2) = -2;
ICs(3) = 2;
ICs(4) = 5;
timeVector = linspace(0,15,1001);
vecSize = size(timeVector);
outputValues = zeros(vecSize(1));
hold on
for z=1:4
outputValues = eulersub(ICs(z), timeVector);
plot(outputValues, timeVector)
end
hold off

Réponse acceptée

Torsten
Torsten le 6 Oct 2022
You pass "ICs(z)" and "timeVector" to "eulersub". In the function, they get the names a and b. But a and b are never referenced in "eulersub". So for all initial conditions you pass to the function, you work with y(0) = -40 and a time interval between -5 and 5.
Maybe you mean
ICs = zeros(4,1);
ICs(1) = -5;
ICs(2) = -2;
ICs(3) = 2;
ICs(4) = 5;
timeVector = linspace(0,15,1001);
vecSize = numel(timeVector);
outputValues = zeros(4,vecSize);
for z=1:4
outputValues(z,:) = eulersub(ICs(z), timeVector);
end
plot(timeVector,outputValues)
function y = eulersub(y0,timeVector)
x=timeVector;
y = zeros(size(x));
y(1)=y0;
n = numel(y);
for i=1:n-1
f = 3*x(i).^2+2*x(i)-12;
y(i+1) = y(i) + (x(i+1)-x(i)) * f;
end
end

Plus de réponses (0)

Catégories

En savoir plus sur Graph and Network Algorithms dans Help Center et File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by