技术标签: 数学
我们求解的微分方程对象是如下这样的,左边是导数,右边是 f ( x , y ) f(x,y) f(x,y)。例如:
那么显式欧拉法的迭代步骤如下:(注意,显式欧拉法不是求解 y ( x ) y(x) y(x)的,而是求解一系列的点 ( x i , y i ) (x_i,y_i) (xi,yi),这些和真实函数中的点非常接近。)
其思想如下:
我们要解形如 y ′ = f ( x , y ) y'=f(x,y) y′=f(x,y)这样的微分方程。
上如揭示了其奥秘。
一般你自己做微分方程的题的时候,我们都有初值,例如 y ( 1 ) = 1 y(1)=1 y(1)=1,那么在我们这里就令 x 0 = 1 , y 0 = 1 x_0=1,y_0=1 x0=1,y0=1。然后你随便确定一个 h h h,得到 x 1 = x 0 + h x_1=x_0+h x1=x0+h,计算一下这个点的函数值 y y y,即计算 y ( x 1 ) y(x_1) y(x1),记为 y 1 y_1 y1。
但是没这么容易计算,所以我们来一个近似。
即 y 1 = y 0 + h f ( x 0 , y 0 ) y_1=y0+hf(x_0,y_0) y1=y0+hf(x0,y0),从而我们得到了 ( x 1 , y 1 ) (x_1,y_1) (x1,y1)。
当然啦,有人问这个迭代式子是怎么来的,首先你要明白,给定真实曲线上的一点 ( x 0 , y 0 ) (x_0,y_0) (x0,y0),其切线斜率为 f ( x 0 , y 0 ) f(x_0,y_0) f(x0,y0),为什么?因为微分方程告诉你了, y ′ = f ( x , y ) y'=f(x,y) y′=f(x,y),左边不就是导数吗?所以等于右边。
你再看看图,就知道了,那个 y 1 y_1 y1是近似的,并不是真正的 y ( x 1 ) y(x_1) y(x1),然后你再看看那个更新式子,就应该明白我是如何近似计算 y ( x 1 ) y(x_1) y(x1)了,以直代曲嘛。
一般,我们可以通过减小 h h h来减小误差,那么两者就更加接近了。
我们回到开头这个问题,用这个方法来求解一下,看一下效果怎么样。
这个方程我们可以求得真实函数为:
我们比较一下,用上述显式欧拉法得到的一系列点和真实函数的差别,为了效果好一点,我们取 h = 0.01 h=0.01 h=0.01,从 x 0 = 0 x_0=0 x0=0,一直计算到 x = 1 x=1 x=1,也就是计算100个点,看能不能模拟出[0,1]区间上的真实函数。
h=0.01
x0=0
y0=0.5
x_last=1
y=[]
x=[]
x.append(x0)
y.append(y0)
nowx=x0
while(x0<x_last):
y0=y0+h*(-50*y0+50*x0*x0+2*x0)
y.append(y0)
x0=x0+h
x.append(x0)
##绘制图像
testx=np.linspace(0,1,101)
testy=0.5*np.power(np.e,-50*testx)+testx*testx
figure=plt.figure(figsize=(20,8),dpi=80)
plt.plot(testx,testy,label="true")
plt.plot(x,y,label="h=0.01")
plt.legend()
发现,当h比较小的,效果还是不错的。
文章浏览阅读100次。#11-1city_functions.pydef city_country(city, country): return (city + ", " + country).title()test_cities.pyimport unittestfrom city_functions.py import city_countryclass CitysTestCase(u..._python第6周
文章浏览阅读66次。安装相应的驱动程序后,现在是时候来学习使用JDBC建立数据库连接了。建立JDBC连接所涉及的编程相当简单。 以下是基本的四个步骤 -导入JDBC包:使用Java语言的import语句在Java代码开头位置导入所需的类。注册JDBC驱动程序:使JVM将所需的驱动程序实现加载到内存中,从而可以满足JDBC请求。数据库URL配置:创建一个正确格式化的地址,指向要连接到的数据库(如:MySQ..._可以通过两种方式注册数据库驱动程序,一是使用( )方法,二是使用( )方法。
文章浏览阅读2.6k次。最近看源码就想找个uml的类图工具,网上看了一些,发现都是一些单个类的继承关系图,如果不知道的朋友,可以用uml插件工具搜索uml即可(uml support),然后每次点击右键后在菜单下面找Diagrams,但是我们今天介绍的不是这个,而是另外一个不错的插件,叫code iris。这个是可以显示整个工程所有类关系图的插件。插件中心查找我的是已经安装过了,没有安装的可以浏览所有的,并查找用法:这个工具用法比较独特,在点击右键中找不到对应的菜单进行操作。而是在右边有一个菜单,如下._code iris
文章浏览阅读3.5k次,点赞3次,收藏10次。前言:作为一个前端,怎么能仅仅只会写代码,然后打包代码给后端部署呢?不!咱要自立自强!本篇文章为笔者实践过程的笔记,如果有小伙伴跟我一样是服务器小白,可以作为参考借鉴,同时,如果有错误之处,欢迎各位大佬指正。使用背景:腾讯云轻量应用服务器,镜像为CentOS 7.6 64bit,应用镜像为宝塔linux面板 7.6.0。开始攻克!!!第一步:安装宝塔面板步骤:【概要】→【镜像信息】→【重置应用】。按照图片标识的步骤即可。安装成功:可在【概要】→【镜像信息】查看。获取宝塔登录的账号以及密码:_腾讯宝塔tomcat配置域名
文章浏览阅读1.1k次。看了个算法题目,觉得有趣,就换成了java版本的。 原文地址:blog.csdn.net/ns_code/article/details/21409663 题目: Write a method to decide if two strings are anagrams or..._互为变位词
文章浏览阅读989次。localhost:proj.android mxhd4$ ./build_native.sh NDK_ROOT = /Users/mxhd4/Movies/android-ndk-r9cCOCOS2DX_ROOT = /Users/mxhd4/Movies/2.0.4/cocos2d-2.0-x-2.0.4/test_cocos2dx_mac/proj.android/../..AP
文章浏览阅读887次。环境:Visual Studio 2010, C#;前言:本来是用VS2010连接Oracle数据库做一个报表功能,数据集设置部分出了些问题还未解决,因此先用本地动态数据为测试用例先熟悉VS自带的ReportViewer控件。新手上路,共同进步。牛蛙可以忽略。本文主要包含以下内容:一、ReportViewer使用小例子的完整步骤(新建-设计-编码-调试-结果);二、ReportVi..._visual studio reportviewer 教程
文章浏览阅读1.1k次。题目链接 蓝桥杯 算法训练---------题解锦囊1枚举加二分答案。锦囊2先用枚举初步确定三个根的范围,比如f[i]*f[i+1]<0则可知道[i,i+1]之间有一个根,然后再对于每个范围内二分求根。问题描述 有形如:ax3+bx2+cx+d=0 这样的一个一元三次方程。给出该方程中各项的系数(a,b..._算法设计与分析求解一元三次方程
文章浏览阅读1.1w次,点赞2次,收藏13次。WordPress网站开放投稿功能,接受读者的投稿。但WordPress本身并不提供投稿功能,只拥有强大的扩展能力,我们可以自己添加这个投稿功能。实现用户投稿,有两种方法:一种是开放后台注册功能,普通用户注册进去默认设置为投稿者,登陆进去即可添加文章(默认为草稿);另一种是在前台提供投稿表单,用户填写相应的表格,例如米扑博客:http://blog.mimvp.com前一种方法实现起来比较简单,基_wordpress投稿
文章浏览阅读1.5k次。将项目打包好并上传到服务器,打开服务器命令行界面,cd到项目包目录下,debug模式运行项目java -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=8000,suspend=n -jar 项目包运行成功后,去到Eclipse点击小强,Debug Configurations–>Remote Java Applicati...
文章浏览阅读205次。量子力学已经是现代物理学的基础学科之一,其影响力越来越大!巨大的影响力迫使着人们了解它,可量子世界中的种种奇异现象却挑战着常人的逻辑底线。甚至 让许多物理爱好者也摸不着头脑, 以至于玻尔(量子物理学家)说到“如果一个人第一次听到量子物理而不感到困惑,那他一定是没有听懂”!薛定谔薛定谔的猫 只是帮助人们理解量子世界 的一种思想实验!薛定谔的猫是193...
文章浏览阅读172次。gitub网址:https://github.com/Bilibili/ijkplayer1.编译环境 ruby -e “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)” apt-get install git apt-get install yasm2.设置Linux环境变量_jjdxm_ijkplayer直播