常微分方程初值问题数值解法MATLAB(泛函微分方程)

Matlab解常微分方程的初值问题题目:Matlab解常微分方程的初值问题设计目的:1、熟练掌握Matlab的基本编程方法,及其编程风格。2、熟练掌握Matlab常用函数的使用。3、与本专业相关知识相结合,掌握其在程序开发中的应用方法以及和word、C语言等接口方法。4、通过计算机数值求解的方式来加深微分方程解的理解。5、熟悉初等方法可获得解析解之外的数值近似解的求解方法,提高对差分格式的认识…

大家好,又见面了,我是你们的朋友全栈君。

Matlab 解常微分方程的初值问题

题目:Matlab 解常微分方程的初值问题

设计目的:

1、熟练掌握Matlab的基本编程方法,及其编程风格。

2、熟练掌握Matlab常用函数的使用。

3、与本专业相关知识相结合,掌握其在程序开发中的应用方法

以及和word、C语言等接口方法。

4、通过计算机数值求解的方式来加深微分方程解的理解。

5、熟悉初等方法可获得解析解之外的数值近似解的求解方法,提

高对差分格式的认识和离散化分析问题的技巧,加深对理论课程的学习和理解,为数学专业和信息与计算科学专业其他后继课程的学习打好基础。

设计内容:

已知一个三阶微分方程:,利用matlab软件求这个三阶微分方程在初值 下的解。

原三阶微分方程可化为:

令 则原三阶微分方程可化为微分方程组 在初值 下的解。

程序流程:

程序代码:

%编写函数文件rigid.m

function dy = rigid(t,y)

dy = zeros(3,1); % a column vector

dy(1) = y(2) ;

dy(2) =y(3);

dy(3) = 2*(1-y(1)^2)*y(3)-y(1)*y(2);

%调用函数ode45求解,时间区间为[0,10]

[t,Y] = ode45(@rigid,[0 10],[1 0 -1])

t =

0

0.0001

0.0001

0.0002

0.0002

0.0005

0.0007

………………

0.9383

1.0665

1.1947

1.2918

1.3889

1.4860

………………

6.2916

6.2922

6.2928

6.2934

6.2940

6.2947

6.

由于数据太多,这里只列举部分

%绘制解的曲线

plot(t,Y(:,1),’-‘,t,Y(:,2),’-.’,t,Y(:,3),’.’)

%给图形加标注

title(‘Solution of Rigid Equation’)

xlabel(‘time T’)

ylabel(‘solution Y’)

legend(‘Y1′,’Y2′,’Y3’)

设计结果:

未加图形标注时的图

加了图形标注后的图

结果分析:

输出结果[T,Y]中T为时间点组成的向量。Y为对应于T中时间点的y(1)、y(2)和y(3)的值。此次利用matlab数值方法来求解微分方程主要是把求解的时间划分成有限步,对应于每一步将计算出一个解,如果求得的解不满足误差限制,则减少步长,再求解。如此重复,直到满足误差限为止。

课设总结:

最初拿到题目后,开始读题,知道题目所表达的意思及我们所要完成的目的,达到的效果后,便开始了做题。

首先是找一个三阶微分方程。然后把它化简为标准形式,再利用matlab软件求解。其中,在利用matlab求解时遇到一些问题,比如画图时调用已经编号的rigid函数时的调用格式不正确,还有就是给图形家标注时程序的引号没有切换成英文输入法状态下的等一些问题。但是经过多次调试,检查,修改后程序运行总算成功。

通过此次课程设计,我已经基本掌握Matlab的基本编程方法,及其编程风格。且能较熟练掌握Matlab常用函数的使用。此次设计后我的收获不少。

参考文献:

[1] 张圣勤编 MATLAB7.0 机械工业出版社

[2]周义仓 靳祯 秦军林编 常微分方程极其应用 科学出版社

[3]韩明 王家宝 李林编 数学实验(matlab版) 同济大学出版社

[4]汪晓银 皱庭荣编 数学软件与数学实验 科学出版社

