matlab龙格库塔法解微分方程 50
已知描述某动态电路的微分方程为10x′′−7x′+4x=10sin(t),初始条件为x(0)=4,x′(0)=9,求x(t)在区间[5,10]的数值解,并画出...
已知描述某动态电路的微分方程为10x′′ − 7x′ + 4x =10sin(t),初始
条件为x(0) = 4,x′(0) = 9,求x(t)在区间[5,10]的数值解,并画出
x(t)、x′(t)的图形。
微分方程求解采用以下方法:
1、龙格-库塔算法;
2、采用simulink 进行仿真实现(采用Sine wave、Derivative 模板等)。
课题要求:
1、对比上述方法的结果。
2、自己编写实现龙格-库塔算法。 展开
条件为x(0) = 4,x′(0) = 9,求x(t)在区间[5,10]的数值解,并画出
x(t)、x′(t)的图形。
微分方程求解采用以下方法:
1、龙格-库塔算法;
2、采用simulink 进行仿真实现(采用Sine wave、Derivative 模板等)。
课题要求:
1、对比上述方法的结果。
2、自己编写实现龙格-库塔算法。 展开
1个回答
展开全部
function [Y] = RK45(t,X,f,h)
K1=f(t,X);
K2=f(t+h/2,X+h/2*K1);
K3=f(t+h/2,X+h/2*K2);
K4=f(t+h,X+h*K3);
Y=X+h/6*(K1+2*K2+2*K3+K4);
end
以上是4阶龙格库塔法的代码:
自己写函数,存为f.m
function dxdt = f (t,x)
dxdt(1)=exp(x(1)*sin(t))+x(2);
dxdt(2)=exp(x(2)*cos(t))+x(1); % x(1)是你的f,x(2)是你的g
dxdt=dxdt(:);
end
自己给出t0,x0,h的值(初始时间,初值,步长)
如果求t0到t1的轨迹的话:给个例子如下
t0=0;t1=5;h=0.02;x0=[-1;-1];
T=t0:h:t1;X=zeros(length(x0),length(T));X(:,1)=x0;
for j=1:length(T)-1
X(:,j+1)=RK45(T(j),X(:,j),@(t,x) f(t,x),h);
end
plot(T,X(1,:));
hold on;
plot(T,X(2,:),'r');
具体参数自己设置
K1=f(t,X);
K2=f(t+h/2,X+h/2*K1);
K3=f(t+h/2,X+h/2*K2);
K4=f(t+h,X+h*K3);
Y=X+h/6*(K1+2*K2+2*K3+K4);
end
以上是4阶龙格库塔法的代码:
自己写函数,存为f.m
function dxdt = f (t,x)
dxdt(1)=exp(x(1)*sin(t))+x(2);
dxdt(2)=exp(x(2)*cos(t))+x(1); % x(1)是你的f,x(2)是你的g
dxdt=dxdt(:);
end
自己给出t0,x0,h的值(初始时间,初值,步长)
如果求t0到t1的轨迹的话:给个例子如下
t0=0;t1=5;h=0.02;x0=[-1;-1];
T=t0:h:t1;X=zeros(length(x0),length(T));X(:,1)=x0;
for j=1:length(T)-1
X(:,j+1)=RK45(T(j),X(:,j),@(t,x) f(t,x),h);
end
plot(T,X(1,:));
hold on;
plot(T,X(2,:),'r');
具体参数自己设置
追问
步长怎么计算
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
TableDI
2024-07-18 广告
2024-07-18 广告
仅需3步!不写公式自动完成Excel vlookup表格匹配!Excel在线免,vlookup工具,点击16步自动完成表格匹配,无需手写公式,免费使用!...
点击进入详情页
本回答由TableDI提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询