龙格库塔法matlab求解微分方程组,微分方程组的龙格库塔公式求解matlab版.pdf_奔跑吧linux内核的博客-程序员宅基地

技术标签: 龙格库塔法matlab求解微分方程组  

微分方程组的龙格-库塔公式求解 matlab 版 南京大学 王寻 1. 一阶常微分方程组 考虑方程组          00 00 zxz,z , y, xg' z yxy,z , y, xf' y 其经典四阶龙格-库塔格式如下: 对于 n = 0, 1, 2,.,计算           43211 43211 22 6 22 6 LLLL h zz KKKK h yy nn nn 其中                                        334334 22 3 22 3 11 2 11 2 11 222222 222222 hLz ,hKy, hxgL,hLz ,hKy, hxfK hL z , hK y, h xgL, hL z , hK y, h xfK hL z , hK y, h xgL, hL z , hK y, h xfK z ,y,xgL,z ,y,xfK nnnnnn nnnnnn nnnnnn nnnnnn 下面给出经典四阶龙格-库塔格式解常微分方程组的 matlab 通用程序: %marunge4s.m %用途:4 阶经典龙格库塔格式解常微分方程组 y'=f(x,y),y(x0)=y0 %格式:[x,y]=marunge4s(dyfun,xspan,y0,h) %dyfun 为向量函数 f(x,y),xspan 为求解区间[x0,xn], %y0 为初值向量,h 为步长,x 返回节点,y 返回数值解向量 function [x,y]=marunge4s(dyfun,xspan,y0,h) x=xspan(1):h:xspan(2); y=zeros(length(y0),length(x)); y(:,1)=y0(:); for n=1:(length(x)-1) k1=feval(dyfun,x(n),y(:,n)); k2=feval(dyfun,x(n)+h/2,y(:,n)+h/2*k1); k3=feval(dyfun,x(n)+h/2,y(:,n)+h/2*k2); k4=feval(dyfun,x(n+1),y(:,n)+h*k3); y(:,n+1)=y(:,n)+(h/6).*(k1+2*k2+3*k3+k4); end 如下为例题: 例 1:取 h=0.02,利用程序 marunge4s.m 求刚性微分方程组          10100 209999010 z, z' z ,y, z.y.' y 的数值解,其解析解为: xxx. ez,eey 100100010  解:首先编写 M 函数 dyfun.m %dyfun.m function f=dyfun(t,y) f(1)=-0.01*y(1)-99.99*y(2); f(2)=-100*y(2); f=f(:); 然后编写一个执行函数: close all; clear all; clc; [x,y]=marunge4s(@dyfun,[0 500],[2 1],0.002); plot(x,y); axis([-50 500 -0.5 2]); text(120,0.4,'y(x)'); text(70,0.1,'z(x)'); title('数值解'); figure; y1=exp(-0.01*x)+exp(-100*x);%解析解,用来做对比的。 z1=exp(-100*x); plot(x,y1,'r'); hold on; plot(x,z1,'g'); text(120,0.4,'y(x)'); text(70,0.1,'z(x)'); axis([-50 500 -0.5 2]); title('解析解'); 可以看出数值解和解析解的运算结果误差很小: -50050100150200250300350400450500 -0.5 0 0.5 1 1.5 2 y(x) z(x) 解 析 解 -50050100150200250300350400450500 -0.5 0 0.5 1 1.5 2 y(x) z(x) 数 值 解 例 2:考虑下面的 Lorenz 方程组             zxy dt dz xzyx dt dy yx dt dx    参数,,适当的取值会使得系统趋于混沌状态。取=30,=2.8,=12,利 用经典四阶龙格-库塔法求其数值解,并绘制 z 随 x 变化的曲线。 解:首先编写函数的 m 文件: %mafun.m function ff=mafun(t,y) b=2.8;r=30;sigma=12; ff(1)=-sigma*y(1)+sigma*y(2); ff(2)=r*y(1)-y(2)-y(1)*y(3); ff(3)=y(1)*y(2)-b*y(3); ff=ff(:); 再编写运行函数: clear all; close all; clc; [t,y]=marunge4s(@mafun,[0 500],[0 1 2],0.005); plot(y(1,:),y(3,:),'r'); 得到如下图所示的结果: -25-20-15-10-50510152025 0 10 20 30 40 50 60 2. 高阶微分方程组 对于高阶微分方程,总是可以化成方程组的形式。例如,二阶方程          0000 ' yx' y,yxy ' y, y, xg“ y 总是可以化为一阶方程组:             00000 z' yxz ,yxy z , y, xg' z z' y 因此不需要对于高阶方程给出计算公式。 例 3:求二阶方程         111 5112 3 ' yy .x,y“ y 的数值解,其解析解为: 2 1   x y 解:首先将二阶方程写为一阶方程组的形式:          112 11 3 z,y' z y, z' y 再编写函数的 m 文件: %这是一个二阶微分方程 function f=dyfun1(t,y) f(1)=y(2);%y(1)是 y,y(2)是 z。 f(2)=2*(y(1)*y(1)*y(1)); f=f(:); 直接使用 ode45 来计算: close all; clear all; clc; [x,y]=ode45('dyfun1',[1 1.5]',[-1 -1]') plot(x,(y(:,1))); 其结果如图: 11.051.11.151.21.251.31.351.41.451.5 -2.2 -2 -1.8 -1.6 -1.4 -1.2 -1 -0.8 这与解析解作出来的图像很接近。

