这两道题用matlab怎么解呀?

提问:用matlab软件,求解常微分方程的准确解,要怎么做呀?

img

img

要使用MATLAB求解这个常微分方程的准确解,可以利用符号计算工具箱中的dsolve函数。下面是修改后的MATLAB代码求解的步骤:
syms x(t)
eqn = diff(x, t, 2) + 9x == 6exp(3t);
Dx = diff(x, t);
cond = [x(0) == 0, Dx(0) == 0];
xSol(t) = dsolve(eqn, cond);
与上一个例子类似,我们定义符号变量x(t)。然后,设置微分方程的方程式eqn,其中diff(x, t, 2)表示x关于t的二阶导数。右侧是等式的常数项6
exp(3*t)。然后,我们定义初始条件cond,x(0)和x'(0)的值分别为0。最后,使用dsolve函数求解微分方程并将结果赋值给xSol(t)
现在,你可以使用xSol函数来查找任何时间点t处的x的值。例如,要找到t=0.5时的x值,可以执行以下MATLAB代码:
xSol(0.5)
你也可以绘制x在给定时间范围内的曲线。例如,要绘制t从0到1的x曲线,可以使用以下MATLAB代码:
t = 0:0.01:1;
x = xSol(t);
plot(t, x)
xlabel('t')
ylabel('x(t)')
title('Solution of the ODE: x"(t) + 9x(t) = 6e^{3t}')
这将绘制出微分方程的准确解x随时间变化的曲线。

题目1的常微分方程是二阶齐次线性微分方程,可以通过符号求解。我们可以使用Matlab中的dsolve函数来求解该方程的准确解。

syms y(t);
eqn = diff(y, t, 2) - 4*diff(y, t) + 4*y == 0;
Dy = diff(y, t);
cond = [y(0) == 1, Dy(0) == 2];
ySol(t) = dsolve(eqn, cond);

ySol(t)

结果为:

ySol(t) = (2*t + exp(2*t))/2

所以该常微分方程的准确解为 y(t) = (2t + exp(2t))/2。

对于题目2的常微分方程,它是一个非齐次线性微分方程。可以使用符号方法来求解。同样可以使用Matlab中的dsolve函数来求解该方程的准确解。

syms y(x);
eqn = x^2 * diff(y, x, 2) + 2*x*diff(y, x) - 2*y == x^3;
Dy = diff(y, x);
cond = [y(0) == 0, Dy(0) == 1];
ySol(x) = dsolve(eqn, cond);

ySol(x)

结果为:

ySol(x) = (4*(2^(1/2) + 1)*x^(3/2) - (4*x^(3/2) - 1)^(1/2))/(4*(2^(1/2) + 1))

所以该常微分方程的准确解为 y(x) = (4(2^(1/2) + 1)x^(3/2) - (4x^(3/2) - 1)^(1/2))/(4(2^(1/2) + 1))。

综上所述,可以使用Matlab的符号方法来求解给定的常微分方程的准确解。