How do I get all functions in this code on one figure? It is only displaying the plot from the first function.

1 次查看(过去 30 天)
function question1
y=1;
h=.02;
t=0
tic
for i=1:2500
hold on
t(i+1)=t(i)+h;
y(i+1)=y(i)+h*f(t(i),y(i))
plot(t,y,'r--')
xlabel('t'); ylabel('y')
title('Eulers Method for function question1')
end
function actual=g(t,y)
actual=((5*ones*exp(-(2*t)))-(3*ones*exp(-(4*t))))/2;
figure(2)
hold all
plot(t,y);
function question1=f(t,y)
question1=(3*ones*exp(-(4*t)))-2*y;
function error=h(t,error)
error=abs(actual-question1)/actual;
figure(3)
plot(t,error,':')
xlabel('t') % Labels ??x?? axis
ylabel('Error') % Labels ??y?? axis
title('Error using Euler Method');
  2 个评论
Muhammad Fahad
Muhammad Fahad 2016-3-26
编辑:Walter Roberson 2016-3-26
Actually I want to solve the system of two coupled differential equations in MATLAB by using implicit Euler's Method.My teacher suggests me to use the command "fsolve".Here I am providing the MATLAB code that I construct.I know there must be a very stupid error at line 13 but anyways help me to solve this problem: clear all clc
f = @(y) [-80.6*y(1)+119.4*y(2); 79.6*y(1)-120.4*y(2)];
h=1/100;
y(:,1)=[1 ; 4]; t(1)=0;
for i =1:2
y(:,i+1)=fsolve(@(z) -z+y(:,i)+h*f(z),[-10 10])
t(i+1)=t(i)+h;
end
plot(t,y(1,:),'b',t,y(2,:),'b')
hold on
ts=0:0.001:1;
ys(1,:)=(3)*exp(-ts)+(-2)*exp(-200*ts);
ys(2,:)=(2)*exp(-ts)+(2)*exp(-200*ts);
plot(ts,ys(1,:),'r',ts,ys(2,:),'g')

请先登录,再进行评论。

采纳的回答

Walter Roberson
Walter Roberson 2016-2-6
When you used
h=.02;
you "overshadowed" the meaning of h as a function, so your h function will never be called.
You have no call to your "g" function.
Caution: you start your "g" function with "hold all" after the figure(2). When you have a hold all before you have plotted anything, the default axes limits of [0 1] are frozen and nothing outside of that limit will be plotted. You should not use "hold all" or "hold on" unless you are certain you have plotted something up to the maximum range already, or unless you have set the axes limits manually using xlim() / ylim() or set() of the axes XLim and YLim properties.

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 2-D and 3-D Plots 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by