展开阅读全文

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_42252122/article/details/115952278

智能推荐

使用函数求素数和(PTA-武理-C实验)_使用函数求素数和pta_学习松松的博客-程序员宅基地

本题要求实现一个判断素数的简单函数、以及利用该函数计算给定区间内素数和的函数。素数就是只能被1和自身整除的正整数。注意:1不是素数,2是素数。函数接口定义:int prime( int p );int PrimeSum( int m, int n );其中函数prime当用户传入参数p为素数时返回1,否则返回0;函数PrimeSum返回区间[m, n]内所有素数的和。题目保证用户传入的参数m≤n。裁判测试程序样例:#include <stdio.h>#include <ma_使用函数求素数和pta

利用java反射机制 读取配置文件 实现动态类加载以及动态类型转换_大邦的博客-程序员宅基地

Spring实现的一个重要的机制是通过反射(java.lang.reflect)读取配置文件,通过配置文件来动态生成配置文件中的类对象。Java动态加载类主要是为了不改变主程序代码,通过修改配置文件就可以操作不同的对象执行不同的功能。由于java是强类型语言,本文根据一篇老外的博客,给出了一种可以实现动态类型转换的可行性方法和思路。本文主要帮助你完成一下学习目标:(1) java反射机制最基础的学习。(2) 通过最基础的java正则表达式读取配置文件,获取需要的信息。(3) 模拟spring的IO

基于内容的图像检索系统(合集)_anjueci1221的博客-程序员宅基地

基于内容的图像检索,即CBIR(Content-based image retrieval),是计算机视觉领域中关注大规模数字图像内容检索的研究分支。典型的CBIR系统,允许用户输入一张图片,以查找具有相同或相似内容的其他图片。而传统的图像检索是基于文本的,即通过图片的名称、文字信息和索引关系来实现查询功能。本文是Wiki上统计的当前主要的基于内容的图像检索系统。商业图像搜索引擎..._基于内容的图像检索免费开源代码开发,分享

android10以上,访问Android/data文件_安卓10访问data目录_红地毯前吃泡面的博客-程序员宅基地

自从android10使用分区存储后,文件的操作显得更为复杂,幸运的是,谷歌为我们提供许多操作简单的api,这篇文章主要讲的是android除沙盒目录和共享目录外其他目录的操作android10以上,如果想要获取其他文件,最简单的方法是申请MANAGE_EXTERNAL_STORAGE权限,获取该权限之后,任何文件都可以正常操作,然后你就不用往下看了……虽然不可避免地,MANAGE_EXTERNAL_STORAGE注定会被滥用,我个人并不推荐使用MANAGE_EXTERNAL_STORAGE权限,因_安卓10访问data目录

虚拟机编译android 慢,Ubuntu虚拟机编译Android6.0总结_银币与草绳的博客-程序员宅基地

