常微分方程王高雄第三版--第二章一阶微分方程的初等解法--Julia实现
本章主要展示第二章一阶微分方程的初等解法中的各个示例
第二章
- 2.1 变量分离方程与变量变换
- 例1
- 例2
- 例3例4略
- 例5
- 例6
- 例7
- 2.2 线性微分方程与常数变易法
- 例1(例2)
- 例3
- 例5
- 例6
2.1 变量分离方程与变量变换
例1
dydt=−xy\frac{dy}{dt}=-\frac{x}{y} dtdy=−yx
f11(u,p,t)=-t./u #运用点语法
u0=0.01
tspan=(-2.0,2.0)
prob1 = ODEProblem(f11,u0,tspan)
sol1 = solve(prob1,saveat=0.01)#,EM(),dt=dt)
plot(sol1)
f12(u,p,t)=-t/u #没有运用点语法
u0=0.01
tspan=(-2.0,2.0)
prob2 = ODEProblem(f12,u0,tspan)
sol2 = solve(prob2,saveat=0.01)#,EM(),dt=dt)
plot(sol2)
两个程序的结果一致。需注意程序中的p,这个即使用不着,也需要加上。若u0不接近0,结果将不一样,假设u0=1/2,结果则为椭圆,即:
例2
dydt=−y(−c+dx)x(a−by)\frac{dy}{dt}=-\frac{y(-c+dx)}{x(a-by)} dtdy=−x(a−by)y(−c+dx)
a、b、c、d为常数,a、b、c、d选取不同将导致最后结果不一致,结果的差别是很大的,本章假设两种情况:一是:c=-10,d=-3,,a=3,b=10,二是:c=10,d=3,,a=3,b=10,两者只差一个负号。
f2(u,p,t)= u*(10-3*t)/(t*(3-10*u))
u0 = 1
tspan = (0.01,10.0)
prob2 = ODEProblem(f2,u0,tspan)
sol2 = solve(prob2,saveat=0.1)
plot(sol2)
f3(u,p,t)= u*(-10+3*t)/(t*(3-10*u))
u0 = 1
tspan = (0.01,10.0)
prob3 = ODEProblem(f3,u0,tspan)
sol3 = solve(prob3,saveat=0.1)
plot(sol3)
注:在编写代码时,需注意自变量的取值范围tspan ,尤其是否能取得0。
例3例4略
例3为人口模型,可参考前一章,例4中的p(x)不做假设,故本章略。
例5
dydt=xy+tanxy\frac{dy}{dt}=\frac{x}{y}+tan\frac{x}{y} dtdy=yx+tanyx
本章假设y的初值为-2、-1、-1/2、0、1/2、1、-2
f4(u,p,t)= u/t+tan(u/t);
u0 =[-2,-1,-1/2,0,1/2,1,2];
tspan = (0.01,10.0);
plot()
for i in u0prob4 = ODEProblem(f4,i,tspan);sol4 = solve(prob4,saveat=0.01);plot!(sol4,label=i)
end
plot!()
注:初值为-1、1时,曲线明显不光滑,单独化一条线时,初值为0.5(-0.5)时,也是不光滑的,如下图,其余初值可自行研究。
例6
xdydt+2xy=yx\frac{dy}{dt}+2\sqrt{xy}=y xdtdy+2xy=y
可转化为:
dydt=y−2xyx\frac{dy}{dt}=\frac{y-2\sqrt{xy}}{x} dtdy=xy−2xy
转化后的方程的自变量不能取到0,需额外计算,本章不给予计算,同时本章假设初值为[0,1/2,1,2](初值不为负数),在[0.01,10]绘制方程解,代码和结果如下所示:
f5(u,p,t)= (u-2*√(u*t))/t
u0 =[0,1/2,1,2];
tspan = (0.01,10.0);
plot()
for i in u0prob5 = ODEProblem(f5,i,tspan);sol5 = solve(prob5,saveat=0.01);plot!(sol5,label=i)
end
plot!()
例7
dydt=x−y+1x+y−3\frac{dy}{dt}=\frac{x-y+1}{x+y-3} dtdy=x+y−3x−y+1
注:此方程需额外考虑x+y≠3,故本章选取解的范围[10,20],初值分别为-2、-1、-1/2、0、1/2、1、-2,代码和结果如下所示:
f6(u,p,t)= (t-u+1)/(t+u-3)
u0 =[-2,-1,-1/2,0,1/2,1,-2];
tspan = (10.0,20.0);
plot()
for i in u0prob6 = ODEProblem(f6,i,tspan);sol6 = solve(prob6,saveat=0.01);plot!(sol6,label=i)
end
plot!()
2.2 线性微分方程与常数变易法
例1(例2)
(3x2+6xy2)dx+(6x2y+4y3)dy=0(3x^2+6xy^2)dx+(6x^2y+4y^3)dy=0 (3x2+6xy2)dx+(6x2y+4y3)dy=0
可变换为:
dydx=−3x2+6xy26x2y+4y3\frac{dy}{dx}=-\frac{3x^2+6xy^2}{6x^2y+4y^3} dxdy=−6x2y+4y33x2+6xy2
此时初值不为0,本章选取初值为:-2,-1,-1/2,1/2,1,2,绘制在[10,20]上的解,结果和代码如下所示:
f7(u,p,t)= (3*t^2+6*t*u^2)/(6*t^2*u+4*u^3)
u0 =[-2,-1,-1/2,1/2,1,2];
tspan = (10.0,20.0);
plot()
for i in u0prob7 = ODEProblem(f7,i,tspan);sol7 = solve(prob7,saveat=0.01);plot!(sol7,label=i)
end
plot!()
例3
(cosx+1y)dx+(1y−xy2)dy=0(cosx+\frac{1}{y})dx+(\frac{1}{y}-\frac{x}{y^2})dy=0 (cosx+y1)dx+(y1−y2x)dy=0
可转化为:
dydx=y2cos+yy−x\frac{dy}{dx}=\frac{y^2cos+y}{y-x} dxdy=y−xy2cos+y
本章选取初值为:-2,-1,-1/2,0,1/2,1,2,绘制在[10,20]上的解,结果和代码如下所示:
f8(u,p,t)= (cos(t)*u^2+u)/(u-t)
u0 =[-2,-1,-1/2,0,1/2,1,2];
tspan = (10.0,20.0);
plot()
for i in u0prob8 = ODEProblem(f8,i,tspan);sol8 = solve(prob8,saveat=0.01);plot!(sol8,label=i)
end
plot!()
例5
dydx=−xy+1+(xy)2\frac{dy}{dx}=-\frac{x}{y}+\sqrt{1+(\frac{x}{y}})^2 dxdy=−yx+1+(yx)2
本章选取初值为:-2,-1,-1/2,1/2,1,2,绘制在[10,20]上的解,结果和代码如下所示:
f9(u,p,t)= -t/u+√(1+(t/u)^2)
u0 =[-2,-1,-1/2,1/2,1,2];
tspan = (10.0,20.0);
plot()
for i in u0prob9 = ODEProblem(f9,i,tspan);sol9 = solve(prob9,saveat=0.01);plot!(sol9,label=i)
end
plot!()
例6
ydx+(y−x)dy=0ydx+(y-x)dy=0 ydx+(y−x)dy=0
本章选取初值为:-2,-1,-1/2,0,1/2,1,2,绘制在[10,20]上的解,结果和代码如下所示:
f10(u,p,t)= u/(t-u)
u0 =[-2,-1,-1/2,0,1/2,1,2];
tspan = (10.0,20.0);
plot()
for i in u0prob10 = ODEProblem(f10,i,tspan);sol10 = solve(prob10,saveat=0.01);plot!(sol10,label=i)
end
plot!()
常微分方程王高雄第三版--第二章一阶微分方程的初等解法--Julia实现相关推荐
- 常微分方程王高雄第三版--第一章绪论--Julia实现
本章主要展示1.1中的常微分方程模型中的RLC电路(书本方程1.6).数学摆(书本方程1.8).人口模型(书本方程1.12).传染病SIR模型(书本方程1.22).两生物种群生态模型(书本方程1.24 ...
- 算法导论第三版第二章思考题答案
算法导论第三版第二章思考题答案 第二章思考题 算法导论第三版第二章思考题答案 2.1 2.2 2.3 2.4 汇总传送门 2.1 #include<iostream> using name ...
- 汇编语言 王爽 第四版 第二章 检测点2.2
汇编语言 王爽 第四版 课后检测点 课后实验 持续更新~~ 检测点2.2 给定段地址为0001H,仅通过变化偏移地址寻址,CPU的寻址范围为 0010H 到 1000FH . 最小肯定是偏移地址为0, ...
- 《深入理解JAVA虚拟机》周志明 第三版 - 第二章 JAVA内存区域与内存溢出异常
一. 概述 在虚拟机自动内存管理机制下,不容易出现内存泄漏和内存溢出问题,但是一旦出现内存泄漏和溢出方面的问题,如果不了解虚拟机是怎样使用内存的,那排查错误.修正问题将会成为一项异常艰难的工作. 二. ...
- 04737 c++ 自学考试2019版 第二章课后程序设计题 2
/* * 04737 c++ 自学考试2019版 第二章课后练习 * 程序设计题 2 * 需求:设计并实现二维坐标系下点的类Point.... */ //标准流 #include<iostrea ...
- 数字图像处理--冈萨雷斯第4版--第二章 数字图像基础
数字图像处理--冈萨雷斯版--第二章 第二章 数字图像基础 2.1 视觉感知要素 2.1.1 人眼的结构 2.1.2 人眼中图像的形成 2.1.3 亮度适应与辨别 2.2 光和电磁波谱 2.3 图像感 ...
- 汇编语言(王爽第三版) 实验5
汇编语言(王爽第三版) 实验5 由图可见: 第一问:cpu执行程序,程序返回前,ds一直未变,所以data段中的数据不变. 第二问:cpu执行程序,程序返回前,cs=1CD5,SS=1CD4,DS=1 ...
- 计算机组成与结构第二章ppt,计算机组成原理(华科版)第二章 运算方法与运算器.ppt...
文档介绍: 第二章运算方法与运算器 2.1 数据信息的表示方法 2.1.1数值数据的表示 淘在盛纬娃消镶勉桌乡利亚钦沙隐酋谴牲斗丙茸乔泛戊篡汽栽辫滔矮空芥计算机组成原理(华科版)第二章运算方法与运算器 ...
- 带权中位数-算法导论第三版第九章思考题9-2
带权中位数-算法导论第三版第九章思考题9-2 b 时间复杂度O(nlgn) float find_median_with_weights_b(float *array,int length) {qui ...
最新文章
- 三天打工生活终于结束了
- 同步、异步、阻塞、非阻塞、BIO、NIO、AIO
- Java项目导出为可执行jar包,并在windows/linux下运行
- linux乌班图vi怎么使用,Ubuntu上vi(vim)编辑器使用教程
- java nio改造io,java – 将NIO与IO混合
- Reindex SQL Server DB table
- BUUOJ reverse SimpleRev (爆破)
- 关于游戏架构设计的一些整理吧
- leetcode —— 1025. 除数博弈
- 普中51控制火焰传感器_传感器检测:以后,电动车充电会变成这样
- 事件 event
- 带你认识Oracle索引类型(全面总结)
- Redis中的lua脚本
- Zigbee协议栈中文说明
- 测试自动化的三波浪潮
- 第一篇,嵌入式ubantu系统安装及常见ubantu命令,C语言数据类型和变量的定义
- Linux rar 压缩 解压文件
- 嵌入式软件工程师自学之路
- 白杨SEO:新媒体如何避免侵权?这篇自媒体防侵权实用指南让你少走弯路!
- 猿创征文|OneOS 万耦启物TB6612驱动电机