matlab 解矩阵的常微分方程

ode45不能直接把矩阵作为输入或输出,输入和返回值必须是列向量。
所以把矩阵的每一个元素作为一个状态变量,例如2 * 2矩阵p=[p1,p2;p3,p4],在输出时转换为4 * 1列向量 [p1,p2,p3,p4] 即可.

建立方程组,输入为y,输出为dy。
考虑复数矩阵微分方程

dp/dt=(p * H-H * p) /i
(p,H都为2 * 2矩阵,p(t)是t的函数,H是一个常数矩阵)

由于输入的矩阵 y 会被自动转换为列向量,先把y reshape为2 * 2矩阵,然后写出矩阵形式方程dy_mat=(Hy-yH)/i; 输出dy再reshape为列向量即可。其中H是一个常数矩阵,作为参数传入。

function dy =lindblad( t,y,H )
y=reshape(y,size(H));
dy_mat=(H*y-y*H)/i;
dy=reshape(dy_mat,[numel(H),1]);
end

解方程

 %设置时间区间0~5秒,251个时间点
t_sec=0:0.02:5;
%初始状态,设置y0为2*2零矩阵,传入函数时会自动变为4*1列向量
y0=zeros(size(H));
%解出y随t的变化
[t,y] = ode45(@(t,y) lindblad( t,y,H ), t_sec, y0); 

最后得到的y是251 * 4的矩阵。每一行代表此时刻的4 * 1列向量。总共有251个时间点。再提取y的每一行,reshape为2 * 2矩阵即得到矩阵随时间变化情况。

要在MATLAB二元常微分方程,可以使用ode45函数。首先,将二元常微分方程表示为一个匿名函数,其中输入参数是时间t和状态向量x,输出是状态向量的导数。然后,使用ode45函数来求该方程。 例如,假设我们有以下的二元常微分方程: dx/dt = f(t, x) 其中,f(t, x)是一个函数,表示状态向量x的导数。根据引用\[1\],我们可以得到f(t, x)的表达式。 然后,我们可以在MATLAB中定义这个函数: ```matlab function dxdt = myODE(t, x) m = 1; % 定义常数m g = 9.8; % 定义常数g k = 0.1; % 定义常数k l0 = 0.5; % 定义常数l0 dxdt = \[x(2); (m*x(1)*x(4)^2-m*g*cos(x(3))-k*(x(1)-l0))/m; x(4); (-2*m*x(1)*x(2)*x(4) + m*g*x(1)*sin(x(3)))/(m*x(1)^2)\]; end ``` 然后,我们可以使用ode45函数来求这个二元常微分方程: ```matlab tspan = \[0 10\]; % 定义时间范围 x0 = \[0 0 0 0\]; % 定义初始状态向量 \[t, x\] = ode45(@myODE, tspan, x0); % 求二元常微分方程 % 绘制结果 plot(t, x(:, 1), 'r', t, x(:, 2), 'g', t, x(:, 3), 'b', t, x(:, 4), 'y'); legend('x1', 'x2', 'x3', 'x4'); xlabel('时间'); ylabel('状态'); ``` 这样,我们就可以得到二元常微分方程的数值,并将结果绘制出来。 #### 引用[.reference_title] - *1* *2* *3* [MATLAB含参数方程、矩阵方程、二阶微分方程组](https://blog.csdn.net/weixin_39561179/article/details/115808838)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值