1 前言html昨天使用清华的源下载了android 6.0的源码,校园网能够达到10M的速度,爽!今天一大早就火烧眉毛地准备编译一个模拟器版本,看看效果,哪知居然耗费了一成天的时间才搞定...为了不其余人在一样的问题上浪费时间,特记录整个编译过程当中遇到的问题和解决方案,毕竟时间就是金钱!java2 背景linux我是在MAC上安装的ubuntu14.04 64bit系统,起初分配了3G的内存(..._虚拟机编译android 源码卡

oracle的sqlnet.ora , tnsnames.ora , Listener.ora 文件的作用(转)_weixin_34127717的博客-程序员宅基地

oracle网络配置三个配置文件listener.ora、sqlnet.ora、tnsnames.ora,都是放在$ORACLE_HOME/network/admin目录下。1. sqlnet.ora-----作用类似于linux或者其他unix的nsswitch.conf文件,通过这个文件来决定怎么样找一个连接中出现的连接字符串。例如我们客户端输入sqlplus sys/oracle@orc...

随便推点

【算法实验四】(DP-动态规划)【田忌赛马】_杳杳_柒的博客-程序员宅基地

1047.田忌赛马(tian ji racing)时限:1000ms内存限制:10000K 总时限:3000ms描述田忌与齐王赛马,双方各有n匹马参赛(n<=100),每场比赛赌注为1两黄金,现已知齐王与田忌的每匹马的速度,并且齐王肯定是按马的速度从快到慢出场,现要你写一个程序帮助田忌计算他最好的结果是赢多少两黄金(输用负数表示)。Tian Ji and the king ...

键值编码_Mars_cyw的博客-程序员宅基地

键值编码一 使用原则:1. 值不能为常规类型,建可以是2. 当键是常规类型时,需要将值包装,系统将自动转换。然而,不支持nil,需要在- (void)setNilValueForKey:(NSString *)theKey中进行处理。(可以自己包装0嘛)3. 对于不存在的键,会调用函数setValue:forUndefinedKey:/v

Confidence May Cheat: Self-Training on Graph Neural Networks under Distribution Shift_威少的书童的博客-程序员宅基地

图形卷积网络(GCNs)最近吸引了广泛的兴趣,并在图形上取得了最先进的性能,但它的成功通常取决于使用大量昂贵和耗时的标记数据的仔细训练。为了缓解标记数据的稀缺性,自训练方法在图上被广泛采用,即标记高置信度的未标记节点,然后将其添加到训练步骤中。在这方面,我们对现有的图形自我训练方法进行了实证研究。令人惊讶的是,我们发现高置信度的无标记节点并不总是有用的,甚至通过自我训练引入了原始标记数据集和增强数据集之间的分布偏移问题,严重阻碍了图上的自我训练能力。

python的try函数_自学python(2)---input()函数 / 异常处理_weixin_39913117的博客-程序员宅基地

小记这两天作业或者考试什么的“接踵而来”,不过还是要坚持学python的,而且越学越停不下,还把一个室友带入坑了。她学了一次课,觉得真的很有趣呢~~ 她说,“要是学c++时也能收到那么多鼓励就好了”,嘿嘿,现在完全把学python当作“放松的时间”了,以后心静不下来的时候,就学py跟聊天玩游戏一样>v..._python input try

APK的更新、安装、隐藏、解除隐藏_系统更新apk_程序员小何SS的博客-程序员宅基地

一、用户安装的apk发生更新public void registerReceiver(Context context) { Slog.d("PMSdddd", "systemReady1"); IntentFilter filter = new IntentFilter(); filter.addAction(Intent.ACTION_PACKAGE_ADDED); filter.addAction(Intent.ACTION_PACK_系统更新apk

HTML5基础知识汇总_(2)自定义属性及表单新特性_crper的博客-程序员宅基地

自定义属性data-*说起这个属性,其实现在很常见了;怎么说呢,因为在一些框架都能看到他的身影!!! 比如Jquery mobile,里面非常频繁的使用了这个属性;这个属性是哪里来的….当然是跟随最新的H5一起出来的….. 兼容性在PC端只能呢说一般般(目前.比较老式浏览器居多),,手机端支持还是比较OK的;虽说是自定义属性,但是还是有一定的规格的,,比如前缀必须是data-[自定义属性];比如

推荐文章

热门文章

相关标签