如图所示,希望可以帮忙看看~初学matlab很多格式都没有掌握。
而且看到了一则警告,说后续版本中会禁用字符串类型,最好能用符号变量。谢谢啦
你好,鉴于你是初学者,我这里给你示范一下数值方法和符号方法分别怎么求解:
(1)数值方法:定义ode->给定初值和时间范围->ode函数求解->画图
% 定义ode
odefun = @(t, y) [y(2) ; -2*y(2) + 2*y(1)]; % y(1)表示y的, y(2)表示y的一阶导数,记住[dy; dy'] = ode(t,y)*dt
tspan = [0,10]; % 求解的时间范围
y0 = [1; 1]%求解的初始y值, 第一个1指的是初始y(t=0),第二个是初始y'(t=0)
[t, y] = ode45(odefun, tspan, y0); %求解用ode45显式算法, 得到的t有1列,得到的y有两列(分别是y和y')
figure(1);clf % 创建figure(1)图像并清楚图像上的数据
plot(t,y)%画两列图,第一条线是y-t图,第二条是y'-t图
legend('y(t)', 'y''(t)')%给两条曲线做标记
这样就得到了数值解的图像了
(2)符号解: 定义符号->定义方程和条件->用dsolve求得符号解->用matlabFunction或者eval(subs())获取实际数值并画图。
syms y(t) t %定义函数y(t)和t
eq = diff(y,2) + 2*diff(y,1) - 2*y;%方程
Dy = diff(y,1);%求一次导
conds = [y(0)==1, Dy(0)==1];%初始条件
y = dsolve(eq, conds)%求解符号解
dy = diff(y,t);%得到导数
y = matlabFunction(y);
dy = matlabFunction(dy);
figure(2); clf
fplot(y, [0,10],'r--')%直接画y-t图
hold on
fplot(dy, [0,10],'b-')%直接画y'-t图
legend('y(t)', 'y''(t)')%给两条曲线做标记
符号解图像
可见两者是差不多的,但是数值解求解快速,适用面广,符号解只有特定方程才会有解。
有帮助望采纳,谢谢啦