필터 지우기
필터 지우기

Error: Unable to perform assignment because the left and right sides have a different number of elements.(line 25)

조회 수: 2 (최근 30일)
%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=2
nplots=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

채택된 답변

Walter Roberson
Walter Roberson 2019년 3월 29일
Your x is a column vector of length N+1. You use all of it in the right hand side of your calculation of v(1) so the right hand side is going to have N+1 elements. You will not be able to fit that into the scalar location v(1).
  댓글 수: 5

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Geometry and Mesh에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by