MATLAB求解和绘制微分方程

MATLAB求解和绘制微分方程,matlab,Matlab,考虑初始值问题: T dy dt+y=2t,y(1)=c 使用dsolve解决它 在t=0.01,0.1,1,10时,用c=0.7评估溶液。对c=1和c=2.1重复上述步骤 将c=0.7、0.9、1.1、1.5、2.1的解绘制在区间(0,2.5)的同一图表上 这是我试过的 syms c y(t) dsolve(diff(y)==(2*t-y)/t,y(.01)==.7) dsolve(diff(y)==(2*t-y)/t,y(.1)==0.7); dsolve(diff(y)==(2*t-

考虑初始值问题: T dy dt+y=2t,y(1)=c

  • 使用dsolve解决它
  • 在t=0.01,0.1,1,10时,用c=0.7评估溶液。对c=1和c=2.1重复上述步骤
  • 将c=0.7、0.9、1.1、1.5、2.1的解绘制在区间(0,2.5)的同一图表上
  • 这是我试过的

    syms c y(t)
    
    dsolve(diff(y)==(2*t-y)/t,y(.01)==.7)
    
    dsolve(diff(y)==(2*t-y)/t,y(.1)==0.7);
    
    dsolve(diff(y)==(2*t-y)/t,y(1)==0.7);
    
    dsolve(diff(y)==(2*t-y)/t,y(10)==0.7);
    

    每次我试着绘图时,它都说MATLAB不能从sym变成double。我真的不知道如何解决这个问题,或者我所尝试的是否正确

    您是否尝试过使用
    ezplot

    f = dsolve(diff(y)==(2*t-y)/t,y(.01)==.7)
    ezplot(f)
    

    注意:如果您有多个解决方案,则可能必须使用
    ezplot(f{1})
    取消对单元格数组的引用。

    关键是使用该函数将符号表达式转换为函数

    对于第一种情况,请尝试以下方法

    syms c y(t)
    
    myfun = symfun(dsolve(diff(y)==(2*t-y)/t,y(.01)==.7), t);
    
    N = 100;
    x = linspace(0.001, 2.5, N);
    plot(x, myfun(x));