matlab解一个微分方程并画出解的图像

用matlab解下面的方程,如果无穷大次求和解不出来的话可以用一个较大的数代替无穷大,最后要附上代码和解的图像

img

代码:

V0 = 1e8;
T = 0.00025;
td = 0.0000152;
N = 1e4;
n = 1:N;

Vpt = @(t)  V0/2 + sum( V0*( sin(2*n*pi*td/T).*cos(2*n*pi*t/T) + (1-cos(2*n*pi*td/T)).*sin(2*n*pi*t/T) )./(n*pi) );
Fpt = @(t)  V0*t/2 + sum( (T*(V0*cos((2*pi*n*t)/T - (2*pi*n*td)/T) - V0*cos((2*pi*n*t)/T)))./(2*n.^2*pi^2) );
Fpt2 = @(t) Fpt(t) - Fpt(0);   % 原函数

dfun = @(t,x) Vpt(t)*x./Fpt(t);

[T,X] = ode45( dfun,[1 10],0.1 );

figure
plot(T,X)

结果:

img

需要注意的问题:

  1. t=0时,若Fpt(0)=0,则会出现分母为0无意义的情况;
  2. 需要给出tau的初始值。