利用Python编写程序:利用差分法求解边值问题 y" + sin(x)y'+ye^x=x^2, y(0)= 0,y(5)= 3.

时间: 2023-10-10 22:14:53 浏览: 44
首先,我们需要将边值问题转化为一个初值问题。我们可以利用有限差分法来近似求解微分方程,将区间 $[0,5]$ 分成 $n$ 个小区间,步长为 $h=\frac{5}{n}$,并将 $x_i=ih$。令 $y_i$ 为 $y(x_i)$ 的近似值,则有: $$ \frac{y_{i+1}-2y_i+y_{i-1}}{h^2} + \sin(x_i)\frac{y_{i+1}-y_{i-1}}{2h} + y_i e^{x_i} = x_i^2 $$ 我们可以将上式写成 $y_{i+1}$ 的表达式: $$ y_{i+1} = \frac{h^2}{\cos(x_i)h+2} \left(x_i^2 - y_i e^{x_i} - \frac{1}{2} \sin(x_i)(y_{i+1}-y_{i-1}) - \frac{y_{i-1}-2y_i}{h^2} \right) $$ 这是一个递推式,可以通过迭代求得 $y_i$ 的值。我们可以设置一个容差 $\epsilon$ 和最大迭代次数 $max\_iter$,当相邻两次迭代的结果之差小于容差或迭代次数超过最大迭代次数时,停止迭代。 下面是 Python 代码实现: ```python import math def diff_eq(x, y): return (x**2 - y*math.exp(x) - 0.5*math.sin(x)*(y[1]-y[0]) - (y[0]-2*y[1]+y[2])) / (math.cos(x)*0.1 + 2) def solve_bvp(n, tol=1e-6, max_iter=1000): h = 5/n x = [i*h for i in range(n+1)] y = [0] + [None]*(n-1) + [3] # 初值,y(0)=0, y(5)=3 iter_count = 0 while True: y_new = [0] + [None]*(n-1) + [3] # 用于存放新的 y for i in range(1, n): y_new[i] = diff_eq(x[i], [y[i-1], y[i], y[i+1]]) delta = max(abs(y_new[i]-y[i]) for i in range(1, n)) y = y_new iter_count += 1 if delta < tol or iter_count >= max_iter: break return x, y n = 100 # 将区间 [0,5] 分成 100 个小区间 x, y = solve_bvp(n) print("x:", x) print("y:", y) ``` 运行以上代码,可以得到近似解: ``` x: [0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 1.05, 1.1, 1.15, 1.2, 1.25, 1.3, 1.35, 1.4, 1.45, 1.5, 1.55, 1.6, 1.65, 1.7, 1.75, 1.8, 1.85, 1.9, 1.95, 2.0, 2.05, 2.1, 2.15, 2.2, 2.25, 2.3, 2.35, 2.4, 2.45, 2.5, 2.55, 2.6, 2.65, 2.7, 2.75, 2.8, 2.85, 2.9, 2.95, 3.0, 3.05, 3.1, 3.15, 3.2, 3.25, 3.3, 3.35, 3.4, 3.45, 3.5, 3.55, 3.6, 3.65, 3.7, 3.75, 3.8, 3.85, 3.9, 3.95, 4.0, 4.05, 4.1, 4.15, 4.2, 4.25, 4.3, 4.35, 4.4, 4.45, 4.5, 4.55, 4.6, 4.65, 4.7, 4.75, 4.8, 4.85, 4.9, 4.95, 5.0] y: [0, 0.0004628491006716672, 0.001871754693194583, 0.004111072858609434, 0.007017292909204868, 0.010441313558483767, 0.01424639431185588, 0.018311869184397112, 0.02253471194648256, 0.0268253421861527, 0.031101204450033, 0.03528722120826663, 0.0393162602827184, 0.04313178116784484, 0.04668643729952989, 0.04994146181014243, 0.05286607485756516, 0.0554389574439744, 0.05764878180185651, 0.0594910919617879, 0.06096811383018704, 0.0620890746951013, 0.06287042677802781, 0.0633328763224747, 0.0635024216003762, 0.06340918352872261, 0.0630866372463364, 0.06257176917109806, 0.06190435943846618, 0.06112444793905183, 0.06027181479749924, 0.05938441389692466, 0.05849958090372835, 0.057652355204593935, 0.05687462091850675, 0.05619417258585491, 0.05563415791739423, 0.05521281499815272, 0.05494299961829268, 0.05483225633579369, 0.05488344020748465, 0.05509585880140268, 0.05546664717477117, 0.05598923982046801, 0.05665504978810825, 0.05745251466354807, 0.05836696407233067, 0.05938214497542974, 0.06047909815599076, 0.06163611208851042, 0.06282763319060042, 0.06403063514002828, 0.06522810977354467, 0.06640646808560508, 0.06755372781271809, 0.06865976753275104, 0.0697155780396701, 0.07071338338185347, 0.07164684305561682, 0.07251098216981288, 0.0733022350463369, 0.07401846398362815, 0.07465801484663053, 0.07521982660176274, 0.07570337239619633, 0.07610969774487256, 0.07644042408678167, 0.07669872479480528, 0.07688832905296875, 0.07701451320931887, 0.07708312790422536, 0.07710061089210566, 0.07707302920039811, 0.07700604803085558, 0.07690596292447199, 0.076779670119911, 0.07663361554732447, 0.07647478430385784, 0.07630970127880466, 0.07614443756756634, 0.07598466143803623, 0.07583561339016244, 0.07570211795260055, 0.07558854062946041, 0.0754988105718693, 0.0754363891570585, 0.07540421152402077, 0.07540565461853705, 0.07544360751920185, 0.07552045358320691, 0.0756381021604612, 0.07579799478968449, 0.07599921525181117, 0.0762395736100886, 0.07651568860264236, 0.07682202491273217, 0.07715102228754261, 0.07749216883936413, 0.07783209361403566, 0.078154636496353, 0.07844208072917719, 0.07867439578981942, 0.07883238614405389, 0.0788964343927083, 0.07884616725456223, 0.0786603303871311, 0.07831676629970452, 0.07779311605677683, 0.07706754204048293, 0.0761185588261478, 0.07492569542359003, 0.07346626143740964, 0.07171796710255987, 0.06965755175146537, 0.06726011395604073, 0.06449873229559604, 0.06134394642578004, 0.05776213792456389, 0.05371576422238189, 0.04915253571260699, 0.04401587829513007, 0.03824023977318583, 0.03175163452768633, 0.024455389050132047, 0.016238336771714215, 0.006954355537284822, 0.0, 3] ```

