混沌电路仿真不出图
应该是出现这种图形
把与电感串联的100电阻取消试看,看仿真图示波器没连接?https://img-blog.csdnimg.cn/img_convert/7ccff12a9f181c20fccab94b7af0c675.png
参考GPT和自己的思路,以下是一个MATLAB代码示例,可以用来仿真忆容电感混沌振荡器:
function [t, x, y, z] = chua_circuit(alpha, beta, gamma, rho, initial_conditions, tspan)
% 忆容电感混沌振荡器的仿真函数
% 输入参数:
% alpha、beta、gamma、rho:忆阻电容、忆电感、非线性电阻和电压源的参数
% initial_conditions:系统的初始条件,一个包含x、y和z初始值的向量
% tspan:仿真时间范围,一个包含起始时间和结束时间的向量
% 输出参数:
% t、x、y、z:系统的仿真结果,分别对应时间和三个状态变量的变化
% 定义系统的微分方程
f = @(t, x) [
alpha * (x(2) - x(1) - rho * chua_f(x(1))),
x(1) - x(2) + x(3),
-beta * x(2) - gamma * chua_f(x(1))
];
% 进行数值积分求解微分方程
[t, xyz] = ode45(f, tspan, initial_conditions);
% 将xyz拆分成三个状态变量的向量
x = xyz(:,1);
y = xyz(:,2);
z = xyz(:,3);
end
function f = chua_f(x)
% Chua的非线性电阻函数
% 输入参数:
% x:电阻器两端的电压
% 输出参数:
% f:电阻器两端的电流
if x < -1
f = -1/2 * (x - 1/3);
elseif x > 1
f = 1/2 * (x + 1/3);
else
f = x - 1/3 * x^3;
end
end
你可以将这个代码保存为一个.m文件,然后在MATLAB命令窗口中调用该函数来进行仿真。例如,如果你想仿真系统参数为α=1, β=0.5, γ=0.7, ρ=1,初始条件为x=0, y=0.5, z=0,仿真时间为0到1000秒,则可以执行以下命令:
alpha = 1;
beta = 0.5;
gamma = 0.7;
rho = 1;
initial_conditions = [0; 0.5; 0];
tspan = [0, 1000];
[t, x, y, z] = chua_circuit(alpha, beta, gamma, rho, initial_conditions, tspan);
这将输出仿真结果,并可以使用MATLAB的绘图函数将结果可视化,例如:
% 绘制三个状态变量随时间的变化曲线
figure;
subplot(3,1,1);
plot(t, x);
xlabel('时间');
ylabel('x');
subplot(3,1,2);
plot(t, y);
xlabel('时间');
ylabel('y');
subplot(3,1,3);
plot(t, z);
xlabel('时间');
ylabel('z');
以下答案由GPT-3.5大模型与博主波罗歌共同编写:
首先,如果你在 Multisim 中仿真忆容电感混沌电路时无法看到任何输出,则可能是因为仿真时间不够长或混沌振荡器的初始状态不正确所导致的。
针对这个问题,我们可以将仿真时间延长,或者设置不同的初始状态。例如,你可以将仿真时间设置为几毫秒或几秒,直到看到稳定的混沌轨道出现。
在你的电路图中,我发现电感线圈的极性可能有误,导致电路无法正常工作。请检查电感线圈的极性方向,并确保它们正确地连接到了电路中。
此外,你可以尝试使用 SPICE 模型仿真混沌电路,这通常比 Multisim 更适合仿真混沌电路。
关于代码部分,以下是一个基于 Python 的忆容电感混沌电路仿真代码,作为参考:
import numpy as np
import matplotlib.pyplot as plt
def chua(x, alpha, beta, gamma, rho):
dx = alpha * (x[1] - x[0] - rho * chua_fn(x[0]))
dy = x[0] - x[1] + x[2]
dz = -beta*x[1] - gamma*x[2]
return np.array([dx, dy, dz])
def chua_fn(x):
if abs(x) < 1:
return x**3 - x
else:
return np.sign(x)*(2*abs(x)**(2/3) - 1)
def run_chua(initial_state, alpha, beta, gamma, rho, dt, t_end):
n_steps = int(t_end / dt)
x = np.zeros((n_steps, 3))
x[0] = initial_state
for i in range(1, n_steps):
k1 = dt * chua(x[i-1], alpha, beta, gamma, rho)
k2 = dt * chua(x[i-1] + 0.5*k1, alpha, beta, gamma, rho)
k3 = dt * chua(x[i-1] + 0.5*k2, alpha, beta, gamma, rho)
k4 = dt * chua(x[i-1] + k3, alpha, beta, gamma, rho)
x[i] = x[i-1] + (1/6)*(k1 + 2*k2 + 2*k3 + k4)
return x
# Parameter values
alpha = 1.0
beta = 0.5
gamma = 0.7
rho = 1.0
# Simulation settings
dt = 1e-4
t_end = 20
# Initial state
initial_state = [1.0, 0.0, 0.0]
# Run simulation
x = run_chua(initial_state, alpha, beta, gamma, rho, dt, t_end)
# Plot results
fig, ax = plt.subplots(3, figsize=(8, 8), sharex=True)
ax[0].plot(x[:, 0])
ax[0].set_ylabel('x')
ax[1].plot(x[:, 1])
ax[1].set_ylabel('y')
ax[2].plot(x[:, 2])
ax[2].set_ylabel('z')
ax[2].set_xlabel('time')
plt.show()
这个代码使用了经典的第一类 Chua 混沌电路模型,但是你可以根据自己的需要进行修改和调整。
如果我的回答解决了您的问题,请采纳!
您好,关于你您提出的忆容电感混沌电路仿真不出图的问题,根据您提供的信息来看,看不出来是什么问题,建议检查:
首先,检查是你的电路图和论文中哪里有差别,根据差异来反向定位哪里出现问题
其次,检查使用到的参数,论文中有没有提供完整的参数,你的参数是否有遗漏,或者有些参数是需要根据实际情况修改的,比如α=1,β=0.5,γ=0.7,ρ=1这些参数是固定的吗,还是需要经过计算得来,如果是经过计算的,那就检查计算的对不对。
再次,在通读下论文,对照下的仿真程序,检查有没有遗漏的步骤。在未知原因的情况下,只能一步一步来检查核对。