常微分方程初值问题:单步方法 [MATLAB]
#先上代码后补笔记#
#可以直接复制粘贴调用的MATLAB函数代码!#
1. 朗格-库塔(Runge-Kutta)方法族
目前只实现了四阶Runge-Kutta方法。
function [ YMat ] = Runge_Kutta( func, tvec, y_init, order )
% 朗格-库塔(Runge-Kutta)算法解常微分方程(组);
% 输入四个参数:函数句柄func(接收列向量、返回列向量),积分时间列向量tvec,初值行向量y_init,阶数order;
% 输出一个参数:数值解,每一行对应积分时间列向量的一行,各列为变量一个分量。
% 暂时只实现了阶数为4的(即order='4')
col = size(y_init, 2); row = size(tvec, 1); YMat = zeros(row, col);
YMat(1, :) = y_init;
switch order
case '4'
for i=1:row-1
y = YMat(i, :).'; h = tvec(i+1) - tvec(i); t = tvec(i);
k1 = func(t, y);
k2 = func(t + h/2, y + k1*h/2);
k3 = func(t + h/2, y + k2*h/2);
k4 = func(t + h, y + k3*h);
YMat(i + 1, :) = (y + (k1 + 2*k2 + 2*k3 + k4)*h/6).';
end
end
常微分方程初值问题:单步方法 [MATLAB]的更多相关文章
- 常微分方程初值问题:多步预测-修正方法 [MATLAB]
#先上代码后补笔记# #可以直接复制粘贴调用的MATLAB函数代码!# 1. 亚当斯(Adams)预测-修正算法 由亚当斯-巴什福特(Adams-Bashforth)显式预测公式和亚当斯-莫顿(Ada ...
- 数值积分:基于牛顿-柯茨公式的定步长和自适应积分方法 [MATLAB]
#先上代码后补笔记# #可以直接复制粘贴使用的MATLAB函数!# 1. 定步长牛顿-柯茨积分公式 function [ integration ] = CompoInt( func, left, r ...
- 非线性方程(组):一维非线性方程(二)插值迭代方法 [MATLAB]
一般而言,方程没有能够普遍求解的silver bullet,但是有几类方程的求解方法已经非常清晰确凿了,比如线性方程.二次方程或一次分式.一次方程可以直接通过四则运算反解出答案,二次方程的求根公式也给 ...
- MATLAB常微分方程数值解——欧拉法、改进的欧拉法与四阶龙格库塔方法
MATLAB常微分方程数值解 作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 1.一阶常微分方程初值问题 2.欧拉法 3.改进的欧拉法 4.四阶龙格库塔 ...
- MATLAB求解常微分方程:ode45函数与dsolve函数
ode45函数无法求出解析解,dsolve可以求出解析解(若有),但是速度较慢. 1. ode45函数 ①求一阶常微分方程的初值问题 [t,y] = ode45(@(t,y)y-2*t/y, ...
- MATLAB学习笔记(七)——MATLAB解方程与函数极值
(一)线性方程组求解 包含n个未知数,由n个方程构成的线性方程组为: 其矩阵表示形式为: 其中 一.直接求解法 1.左除法 x=A\b; 如果A是奇异的,或者接近奇异的.MATLAB会发出警告信息的. ...
- Matlab学习——求解微分方程(组)
介绍: 1.在 Matlab 中,用大写字母 D 表示导数,Dy 表示 y 关于自变量的一阶导数,D2y 表示 y 关于自变量的二阶导数,依此类推.函数 dsolve 用来解决常微分方程(组)的求解问 ...
- 微分方程——基本概念和常微分方程的发展史
1.2 基本概念和常微分方程的发展史 自变量.未知函数均为实值的微分方程称为实值微分方程:未知函数取复值或变量及未知函数均取复值时称为复值微分方程.若无特别声明,以下均指实变量的实值微分方程. 1.2 ...
- Matlab中TCP通讯-实现外部程序提供优化目标函数解
版权声明:若无来源注明,Techie亮博客文章均为原创. 转载请以链接形式标明本文标题和地址: 本文标题:Matlab中TCP通讯-实现外部程序提供优化目标函数解 本文地址:http://te ...
随机推荐
- easyui-textbox 只读设置取消
<script> $(function () { $("#txt_beginAmount").attr('readonly', true); $("#txt_ ...
- JQuery------jQuery.parseHTML()的使用方法
代码: $(document).ready(function () { var data = jQuery.parseHTML("<p>你好</p>"); ...
- Extjs学习笔记--(四,基本函数介绍)
Ext是Extjs的命名空间,为Extjs框架提供唯一的全局变量 这样做可以避免冲突,便于代码维护 1,apply和applyif方法 apply=function(object, config, d ...
- 安卓教程:提取APK程序里图片资源的方法
有些APK程序里的图标.图片很漂亮,在使用程序时你可能会想,如果能把这些漂亮的图标.图片提取出来就好了,其实这是可以办到的,请看教程. 本教程以“电影超人”的APK安装包为例,其它APK程序的提取方法 ...
- nutch爬取时Exception in thread “main” java.io.IOException: Job failed!
用cygwin运行nutch 1.2爬取提示IOException: $ bin/nutch crawl urls -dir crawl -depth 3 -topN 10 crawl started ...
- Java中实现多态的机制(实质)?
靠的是父类或接口定义的引用变量可以指向子类或具体实现类的实例对象.
- Swift-Swift的Singleton三种写法
第一种: import Foundation class SingletonA : NSObject { static let sharedInstance: SingletonA = Singlet ...
- spring aop 样例
基于注解的AOP 方式 1.加入jar包 com.springsource.org.aopalliance-1.0.0.jar com.springsource.org.aspectj.weaver- ...
- Egret P2 入门学习资料
1 p2库下载: https://github.com/egret-labs/egret-game-library/tree/rc/4.1.0 2 p2 作者demo:https://github.c ...
- Egret3D初步笔记二 (Unity导出场景使用)
一 Scene 根据上一节的继续.在导入unity4.7.1_Egret3D_Dll.unitypackage后. 在Unity中双击打开Assets/Egret3D/Example下的Example ...