Please help me solve this second order ODE
2 次查看(过去 30 天)
显示 更早的评论
dx1 = x1 + 2*x2;
dx2 = sat(x1) + x2;
0 个评论
回答(1 个)
Star Strider
2019-9-10
Now that you have explained what ‘sat’ is, you posted two different Questions (this one and Help me solve this second order ODE dx1=x1+2*x2 dx2=sat(x1)+x2) with two similar but different differential equation systems.
These both run without error. Choose the one that best fits your needs:
function bc1()
tspan=[0 10];
IC=[1 1];
[T,X] = ode45(@(t,x) eq1(t,x),tspan,IC);
figure
plot(T,X(:,2))
hold
plot(T,X(:,1))
hold off
title('bc_1')
end
function dx=eq1(t,x)
dx=zeros(2,1);
k=x(2);
sat=@(k) min(max(k,-1),1)
x(2)=k;
dx(1)=sat(x(1)).*x(1)-x(2)
dx(2)=-x(1)-2*x(2)+1
end
and:
function bc2()
tspan=[0 10];
IC=[1 1];
[T,X] = ode45(@(t,x) eq2(t,x),tspan,IC);
figure
plot(T,X(:,2))
hold
plot(T,X(:,1))
hold off
title('bc_2')
end
function dx=eq2(t,x)
dx=zeros(2,1);
k=x(2);
sat=@(k) min(max(k,-1),1)
x(2)=k;
dx(1)=sat(x(1)).*x(1)+x(2)
dx(2)=x(1)+2*x(2)+1
end
Have fun!
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Ordinary Differential Equations 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!