#我求解出的常微分方程组输出是struct字符,而不是函数,请问怎么把常微分方程组的输出解设置为函数呢
syms z(t) [1,2]
A=[-1,1;2,-2];
dsolve(diff(z)==z*A,z(0)==[2,5])
上面这个方程显示的解为
ans =
包含以下字段的 struct:
z2: (8*exp(-3*t))/3 + 7/3
z1: 14/3 - (8*exp(-3*t))/3
但是syms y(t)
y(t)=dsolve(diff(y)==y,y(0)==9)
的解就是y(t) =
9*exp(t)
输入y(10)就可以计算
该回答引用GPTᴼᴾᴱᴺᴬᴵ
您可以将dsolve函数的输出结果转换为函数形式,这样就可以像普通函数一样使用了。在这个例子中,您可以使用matlabFunction函数将结构体中的解析函数转换为函数句柄。下面是一个示例:
syms z(t) [1,2]
A=[-1,1;2,-2];
sol = dsolve(diff(z)==z*A,z(0)==[2,5]);
% 将解析函数转换为函数句柄
z1(t) = matlabFunction(sol.z1);
z2(t) = matlabFunction(sol.z2);
% 现在可以像使用普通函数一样使用 z1(t) 和 z2(t)
注意:如果您要在多个文件中使用这些函数,可以将这些函数保存为单独的文件,以便在需要时调用。