专栏
标签
我不明白这个问题出在哪,嵌套数组绘图
一般问题
发布于 2024-12-02 20:41:16
查看 18过去573天

image.png

不支持嵌套数组绘图?可是我提取了几项也没用,有什么办法吗
以下是代码:附件也发了
using DifferentialEquations

参数定义

hbar = 1.0545718e-34 # 约化普朗克常数,单位 J*s
m = 9.10938356e-31 # 电子质量,单位 kg
a = 1e-10 # 势阱宽度,单位 m
n = 1 # 主量子数

能量和波函数的解析解

E = (hbar^2 * pi^2 * n^2) / (2 * m * a^2)

定义ODE函数

function odefun(du, u, p, t)
du[1] = u[2]
du[2] = -(2 * m * E) / hbar^2 * u[1]
end

初始条件

psi0 = 0.0 # 波函数在x=0处的值
dpsi0 = sqrt(2/a) * (n * pi / a) # 波函数在x=0处的导数值,根据解析解计算
u0 = [psi0, dpsi0]

时间跨度

tspan = (0.0, a)

定义ODE问题

prob = ODEProblem(odefun, u0, tspan)

求解ODE

sol = solve(prob, Tsit5(), saveat=0.0:0.001:a) # 使用Tsit5求解器,并设置时间步长

提取波函数和它的导数

aa = sol[1, :]
#dpsi = sol[2, :]

绘制波函数和它的导数

plot(psi)
legend()

能否有解决方案,谢谢
image.png

这是一开始的代码:
using DifferentialEquations

参数定义

hbar = 1.0545718e-34 # 约化普朗克常数,单位 J*s
m = 9.10938356e-31 # 电子质量,单位 kg
a = 1e-10 # 势阱宽度,单位 m
n = 1 # 主量子数

能量和波函数的解析解

E = (hbar^2 * pi^2 * n^2) / (2 * m * a^2)

定义ODE函数

function odefun(du, u, p, t)
du[1] = u[2]
du[2] = -(2 * m * E) / hbar^2 * u[1]
end

初始条件

psi0 = 0.0 # 波函数在x=0处的值
dpsi0 = sqrt(2/a) * (n * pi / a) # 波函数在x=0处的导数值,根据解析解计算
u0 = [psi0, dpsi0]

时间跨度

tspan = (0.0, a)

prob = ODEProblem(odefun,u0,tspan)

求解ODE

sol = solve(prob)

plot(sol)

所属专栏:Syslab基础平台
产品信息:Syslab科学计算环境
科学计算
附件 2 个附件(2kb)
采纳的回答
发布于 2024-12-03 08:36:41

您好

  1. 绘制波函数和他的倒数可以尝试使用fplot(psi)
  2. plot不支持绘制嵌套数组,您可以使用plot(sol[1])或者plot(sol[2])等数组索引的方式依次绘制所有结果

全部回答 1

发布于 2024-12-03 08:36:41

您好

  1. 绘制波函数和他的倒数可以尝试使用fplot(psi)
  2. plot不支持绘制嵌套数组,您可以使用plot(sol[1])或者plot(sol[2])等数组索引的方式依次绘制所有结果
用户
和原帖交流更多问题细节吧,去
我要发帖 我要发帖
资料中心 资料中心
查看更多>
热门帖子 热门帖子
主要贡献者 主要贡献者
过去7天