💥💥💞💞欢迎来到本博客❤️❤️💥💥
🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。
⛳️座右铭:行百里者,半于九十。
📋📋📋本文目录如下:🎁🎁🎁
目录
⛳️赠与读者
👨💻做科研,涉及到一个深在的思想系统,需要科研者逻辑缜密,踏实认真,但是不能只是努力,很多时候借力比努力更重要,然后还要有仰望星空的创新点和启发点。当哲学课上老师问你什么是科学,什么是电的时候,不要觉得这些问题搞笑。哲学是科学之母,哲学就是追究终极问题,寻找那些不言自明只有小孩子会问的但是你却回答不出来的问题。建议读者按目录次序逐一浏览,免得骤然跌入幽暗的迷宫找不到来时的路,它不足为你揭示全部问题的答案,但若能让人胸中升起一朵朵疑云,也未尝不会酿成晚霞斑斓的别一番景致,万一它居然给你带来了一场精神世界的苦雨,那就借机洗刷一下原来存放在那儿的“躺平”上的尘埃吧。
或许,雨过云收,神驰的天地更清朗.......🔎🔎🔎
💥1 概述
关于1、2、3和n阶初值问题(IVP)的常微分方程(ODE)解,以及欧拉法、亚当斯法、亚当斯-莫尔顿法、龙格-库塔法、米尔恩法等方法在ODE数值解中的应用,以下是详细的研究文档概述:
一、常微分方程的解析解
-
一阶常微分方程
- 分离变量法:适用于形如dy/dx=f(x)g(y)的方程。
- 常数变易法:适用于形如dy/dx+p(x)y=q(x)的方程。
- 变量替换法:适用于形如dy/dx=f(y/x)的方程。
-
二阶常微分方程
- 对于二阶齐次线性方程d^2y/dx^2+p(x)dy/dx+q(x)y=0,可以通过求解其特征方程r^2+p(x)r+q(x)=0来得到通解。
-
高阶常微分方程
- 高阶微分方程可以通过变量替换转化为一阶微分方程组来求解。
-
n阶线性常微分方程
- 一般形式为a_n(x)D0y(x)=f(x),其中D表示对x的微分。
- 可以通过解析法求解,但大部分非线性方程无法精确求解。
二、常微分方程的数值解
-
欧拉法
- 欧拉法是一种一阶数值方法,用于求解给定初值的ODE。
- 其核心思想是利用一阶导数的差分值代替实际值,通过线性外推预测出函数值在前进特定步长之后的新值。
- 欧拉法的迭代公式为y_{n+1}=y_n+hf(t_n, y_n),其中h为步长。
-
龙格-库塔法
- 龙格-库塔法是一组隐式和显式迭代方法,用于求解常微分方程的近似解。
- 它包括多种方法,其中最常用的是四阶龙格-库塔法(RK4)。
- RK4的迭代公式为y_{n+1}=y_n+1/6(k_1+2k_2+2k_3+k_4)h,其中k_1, k_2, k_3, k_4是在不同点上的斜率估计值。
-
亚当斯法
- 亚当斯法是一种多步法,它利用前面多个点的信息来预测下一点的值。
- 它包括亚当斯-巴斯福德方法和亚当斯-莫尔顿方法等多种变体。
-
亚当斯-莫尔顿法
- 亚当斯-莫尔顿法是一种预测-校正方法,它首先使用较低阶的方法(如欧拉法)进行预测,然后使用较高阶的方法进行校正。
-
米尔恩法
- 米尔恩法是一种改进的欧拉法,它通过使用更多的历史信息来提高预测的准确性。
-
其他方法
- 除了上述方法外,还有诸如修恩法、中点方法、牛顿积分公式等数值方法可以用于求解常微分方程。
三、数值方法的比较与选择
-
精度与效率
- 一般来说,高阶方法(如RK4)具有更高的精度,但计算量也更大。
- 在选择数值方法时,需要根据问题的具体要求和计算资源的限制进行权衡。
-
稳定性
- 数值方法的稳定性是指在长时间的计算过程中,方法能否保持解的准确性。
- 一些方法(如欧拉法)在步长较大时可能会出现不稳定现象,而高阶方法(如RK4)通常具有更好的稳定性。
-
适用范围
- 不同的数值方法适用于不同类型的常微分方程。
- 例如,对于刚性方程(即方程的解在短时间内迅速变化),需要使用具有较好刚性的数值方法(如龙格-库塔-费尔贝格法)。
综上所述,对于1、2、3和n阶初值问题的常微分方程解,以及欧拉法、亚当斯法、亚当斯-莫尔顿法、龙格-库塔法、米尔恩法等方法在ODE数值解中的应用,需要根据问题的具体要求和计算资源的限制进行选择。在选择数值方法时,需要考虑方法的精度、效率、稳定性和适用范围等因素。
📚2 运行结果






部分代码:
%% MILNE's Method
% First term of f(y,t) found by Euler抯 method
% Second term of f(y,t) by 2 step Adams-Bashforth
y(1)=1; % ICs: u0 at t0
tend=5; % max. time limit
h=.01; % time step size
t=0:h:tend; % time space
steps=length(t); % # of steps
fun = inline('1-t*y^(1/3)','t', 'y');
% Memory allocation with ZERO matrices
y=[y(1), zeros(1,steps-1)];
for ii=1:steps-3
% EULER's method used here
y(ii+1)=y(ii)+h*fun(t(ii), y(ii));
% Adams-Bashforth 2-step method used here
y(ii+2)=y(ii+1)+(3/2)*h*fun(t(ii+1),y(ii+1))-(1/2)*h*fun(t(ii),y(ii));
% MILNE's method starts from here
y(ii+3)=y(ii)+(h/3)*(8*fun(t(ii+2),y(ii+2))-4*fun(t(ii+1),...
y(ii+1))+8*fun(t(ii),y(ii)));
end
plot(t, y, 'b-', 'linewidth', 1.5), grid on
title('MILNE"s Methodsolution of: dy=1-t*y^1^/^3')
xlabel 'Time, t', ylabel 'Solution, y(t)'
🎉3 参考文献
文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。
[1]方有康.求一类常系数线性常微分方程特解的有限递推法[J].数学的实践与认识, 2009(17):5.
[2]陈金环.任意初始条件ODE数值解的并行算法[J].河南科学, 2001, 19(2):3.
🌈4 Matlab代码实现
资料获取,更多粉丝福利,MATLAB|Simulink|Python资源获取

1万+

被折叠的 条评论
为什么被折叠?



