Engee 文档
Notebook

微分方程方向和等线场的研究

导言

微分方程是描述自然界、技术和经济学动态过程的有力工具。 然而,他们的分析解决方案并不总是可能的,并且通常不需要了解系统的整体行为。 在这种情况下,定性分析方法来拯救,其中方向和等线领域的可视化占据了特殊的位置。

在这个例子中,我们检查方程 使用Julia语言的现代计算工具。 我们不仅将建立一个数学模型,而且还将创建一个可视化的可视化,使我们能够直观地理解这个方程的解的结构。 使用绘图库。jl和DifferentialEquations。jl演示了现代计算技术如何使复杂的数学概念可访问和可视化。

我们将附加必要的库。

In [ ]:
using DifferentialEquations, LinearAlgebra

函数和初始条件的定义

让我们定义isocline函数。 这个简单的函数定义了一组恒定斜率的等倾曲线。
对于方程 等线是垂直偏移的抛物线。

In [ ]:
function_inclines(x,R)=x.^2+R
Out[0]:
функция_изоклины (generic function with 1 method)

沿轴设置绘图区域的边界 .
我们还将定义参数的范围 对于等线,这将创建一个多样化的曲线族。

In [ ]:
x_min=-4.0
x_max=4.0
y_min=-4.0
y_max=4.0
R_min=-2
R_max=2

等线,等线

让我们用方便的尺寸为我们的图表创建主画布.

In [ ]:
main_graph=plot(size=(800,600),grid=true,legend=:best);

在这个循环中,我们将创建isoclines系列本身-每条线对应于它自己的值。 .
等线越密集,该区域内溶液的斜率变化越快。

In [ ]:
对于R_min中的R_flow:1:R_max
    x_values=范围(x_min,x_max,长度=100
    y_values=function_lines(x_values,R_flow)
    plot!(основной_график, x_значения, y_значения, linewidth=2, label="R=$R_flow")
end

让我们沿着轴形成一个均匀的点网格 于构建向量。
这些点将成为方向场的起始坐标。

In [ ]:
grid_x=范围(x_min,x_max,长度=15
grid_u=范围(y_min,y_max,长度=15)

方向场

我们将准备用于存储矢量数据的数组。
每个向量都需要一个起点 和方向的分量 .

In [ ]:
x_vectors=Float64[]
y_vectors=Float64[]
and_components=Float64[]
v_components=Float64[]

在这个双循环中,我们计算场的每个向量的方向。

In [ ]:
对于grid_x中的x
    对于网格中的y
        derivation_y=y-x^2
        推导_x=1.0
        长度=范数([导数x,导数y])
        如果长度>0
            推!(x_vectors,x)
            推!(y_vectors,y)
            推!(and_components,0.4production_x/length)
            推!(v_组件,0.4production_u/长度)
        end
    end
end

让我们用红线将方向字段添加到图表中。

In [ ]:
颤抖!(main_graphics,x_vectors,y_vectors,quiver=(i_components,v_components), 
        color=:red, linewidth=1.5, label="方向场"); 

微分方程

让我们定义一个差分系统-这是我们任务的核心。
函数返回点处的导数 ,定义解决方案的局部行为。

In [ ]:
system_od的函数(变量,参数,x)
    y=变量[1]
    return [y - x^2]
end

让我们定义积分曲线的初始条件。
为了获得更好的视觉差异,我们将为每个解决方案分配自己的线条颜色。

In [ ]:
初始条件= [-3.0, -1.0, 1.0, 3.0]
颜色=[:绿色,:品红色,:青色,:黑色]
线条样式=[:dash,:dash,:dash,:dash]

解决方案和可视化

让我们数值求解每个初始条件的ODE。
计算精度高,保证积分曲线平滑准确。

In [ ]:
for(index,initial)in enumerate(初始条件)
    初始向量=[初始]
    时间间隔=(x_min,x_max)
    task=ODEProblem(system_ode,开始向量,时间间隔)
    解决方案=解决(问题,Tsit5(),reltol=1e-8,abstol=1e-8
end

让我们构建生成的图表。

In [ ]:
xlabel!("x")
ylabel!("y")
title!("方程dy/dx=y-x2的方向和等线场")
xlims!(x_min-0.5,x_max+0.5)
伊利姆斯!(y_min-0.5,y_max+0.5)
plot!(top_margin = 8Plots.mm)
显示(main_graph)

最终结果显示了微分方程的美感和结构。

结论

所进行的研究清楚地表明了微分方程分析中的可视化方法。 构造的方向场与等线族相结合,形成了一种"地形图",允许预测解决方案的行为,而无需明确找到它们。 通过数值方法计算的积分曲线证实了定性分析的正确性,并显示了不同的初始条件如何导致相空间中的不同轨迹。

特别有价值的是该方法在Engee环境中的实际实现,它结合了Julia语法的计算效率和简单性。 由此产生的可视化作为一个极好的教育材料,展示了现代数学中分析和数值方法的统一。 这种方法为呈现复杂的数学概念和在微分方程作为主要建模工具的各种科学领域进行研究开辟了新的可能性。