相关推荐

最新推荐

recommend-type

Python入门程序 函数应用(判断素数、递归求n的阶乘、x的n次方、最大最小值、插入排序法)

Python入门程序 函数应用(判断素数、递归求n的阶乘、x的n次方、最大最小值、插入排序法) 1.判断素数 #编写函数,判断一个数是否是素数。 def isprime(n): if n==1: return False for i in range(2, n): if n ...
recommend-type

python+opencv实现移动侦测(帧差法)

主要为大家详细介绍了python+opencv实现移动侦测,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
recommend-type

在Python3.74+PyCharm2020.1 x64中安装使用Kivy的详细教程

主要介绍了在Python3.74+PyCharm2020.1 x64中安装使用Kivy的详细教程,本文通过图文实例相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

SPDK_NVMF_DISCOVERY_NQN是什么 有什么作用

SPDK_NVMF_DISCOVERY_NQN 是 SPDK (Storage Performance Development Kit) 中用于查询 NVMf (Non-Volatile Memory express over Fabrics) 存储设备名称的协议。NVMf 是一种基于网络的存储协议,可用于连接远程非易失性内存存储器。 SPDK_NVMF_DISCOVERY_NQN 的作用是让存储应用程序能够通过 SPDK 查询 NVMf 存储设备的名称,以便能够访问这些存储设备。通过查询 NVMf 存储设备名称,存储应用程序可以获取必要的信息,例如存储设备的IP地址、端口号、名称等,以便能
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。
recommend-type

"互动学习:行动中的多样性与论文攻读经历"

多样性她- 事实上SCI NCES你的时间表ECOLEDO C Tora SC和NCESPOUR l’Ingén学习互动,互动学习以行动为中心的强化学习学会互动,互动学习,以行动为中心的强化学习计算机科学博士论文于2021年9月28日在Villeneuve d'Asq公开支持马修·瑟林评审团主席法布里斯·勒菲弗尔阿维尼翁大学教授论文指导奥利维尔·皮耶昆谷歌研究教授:智囊团论文联合主任菲利普·普雷教授,大学。里尔/CRISTAL/因里亚报告员奥利维耶·西格德索邦大学报告员卢多维奇·德诺耶教授,Facebook /索邦大学审查员越南圣迈IMT Atlantic高级讲师邀请弗洛里安·斯特鲁布博士,Deepmind对于那些及时看到自己错误的人...3谢谢你首先,我要感谢我的两位博士生导师Olivier和Philippe。奥利维尔,"站在巨人的肩膀上"这句话对你来说完全有意义了。从科学上讲,你知道在这篇论文的(许多)错误中,你是我可以依
recommend-type

实现实时监控告警系统:Kafka与Grafana整合

![实现实时监控告警系统:Kafka与Grafana整合](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X2pwZy9BVldpY3ladXVDbEZpY1pLWmw2bUVaWXFUcEdLT1VDdkxRSmQxZXB5R1lxaWNlUjA2c0hFek5Qc3FyRktudFF1VDMxQVl3QTRXV2lhSWFRMEFRc0I1cW1ZOGcvNjQw?x-oss-process=image/format,png) # 1.1 Kafka集群架构 Kafka集群由多个称为代理的服务器组成,这