MATLAB常微分方程数值解

作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/

1.一阶常微分方程初值问题

2.欧拉法

3.改进的欧拉法

4.四阶龙格库塔方法

5.例题

用欧拉法,改进的欧拉法及4阶经典Runge-Kutta方法在不同步长下计算初值问题。步长分别为0.2,0.4,1.0.

matlab程序:

function z=f(x,y)
z=-y*(1+x*y);
function R_K(h)
%欧拉法
y=1;
fprintf('欧拉法:x=%f, y=%f\n',0,1);
for i=1:1/h
x=(i-1)*h;
K=f(x,y);
y=y+h*K;
fprintf('欧拉法:x=%f, y=%f\n',x+h,y);
end
fprintf('\n');
%改进的欧拉法
y=1;
fprintf('改进的欧拉法:x=%f, y=%f\n',0,1);
for i=1:1/h
x=(i-1)*h;
K1=f(x,y);
K2=f(x+h,y+h*K1);
y=y+(h/2)*(K1+K2);
fprintf('改进的欧拉法:x=%f, y=%f\n',x+h,y);
end
fprintf('\n');
%龙格库塔方法
y=1;
fprintf('龙格库塔法:x=%f, y=%f\n',0,1);
for i=1:1/h
x=(i-1)*h;
K1=f(x,y);
K2=f(x+h/2,y+(h/2)*K1);
K3=f(x+h/2,y+(h/2)*K2);
K4=f(x+h,y+h*K3);
y=y+(h/6)*(K1+2*K2+2*K3+K4);
fprintf('龙格库塔法:x=%f, y=%f\n',x+h,y);
end

结果:

>> R_K(0.2)
欧拉法:x=0.000000, y=1.000000
欧拉法:x=0.200000, y=0.800000
欧拉法:x=0.400000, y=0.614400
欧拉法:x=0.600000, y=0.461321
欧拉法:x=0.800000, y=0.343519
欧拉法:x=1.000000, y=0.255934 改进的欧拉法:x=0.000000, y=1.000000
改进的欧拉法:x=0.200000, y=0.807200
改进的欧拉法:x=0.400000, y=0.636118
改进的欧拉法:x=0.600000, y=0.495044
改进的欧拉法:x=0.800000, y=0.383419
改进的欧拉法:x=1.000000, y=0.296974 龙格库塔法:x=0.000000, y=1.000000
龙格库塔法:x=0.200000, y=0.804636
龙格库塔法:x=0.400000, y=0.631465
龙格库塔法:x=0.600000, y=0.489198
龙格库塔法:x=0.800000, y=0.377225
龙格库塔法:x=1.000000, y=0.291009
>> R_K(0.4)
欧拉法:x=0.000000, y=1.000000
欧拉法:x=0.400000, y=0.600000
欧拉法:x=0.800000, y=0.302400 改进的欧拉法:x=0.000000, y=1.000000
改进的欧拉法:x=0.400000, y=0.651200
改进的欧拉法:x=0.800000, y=0.405782 龙格库塔法:x=0.000000, y=1.000000
龙格库塔法:x=0.400000, y=0.631625
龙格库塔法:x=0.800000, y=0.377556
>> R_K(1)
欧拉法:x=0.000000, y=1.000000
欧拉法:x=1.000000, y=0.000000 改进的欧拉法:x=0.000000, y=1.000000
改进的欧拉法:x=1.000000, y=0.500000 龙格库塔法:x=0.000000, y=1.000000
龙格库塔法:x=1.000000, y=0.303395

注意:在步长h为0.4时,要将for i=1:1/h改为for i=1:0.8/h。

