本学期微分方程数值解课程总结(matlab代码)

  1. 最简单求解一个微分方程数值解:Euler法
function [x,y]=Euler_method(dufun,span,h,x0,y0)
%EuLer格式,
%求解方程y‘=dufun(x,y);其中x \in[a,b];y0为初始值;n为自变量的离散个数;y为求解结果
x=span(1):h:span(2);
n=length(x);
y=zeros(1,n);%存放数值的解
x(1)=x0;
y(1)=y0;
for i=1:n-1
    y(i+1)=y(i)+h.*feval(dufun,x(i),y(i));%Euler格式
end

2.改进的Euler格式

function[x,y]=Gaijin_Euler(func,span,h,x0,y0)
%改进的Euler格式;
%span为区间
%y(x0)=y0;
%n表示区间等份;
x=span(1):h:span(2);
n=length(x);
y=zeros(1,n);
x(1)=x0;
y(1)=y0;
for i=1:n
    y1=y(i)+h*feval(func,x(i),y(i));
    y2=y(i)+h*feval(func,x(i+1),y1);
    y(i)=(y1+y2)/2;
end

方法二:常见的Rungerkutta3与Rungerkutta4格式

1.Rungerkutta3function [x,y]=Rungekutta3(f1,span,h,x0,y0)
x=span(1):h:span(2);
n=length(x);
y=zeros(1,n);
x(1)=x0;
y(1)=y0;
for j=1:n-1
K1=feval(f1,x(j),y(j));
K2=feval(f1,x(j)+h/2,y(j)+h/2*K1);
K3=feval(f1,x(j)+h,y(j)-h*K1+h*2*K2);
y(j+1)=y(j)+(h/6)*(K1+4*K2+K3);
end
1.Rungerkutta4function [x,y]=Rungekutta4(f1,span,h,x0,y0)
x=span(1):h:span(2);
n=length(x);
y=zeros(1,n);
x(1)=x0;
y(1)=y0;
for j=1:n-1
K1=feval(f1,x(j),y(j));
K2=feval(f1,x(j)+h/2,y(j)+h/2*K1);
K3=feval(f1,x(j)+h/2,y(j)+h/2*K2);
K4=feval(f1,x(j)+h,y(j)+h*K3);
y(j+1)=y(j)+(h/6)*(K1+2*K2+2*K3+K4);
end
时间: 2024-10-16 22:00:08

本学期微分方程数值解课程总结(matlab代码)的相关文章

调试和运行matlab代码(源程序)的技巧和教程

转载请标明出处:专注matlab代码下载的网站http://www.downma.com/ 本文主要给大家分享使用matlab编写代码,完成课程设计.毕业设计或者研究项目时,matlab调试程序的技巧和方法. 快速完成一个项目,最简单的方法就是利用前人的开源代码,然后根据自己项目的具体需求和参数,对已有代码进行调试,并增加或删减部分功能,最终实现自己项目的全部功能.所谓"站在前人的肩膀上". 闲话少叙,我们先从最基本的matlab软件安装开始,已经成功安装matlab软件的可以直接跳过

SAR成像学习(四)距离方向成像matlab代码解析 2

如果发射信号是线性调频信号,上一次讲的距离成像算法流程(匹配滤波方法)依然可以用,但那个流程要求T x =4X 0 c >T p  .如果T x <T p  ,即幅宽相对较小的情况,上一讲中的流程会带来一个问题,解决这个问题的办法是pulse compression.本文将会讨论这个puse compression的原理和实现. 1 what is pulse compression 对于线性调频信号:p(t)=a(t)exp(jβt+jαt 2 ) ,信号持续时间为T p  ,瞬时频率为β+

Latex 中插入 Matlab 代码

