%chebyshev differentiation matrix
function [D,x] = cheb(N)if N==0,D=0;x=1;return,end x=cos(pi*(0:N)/N)'; c=[2;ones(N-1,1);2].*(-1).^(0:N)'; X=repmat(x,1,N+1); dX=X-X';D=(c*(1./c)')./(dX+(eye(N+1))); D=D-diag(sum(D')); end%Differentiatio matrix and initial data
N=20; [D,x]=cheb(N); D2=D^2; eps=1; dt=min([.01,50*N^(-4)/eps]); t=0; sigma=.10;r=.12; K=100; k=2*r/sigma^2; v=max(exp((k+1)/2)*x-exp((k-1)/2)*x,0);t=0;%Differentition matrix and initial data;
%solve pde
tmax=100;tplot=2nplots=round(tmax/tplot)plotgap=round(tplot/dt),dt=tplot/plotgap xx=-1:.025:1; vv=polyval(polyfit(x,v,N),xx); plotdata=[vv;zeros(nplots,length(xx))]; tdata=t; for i=1:nplots for n=1:plotgap t=t+dt;v=v+dt*(eps*D2*v); v(1)=exp(((k+1)/2)*x+(((k-1)/2).^2+k)*t)-exp(((k-1)/2)*x+(((k-1)/2)^2)*t); v(end)=0; end vv=polyval(polyfit(x,v,N),xx); plotdata(i+1,:)=vv;tdata=[tdata;t]; end clf,subplot('position',[.1 .4 .8 .5])mesh(xx,tdata,plotdata),grid on axis([-1 1 0 tmax -1 2]), view(-60,55),colormap([0 0 0]),xlabel x,ylabel t,zlabel u
MATLAB: Error: Unable to perform assignment because the left and right sides have a different number of elements.(line 25)
boundary value problempde
Best Answer