求微分方程初值问题的符号解,并与数值解进行比较
x²y"-xy'+y=xlnx
y(1)=y'(1)=1
syms x y(x)
eqn = x^2*diff(y, x, 2) - x*diff(y, x) + y == x*log(x);
cond1 = y(1) == 1;
cond2 = subs(diff(y), x, 1) == 1;
conds = [cond1, cond2];
ySol(x) = dsolve(eqn, conds);
disp("符号解:")
disp(ySol(x))
% 求数值解
f = @(x,y) [y(2); (x*y(2) - y(1) + x*log(x))/x^2];
xspan = [1 2];
y0 = [1 1];
[x, y] = ode45(f, xspan, y0);
disp("数值解:")
disp(y(end,1))
% 绘图
plot(x, y(:,1))
hold on
fplot(ySol, xspan, 'r')
legend('数值解', '符号解')