微分方程的数值解法——常微分方程——差分法
差分法思想:
差分就是讲解析解中的差分方程中的微分项用差分来代替,当取得变量步长足够小时可以无限逼近。
两大步骤:
1.建立差分格式
1.对解得存在区域划分
2.采用不同的算法可以得到不同的精度,即截断误差
3.数值解对解析解的精度
4.数值解收敛于真解的速度
5.处分算法的稳定性
2.差分格式求解
将微分方程转化为代数方程求解,一般常用地推算法
差分方法的原理:
由下士泰勒展开可以看到:
当步长h足够小时,后面的高阶项都可以省略,因此有:
上式中主要是是如何表达微分项,根据差分过程,微分项的表达如下:
具体实例:
MATLAB中实现:
%微分方程数值解法----欧拉法测试
%-------------------------------------
clc;
clear all;
close all;
%-------------------------------------
%du/dt + u^2 = 0
%u(0)=1
%-------------------------------------
N = 100;
t_s = 0;
t_e = 1;
dt = (t_e-t_s)/N;
t = t_s:dt:t_e-dt;
%-------------------------------------
%解析解
u_j=1./(1+t);
u_s(1) = 1;
for i=2:N
u_s(i)=-u_s(i-1)^2*dt+u_s(i-1);
end
subplot(2,1,1);
plot(t,u_j,'-o',t,u_s,'-*');
xlabel('t');
ylabel('y');
legend('解析解','数值解');
subplot(2,1,2);
plot(t,u_j-u_s,'-r');
xlabel('t');
ylabel('err');
legend('误差');
运行结果:
可以看出解析解和数值解之间很接近,误差不大;
当增加步长时如下图所示:
可见步长对精度的重要性;
转载自原文链接, 如需删除请联系管理员。
原文链接:微分方程的数值解法——常微分方程——差分法(1),转载请注明来源!