2、把这个三阶微分方程化为形如 的标准形式

1、已知一个三阶微分方程

3、编写函数文件rigid.m

4、调用函数文件rigid.m,利用ode45求解

5、绘制解的曲线

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/128881.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Linux开放防火墙端口_linux防火墙打开端口

    Linux开放防火墙端口_linux防火墙打开端口防火墙:1.firewalld的基本使用启动:systemctlstartfirewalld查状态:systemctlstatusfirewalld停止:systemctldisablefirewalld禁用:systemctlstopfirewalld在开机时启用一个服务:systemctlenablefirewalld.service在开机时禁用一个服务:systemctldisablefirewalld.service查看服务是否开机启

    2025年8月26日
    3
  • 分布式锁的使用场景_分布式锁的三种实现的对比

    分布式锁的使用场景_分布式锁的三种实现的对比前言对于锁大家肯定不会陌生,比如synchronized关键字和ReentrantLock可重入锁,一般我们用其在多线程环境中控制对资源的并发访问。但是随着业务的发展,分布式的概念逐渐出现在我们系统中,我们在开发的过程中经常需要进行多个系统之间的交互,于是上面的加锁方法就会失去作用。于是在分布式锁就自然而然的诞生了,接下来我们来聊一聊分布式锁实现的几种方式。分布式锁的使用场景 效率性:使用分布式锁可以避免不同节点重复相同的工作。 正确性:分布式锁可以避免破坏正确性的发生,如

    2022年9月8日
    4
  • https和http有什么区别(内附详细分析)

    https和http有什么区别(内附详细分析)很多站长知道https和http有所不同,但是究竟两者有什么不同浑然不知,针对这种情况,本文给大家详细分析一下https和http有什么区别。一、基本概念(http服务器–>本地浏览器,正确快速传输;https安全套接字层,http的安全版本,http+ssl层,建立一个信息安全的通道,保证数据传输的安全,确认网站的真实性)1、HTTP:超文本传输协议(HyperTextTransferProtocol)。是互联网上应用最为广泛的一种网络协议,所有的www文件都必须遵守这个…

    2022年10月16日
    2
  • 【c语言】malloc函数详解[通俗易懂]

    【c语言】malloc函数详解[通俗易懂]谈到malloc函数相信学过c语言的人都很熟悉,但是malloc底层到底做了什么又有多少人知道。关于malloc相关的几个函数关于malloc我们进入Linuxman一下就会得到如下结果:也可以这样认为(window下)原型:externvoid*malloc(unsignedintnum_bytes);头文件:#include<malloc.h…

    2022年6月14日
    70
  • 一步步学习SPD2010–第二章节–处理SP网站(2)–管理网站用户和权限

    一步步学习SPD2010–第二章节–处理SP网站(2)–管理网站用户和权限SPD不仅提供给你能力去自定义SPFoundation和SPServer网站。而且还帮助你管理和保护你的网站,而不必打开浏览器。当你在浏览器中创建网站时,你可以选择网站是否有它自己的安全设置。然而,当你用SPD创建网站时,你的网站自动继承父网站的安全设定。如果你正自定义一个新的网站来满足业务需求,或者想把你的网站做成模板,以使你能够基于自定义创建更多其他网站,你不想让其他用户使用你的网站直到你的

    2022年6月18日
    27
  • mariadb安装教程linux,在Ubuntu 18.04系统上安装MariaDB 10.4的步骤「建议收藏」

    mariadb安装教程linux,在Ubuntu 18.04系统上安装MariaDB 10.4的步骤「建议收藏」以下介绍在Ubuntu18.04系统上安装MariaDB10.4,也适用在Ubuntu16.04系统上,我们可以从APT存储库在Ubuntu上安装MariaDB10.4。MariaDB是MySQL的直接替代品,具有更多功能,新存储引擎和更好的性能。在写本文时,MariaDB10.4可在Beta版本中使用了,如果你想使用正式版本,就用MariaDB10.3。相关链接在Ubuntu18….

    2022年5月27日
    93

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号