#我求解出的常微分方程组输出是struct字符,请问怎么把常微分方程组的输出解设置为函数呢syms z(t) [1,2]A=[-1,1

#我求解出的常微分方程组输出是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)

您可以用 z1(t) 和 z2(t) 分别代替 sol.z1 和 sol.z2,然后通过输入参数 t 来计算函数值。例如,要计算 z1(0.5),您可以使用 z1(0.5) 来得到结果。

注意:如果您要在多个文件中使用这些函数,可以将这些函数保存为单独的文件,以便在需要时调用。