MATLAB常微分方程数值解——欧拉法、改进的欧拉法与四阶龙格库塔方法的更多相关文章

  1. MATLAB常微分方程的数值解法

    MATLAB常微分方程的数值解法 作者:凯鲁嘎吉 - 博客园http://www.cnblogs.com/kailugaji/ 一.实验目的 科学技术中常常要求解常微分方程的定解问题,所谓数值解法就是 ...

  2. [算法] [常微分方程] [欧拉法 改进欧拉法 经典R-K算法]

    #include<iostream> #include<cmath> #include<cstdio> #include<iomanip> using ...

  3. Matlab,Visio等生成的图片的字体嵌入问题解决方法

    确保所有字体嵌入,是生成高质量学术论文的必要条件.但是在Windows下,总会遇到Matlab或Visio生成字体没有嵌入的问题,当然这个问题的解决办法有很多(例如,对于Visio可以这样做:直接拷贝 ...

  4. 人工智能改进传统云ERP的10种方法

    http://blog.itpub.net/31542119/viewspace-2168809/ 随着数字化转型的进程加快,企业开始重新评估ERP的作用.传统ERP经过多年僵硬化定制过于追求生产的一 ...

  5. 用matlab脚本语言写M文件函数时用三种方法简单实现实现DFT(离散傅里叶变换)

    %用二重循环实现DFT: function xk=dt_0(xn); %define a function N=length(xn); %caculate the length of the vari ...

  6. 改进cocos2dx中lua读ccb的方法

    cocos2dx自带的CCBProxy真弱,还好提供了一个CCBReaderLoader.lua,但是也不好用, 于是修改了一下CCBReaderLoader,下面直接贴代码了. function N ...

  7. matlab练习程序(龙格库塔法)

    非刚性常微分方程的数值解法通常会用四阶龙格库塔算法,其matlab函数对应ode45. 对于dy/dx = f(x,y),y(0)=y0. 其四阶龙格库塔公式如下: 对于通常计算,四阶已经够用,四阶以 ...

  8. MATLAB数学实验总结

    L1 MATLAB 基础知识 P6 表1-3 数据显示格式 format rat format long P20 表2-5 常用的矩阵函数 zeros(m,n) %零阵 eye(n) %单位阵 one ...

  9. Simulink仿真入门到精通(十五) Simulink在流程工业中的仿真应用

    15.1 工业乙醇生产与计算机仿真 乙醇作为可再生清洁能源不仅可以代替四乙基铅作为汽油的防爆剂,还可以制造汽油醇.这一巨大的潜在需求促使人们去寻找提高乙醇工业生产率的途径,使人们着手于发酵工程的研究. ...

随机推荐

  1. Runtime详解(下)

    Runtime应用 1.Runtime 交换方法 应用场景:当第三方框架或者系统原生方法功能不能满足我们的时候,我们可以在保持系统原有功能的基础上,添加额外的功能. 需求:加载一张图片直接用系统的[U ...

  2. Python爬虫之多线程下载豆瓣Top250电影图片

    爬虫项目介绍   本次爬虫项目将爬取豆瓣Top250电影的图片,其网址为:https://movie.douban.com/top250, 具体页面如下图所示:   本次爬虫项目将分别不使用多线程和使 ...

  3. mvc 中合并两个list集合

    有时候,在进行查询操作的时候需要将从数据库中查询的两张表进行合并,成为一张表然后返回给前端.或者在原有的一张表基础上面加几个新的字段. 这个时候可以新建一个.class[model类],在这个新建的m ...

  4. T-SQL基础(四)之集合运算

    三个运算符 T-SQL支持三个集合运算符:UNION.INTERSECT.EXCEPT. 集合运算符查询的一般形式如下: Query1 <set_operator> Query2 -- 这 ...

  5. 模拟获取post数据的方式

    使用下面两种方法可以获取post数据 .通过$HTTP_RAW_POST_DATA获取 $post=$GLOBALS['HTTP_RAW_POST_DATA']; 但需要修改相应的php.ini指令 ...

  6. Spring中的JDBC模板类入门

    1.Spring框架中提供了很多持久层的模板类来简化编程,使用模板类编写程序会变的简单 2.提供了JDBC模板,Spring框架提供的 *JdbcTemplate类 3.Spring框架可以整合Hib ...

  7. Verification and validation

    Verification Verification is the process to make sure the product satisfies the conditions imposed a ...

  8. TP5.0 PHPExcel 数据表格导出导入(引)

    TP5.0 PHPExcel 数据表格导出导入(引) 今天看的是PHPExcel这个扩展库,Comporse 下载不下来,最后只能自己去github里面手动下载,但有一个问题就是下载下来的PHPExc ...

  9. 前端入门9-JavaScript语法之运算符

    声明 本系列文章内容全部梳理自以下几个来源: <JavaScript权威指南> MDN web docs Github:smyhvae/web Github:goddyZhao/Trans ...

  10. layui table动态表头 改变表格头部 重新加载表格

    改变头部原理: 删除原来表格, 重新建立DOM元素, 重新加载table,实现表头改变 明白了原理, 我相信大家都能写出来了, table.reload(ID, options)目前好像还不支持con ...