这篇文章将介绍如何在 Latex 排版过程中添加 Matlab 代码 功能效果 主要有如下排版功能: 语法高亮 自动添加边框 自动添加行号 先上图,大家感受一下效果 listings 包 首先确保你能使用使用 listings 包 简单快捷的使用方法如下 \usepackage{listings} \lstset{language=Matlab} \begin{lstlisting} % Plot function f(x) = 2*x^3 - x - 2 ezplot('2*x^3-x-2',

Latex中Matlab代码的环境

需要用到listings宏包 使用方法: 导言区\usepackage{listings}\lstset{language=Matlab}      %代码语言使用的是matlab\lstset{breaklines}                   %自动将长的代码行换行排版\lstset{extendedchars=false}  %解决代码跨页时,章节标题,页眉等汉字不显示的问题 正文区:\begin{lstlisting}此处写下Matlab代码 \end{lstlisting}

多分类问题中,实现不同分类区域颜色填充的MATLAB代码(demo:Random Forest)

之前建立了一个SVM-based Ordinal regression模型,一种特殊的多分类模型,就想通过可视化的方式展示模型分类的效果,对各个分类区域用不同颜色表示.可是,也看了很多代码,但基本都是展示二分类,当扩展成多分类时就会出现问题,所以我的论文最后就只好画了boundary的图了.今天在研究Random Forest时,找到了下面的demo的MATLAB代码,该代码很好的实现了各分类区域的颜色填充,效果非常漂亮. 下面是一个Demo代码:Demo.m %% generate data

关于本科毕业论文《Laguerre小波在数值积分与微分方程数值解中的应用》存在的问题与小结

本科的毕业设计<Laguerre小波在数值积分与微分方程数值解中的应用>是通过Laguerre小波函数来近似表达某个需要求积分或解微分方程的函数,将原函数很难求得函数用小波函数表达出来,这样在求解数值积分时就容易了.但用Laguerre小波逼近的函数有一定的误差性,这里的误差取决于小波函数的两个变量.在编写程序时由于未能根据用户的需要调节小波函数的两个变量,这就造成了此程序的局限性和误差不够好.另外对于错误的输入没有正确的提示,这也会造成用户的时间的浪费.从软件工程的角度来说这个程序并没有良好

Poisson image editing算法实现的Matlab代码解析

之前我发了数篇系列博文来仔细研究Poisson Image Editing算法,每次重新审视和深入,仿佛都能有更为深刻的认识和很大的收获.这应该算是我这个系列的完结篇,会用用Matlab代码一点一点的演示,原文作者到底是如何设计和实现他那个强大且影响深远的算法的.希望你在看本文之前务必参考一下文章来了解算法原理,本文将主要讲解编程实现的问题,对于前面讲过的内容,我不会深究.但我个人总体的感觉是,现在图像处理算法对数学的要求是越来越高了,像泊松融合.泊松抠图这样的算法如果没有偏微分方程(本算法中涉

使用ecilpse(Java)调用Matlab代码

1 安装java环境: http://www.oracle.com/technetwork/java/javase/downloads/index.html 下载JDK最新版本并安装,CloudSim需要运行在jdk1.6以上版本. 以jdk1.6.0_24为例,默认的安装目录为C:\Program Files\Java\jdk1.6.0_24. 设置环境变量: 新建系统变量JAVA_HOME,变量值设为JDK安装目录,即C:\Program Files\Java\jdk1.6.0_24: 在P

hog特征原理详解及matlab代码学习笔记

1.HOG特征: 方向梯度直方图(Histogram of Oriented Gradient, HOG)特征是一种在计算机视觉和图像处理中用来进行物体检测的特征描述子.它通过计算和统计图像局部区域的梯度方向直方图来构成特征.Hog特征结合SVM分类器已经被广泛应用于图像识别中,尤其在行人检测中获得了极大的成功.需要提醒的是,HOG+SVM进行行人检测的方法是法国研究人员Dalal在2005的CVPR上提出的,而如今虽然有很多行人检测算法不断提出,但基本都是以HOG+SVM的思路为主. (1)主