MATLAB常微分方程数值解——欧拉法、改进的欧拉法与四阶龙格库塔方法
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常微分方程数值解——欧拉法、改进的欧拉法与四阶龙格库塔方法的更多相关文章
- MATLAB常微分方程的数值解法
MATLAB常微分方程的数值解法 作者:凯鲁嘎吉 - 博客园http://www.cnblogs.com/kailugaji/ 一.实验目的 科学技术中常常要求解常微分方程的定解问题,所谓数值解法就是 ...
- [算法] [常微分方程] [欧拉法 改进欧拉法 经典R-K算法]
#include<iostream> #include<cmath> #include<cstdio> #include<iomanip> using ...
- Matlab,Visio等生成的图片的字体嵌入问题解决方法
确保所有字体嵌入,是生成高质量学术论文的必要条件.但是在Windows下,总会遇到Matlab或Visio生成字体没有嵌入的问题,当然这个问题的解决办法有很多(例如,对于Visio可以这样做:直接拷贝 ...
- 人工智能改进传统云ERP的10种方法
http://blog.itpub.net/31542119/viewspace-2168809/ 随着数字化转型的进程加快,企业开始重新评估ERP的作用.传统ERP经过多年僵硬化定制过于追求生产的一 ...
- 用matlab脚本语言写M文件函数时用三种方法简单实现实现DFT(离散傅里叶变换)
%用二重循环实现DFT: function xk=dt_0(xn); %define a function N=length(xn); %caculate the length of the vari ...
- 改进cocos2dx中lua读ccb的方法
cocos2dx自带的CCBProxy真弱,还好提供了一个CCBReaderLoader.lua,但是也不好用, 于是修改了一下CCBReaderLoader,下面直接贴代码了. function N ...
- matlab练习程序(龙格库塔法)
非刚性常微分方程的数值解法通常会用四阶龙格库塔算法,其matlab函数对应ode45. 对于dy/dx = f(x,y),y(0)=y0. 其四阶龙格库塔公式如下: 对于通常计算,四阶已经够用,四阶以 ...
- MATLAB数学实验总结
L1 MATLAB 基础知识 P6 表1-3 数据显示格式 format rat format long P20 表2-5 常用的矩阵函数 zeros(m,n) %零阵 eye(n) %单位阵 one ...
- Simulink仿真入门到精通(十五) Simulink在流程工业中的仿真应用
15.1 工业乙醇生产与计算机仿真 乙醇作为可再生清洁能源不仅可以代替四乙基铅作为汽油的防爆剂,还可以制造汽油醇.这一巨大的潜在需求促使人们去寻找提高乙醇工业生产率的途径,使人们着手于发酵工程的研究. ...
随机推荐
- vmware vcsa-6.5 网络架构之虚拟机的标准交换机
一.配置虚拟机网络 1.概述(esxi 比workstation,vmware server,网络功能更强大) workstation和vmware server每块物理网卡可以给多个虚拟机使用,多个 ...
- 安装LoadRunner时提示缺少vc2005_sp1_with_atl_fix_redist解决方案
操作系统重装后,安装LoadRunner11时,会报缺少vc2005_sp1_with_atl_fix_redist错误,类似下图所示: LR自动安装失败,在网上下载此组件安装后依然提示此信息,最终解 ...
- 第一册:lesson thirty seven。
原文: Making a bookcase. A:You are working hard,George. What are you doing . B:I am making a bookcase. ...
- C#与C++数据类型比较及结构体转换[整理]
//c++:HANDLE(void *) ---- c#:System.IntPtr//c++:Byte(unsigned char) ...
- MVC Post 提交表单 允许他提交参数包含html标记的解决方法
MVC Post 提交表单的时候,如果参数中包含html标记,则需要在控制器上方加上 [ValidateInput(false)]标记后就可以正常提交表单了例如: [HttpPost] [Valida ...
- AnnotationConfigBeanDefinitionParser are only available on JDK 1.5 and higher
報錯: org.springframework.beans.factory.BeanDefinitionStoreException: Unexpected exception parsing XML ...
- 【转】Mybatis源码解读-设计模式总结
原文:http://www.crazyant.net/2022.html?jqbmtw=b90da1&gsjulo=kpzaa1 虽然我们都知道有26个设计模式,但是大多停留在概念层面,真实开 ...
- angular 分页插件的使用
html: <pagination total-items="totalItems" ng-model="currentPage" items-per-p ...
- vue从入门到进阶:自定义指令directive,插件的封装以及混合mixins(七)
一.自定义指令directive 除了核心功能默认内置的指令 (v-model 和 v-show),Vue 也允许注册自定义指令.注意,在 Vue2.0 中,代码复用和抽象的主要形式是组件.然而,有的 ...
- 关于python当中的@修饰符的浅析
https://blog.csdn.net/class_brick/article/details/81170697 要了解python中@装饰器的作用,首先要记住这么几点: 1. 装饰器符号 ...