第三题用的是常微分方程考试题,应该怎么做啊

 上传我的文档
 下载
 收藏
1+1在什么情况可能等于3?在啪啪啪的情况下可能等于3!
 下载此文档
常微分方程(第三版)课后习题答案【精编版】
下载积分:800
内容提示:常微分方程(第三版)课后习题答案【精编版】
文档格式:DOC|
浏览次数:2811|
上传日期: 23:28:01|
文档星级:
全文阅读已结束,如果下载本文需要使用
 800 积分
下载此文档
该用户还上传了这些文档
常微分方程(第三版)课后习题答案【精编版】
关注微信公众号科学计算:Python&VS.&MATLAB(5)----常微分方程数值解
科学计算:Python VS.
MATLAB(5)----常微分方程数值解
一、常微分方程的一般理论
凡含有参数,未知函数和未知函数导数 (或微分)
的方程,称为微分方程,有时简称为方程,未知函数是一元函数的微分方程称作常微分方程,未知数是多元函数的微分方程称作偏微分方程。微分方程中出现的未知函数最高阶导数的阶数,称为微分方程的阶。
二、使用Python
scipy中提供了用于解常微分方程的函数odeint(),完整的调用形式如下:
scipy.integrate.odeint(func,
y0, t, args=(), Dfun=None, col_deriv=0,
full_output=0, ml=None, mu=None, rtol=None, atol=None, tcrit=None,
h0=0.0, hmax=0.0,hmin=0.0, ixpr=0, mxstep=0, mxhnil=0, mxordn=12,
mxords=5, printmessg=0)
实际使用中,还是主要使用前三个参数,即微分方程的描写函数、初值和需要求解函数值对应的的时间点。接收数组形式。这个函数,要求微分方程必须化为标准形式,即dy/dt=f(y,t,)。而我们会发现,高阶方程的标准化工作,其实是解微分方程最主要的工作。下面是一个二阶常微分方程的例子,通过这个例子,学会变化标准形式的方法。
典型的二阶方程:y"+a*y'+b*y=0
,不满足标准式。变量替换,假设输入是Y=[y,y’],输出是Y’=[y’,y”],那么方程就化为了Y’=F(Y,t)的形式。我们知道Y[0]=y,
Y[1]=y’,所以输出形式就是:
y”=-a*y’-b*y=-a*Y[1]-B*Y[0]
有了这个形式,我们很容易写出Python代码:
from scipy.integrate import odeint
from pylab import *
deriv(y,t):&&&&&&&
# 返回值是y和y的导数组成的数组
&&& return
array([ y[1], a*y[0]+b*y[1] ])
time = linspace(0.0,50.0,1000)
array([0.])&&&&
y = odeint(deriv,yinit,time)
plot(time,y[:,0],label='y')&&&
#y[:,0]即返回值的第一列,是y的值。label是为了显示legend用的。
hold('on')
plot(time,y[:,1],label="y'")&&&&
#y[:,1]即返回值的第二列,是y’的值
xlabel('t')
ylabel('y')
-------------------------------------------------------
三、使用MATLAB
同样,MATLAB解微分方程的第一步工作也是化简微分方程为一阶的标准形式,这个和Python是完全一样的。只是函数的编写不一样。MATLAB可以在m文件函数中定义一个函数和多个子函数,但是子函数只能由同一m文件中的函数调用。并且还要求m文件名必须和主函数同名;而Python无此限制,在此可见一斑,也能看出Python代码的相对更优美。另外,Python的索引从0开始,MATLAB的从1开始,为了这个习惯,编写函数的时候也要有所注意。
MATLAB在这里也有一个优势,就是提供了多个求解函数,以应对时间需求、精度需求和刚性问题等要求。这就比scipy中的函数灵活了不少。如果使用scipy,只能自己编写函数了!
这些函数几乎统一的调用方式是:[to,yo]=solver(func,tspan,y0,options)
其中,solver是ode45(最常用)、ode23、ode23t、ode23s、ode23tb等
例1:y”+4*y=3*sin(t)&
y(0)=1,y’(0)=0
定义一个函数,描写这个微分方程:
function dy=fun1(t,y)
dy(1,1)=y(2)
dy(2,1)=3*sin(t)-4*y(1)
将这个函数存为fun1.m,
然后写一个脚本调用它,解方程。不妨这个脚本就叫做callfun1.m
tspan=[0,5];
[t,y]=ode45(@fun1,tspan,y0);
plot(t,y(:,1),'k-');
plot(t,y(:,2),'k:');
xlabel('t');
画出来的图是这样子的:
下面用Python实现MATLAB部分的例子。
from scipy.integrate import odeint
from pylab import *
def deriv(y,t):
&&& return
array([ y[1], 3*sin(t)-4*y[0] ])
#设置初值和t区间
time = linspace(0.0,5.0,1000)
yinit = array([1,0])
#解方程并绘图
y = odeint(deriv,yinit,time)
plot(time,y[:,0],label='y')&
hold('on')
plot(time,y[:,1],label="y'")&
xlabel('t')
ylabel('y')
结果如图,可以和MATLAB绘制出来的对比一下:
-------------------------
下面用MATLAB实现Python部分的例子。
函数脚本(fun1.m):
function dy=fun1(t,y)
dy(1,1)=y(2)
dy(2,1)=-2.0*y(1)-0.1*y(2)
调用脚本(callfun1.m):
tspan=[0,50];
[t,y]=ode45(@fun1,tspan,y0);
plot(t,y(:,1),'k-');
plot(t,y(:,2),'k:');
xlabel('t');
绘图结果:
补充说明:
MATLAB还可以使用inline的形式调用函数。比如:
tspan=[0,5];
fun1=inline('[y(2);3*sin(t)-4*y(1)]','t','y');&&&
%注意这一句
[t,y]=ode45(fun1,tspan,y0);
plot(t,y(:,1),'k-');
plot(t,y(:,2),'k:');
xlabel('t');
这时候,不需要关心文件名的问题了,但是这种写法明显不利于推广和模块化,所以不推荐使用这样的形式。
我的更多文章:
( 19:46:30)( 13:03:50)( 13:41:19)( 16:45:22)
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。后使用快捷导航没有帐号?
查看: 6429|回复: 11
常微分方程里面用欧拉公式解题方法
一般战友, 积分 174, 距离下一级还需 326 积分
在线时间75 小时
主题帖子积分
一般战友, 积分 174, 距离下一级还需 326 积分
一般战友, 积分 174, 距离下一级还需 326 积分
小弟这个一直搞不明白啊&&望大虾指点
就类似xy''+3y'=0& &和&&yy''+y'?=0& &
会的同志给点具体的步骤啊& &越详细约好啊&&谢谢了
高级战友, 积分 6892, 距离下一级还需 1108 积分
K币4414 元
在线时间1216 小时
主题帖子积分
高级战友, 积分 6892, 距离下一级还需 1108 积分
高级战友, 积分 6892, 距离下一级还需 1108 积分
K币4414 元
不知道对不:
方程.jpg (14.08 KB, 下载次数: 40)
10:44 上传
一般战友, 积分 174, 距离下一级还需 326 积分
在线时间75 小时
主题帖子积分
一般战友, 积分 174, 距离下一级还需 326 积分
一般战友, 积分 174, 距离下一级还需 326 积分
回复 沙发 TornadoYu 的帖子
恩&&这个会啦&&谢谢啦~~~~~
高级战友, 积分 6892, 距离下一级还需 1108 积分
K币4414 元
在线时间1216 小时
主题帖子积分
高级战友, 积分 6892, 距离下一级还需 1108 积分
高级战友, 积分 6892, 距离下一级还需 1108 积分
K币4414 元
方程.jpg (8.6 KB, 下载次数: 23)
11:14 上传
往下不写了……
这些都不是用欧拉解法啊
一般战友, 积分 174, 距离下一级还需 326 积分
在线时间75 小时
主题帖子积分
一般战友, 积分 174, 距离下一级还需 326 积分
一般战友, 积分 174, 距离下一级还需 326 积分
回复 4楼 TornadoYu 的帖子
额&&谢谢啦& &看来是我自己没搞明白啊
中级战友, 积分 2424, 距离下一级还需 576 积分
K币2191 元
在线时间893 小时
主题帖子积分
中级战友, 积分 2424, 距离下一级还需 576 积分
中级战友, 积分 2424, 距离下一级还需 576 积分
K币2191 元
这个数三没见过唉……?
最近,及以后的一段时间都不会上论坛,不好意思
中级战友, 积分 2424, 距离下一级还需 576 积分
K币2191 元
在线时间893 小时
主题帖子积分
中级战友, 积分 2424, 距离下一级还需 576 积分
中级战友, 积分 2424, 距离下一级还需 576 积分
K币2191 元
欧拉公式?数几啊?
最近,及以后的一段时间都不会上论坛,不好意思
中级战友, 积分 730, 距离下一级还需 2270 积分
在线时间104 小时
主题帖子积分
中级战友, 积分 730, 距离下一级还需 2270 积分
中级战友, 积分 730, 距离下一级还需 2270 积分
欧拉公式是这样的?
考研不是非常苦,是相当苦
中级战友, 积分 1755, 距离下一级还需 1245 积分
K币1067 元
在线时间334 小时
主题帖子积分
中级战友, 积分 1755, 距离下一级还需 1245 积分
中级战友, 积分 1755, 距离下一级还需 1245 积分
K币1067 元
欧拉公式 数一的 其实很简单 很有规律的
X的n次方乘以Y的n次导+(P1倍的) X的n-1次方乘以Y的n-1次导+……+(Pn倍的)X的n-n次方乘以Y的n-n次导=f(x)
解法是 设 x=e^t& &然后几次导 就按D的类似阶乘的算法 D(D-1)....(D-1+k)
书上有例题,很简单的,套公式就好。
你那两个不是欧拉公式解的,也不是欧拉方程。
高级战友, 积分 3971, 距离下一级还需 4029 积分
K币3108 元
在线时间951 小时
主题帖子积分
高级战友, 积分 3971, 距离下一级还需 4029 积分
高级战友, 积分 3971, 距离下一级还需 4029 积分
K币3108 元
第一个是不显含y& & 第二是个不显含x
做题模式直接可以套的
您还剩5次免费下载资料的机会哦~
扫描二维码下载资料
使用手机端考研帮,进入扫一扫在“我”中打开扫一扫,扫描二维码下载资料
Powered by Discuz!

我要回帖

更多关于 常微分方程真题 的文章

 

随机推荐