![編程為什么結(jié)果出來(lái)不對(duì)啊]()
我寫(xiě)的程序如下(雖然能運(yùn)行出來(lái),結(jié)果卻不對(duì) 大家?guī)臀铱聪鲁绦蚴欠裼袉?wèn)題):
% Example 1
clear;clc
%%%%%%%%%%%%%%%%%%%% 方程里的參數(shù)設(shè)置 %%%%%%%%%%%%%%%%%%%%%%%%%%%%
alpha=0.5;
beta=0.5;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
L=1; %區(qū)間x的長(zhǎng)度[0,1]
Mx=L/0.0025; %區(qū)間x的等分的份數(shù)
h=L/Mx; %區(qū)間x的劃分小區(qū)間長(zhǎng)度
x=[0:Mx]*h; % x的點(diǎn)值
%上面給出了x的點(diǎn)值,結(jié)合t點(diǎn)的點(diǎn)值和函數(shù) u(x,t)的值就可以畫(huà)出 曲面u(x,t),三維數(shù)組
N=1000; %時(shí)間t的等分份數(shù)
tau=0.0025; % 時(shí)間t的劃分小區(qū)間長(zhǎng)度
t=[0:N]*tau; %時(shí)間t的點(diǎn)值 0點(diǎn)和1點(diǎn) 101個(gè)
%%%%%%%%%%%%%%%%%%%%%%%%%%% 系數(shù)矩陣?yán)锩娴某?shù)定義 r R(i) %%%%%%%%%%%%%%%%%%
R=(tau^alpha)*(gamma(2-alpha))/(h*h); % r常數(shù)
%計(jì)算 r(j)
for j=1:Mx-1
r(j)=beta*R/j; % 變數(shù) r_j
end
r;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%分?jǐn)?shù)階系數(shù)矩陣%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
v0=1+2*R-r; %主對(duì)角線上元素
A=diag(v0);
v1=r-R ;
v1=v1(2:end);%下次對(duì)角線上的元素
B=diag(v1,-1);
v3=-R*ones(1,Mx-2); %上次對(duì)角線上的元素
C=diag(v3,1);
D=A+B+C;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%非齊次項(xiàng)f(x,t)=2\sqrt(t/pi) sin(pi x)-pi t ((cos pi x)/(2x)-pi sin(pi x))
for k=1:size(t,2) %size(a,2)指行向量元素個(gè)數(shù)
F(k, =2*(t(k)^(1/2)/pi^(1/2)).*sin(pi*x) + pi*t(k).*(pi*sin(pi.*x) - cos(pi*x)./(2*x));
%第k行向量 時(shí)間不變而空間位置變化
end
F=F(2:end-1,2:end-1);
F=F';
%去掉第一行和最后一行 去掉第一列和最后一列 對(duì)應(yīng) t=0 x=0
%%%%%%%%%%%%%%%%%%下面用遞推關(guān)系式得到關(guān)于 u 的數(shù)表 %%%%%%%%%%%%%%%%%%%%%%%%%%%
u(:,1)=inv(D)*((tau^alpha)*gamma(2-alpha)*F(:,1));
% D*u1=u0+ tau^alpha)F1 例一中 u0=0 即初值函數(shù)為0函數(shù)
%定義 w(k)=(1+k)^(1-alpha)-k^(1-alpha);d(k)=w(k)-w(k+1)
for k=1:N
w(k)=(1+k)^(1-tau)-k^(1-tau);
end
for k=1:N-1
d(k)=w(k)-w(k+1); %系數(shù) d(k)
end
d;
%%%%%%%%%%%%%%%%%%%%%%%%%% 單獨(dú)算出 u2 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
u(:,2)=inv(D)*((1-w(1))*u(:,1)+(tau^alpha)*gamma(2-alpha)*F(:,1));
%%%%%求和 \sum d(k)*u^(n-k) 列和 sum(A(:,a:b);2)
for n=2:N-2
for k=1:n-1
s(:,k)=d(n-k)*u(:,k);
end
u(:,n+1)=inv(D)*((tau^alpha)*gamma(2-alpha)*F(:,n+1)+(1-w(1))*u(:,n)+sum(s(:,1:n-1),2));
% u0=0
end
h=x(2:end-1);
g=t(2:end-1);
[h,g]=meshgrid(h,g);%生成網(wǎng)格
mesh(h,g,u');%畫(huà)出曲面圖
xlabel('x') %添加坐標(biāo)軸
ylabel('t')
zlabel('u(x,t)')
for k=1:N-1
for j=1:Mx-1
plot3(x(j),t(k),u(j,k))
e(j,k)=u(j,k)-t(k)*sin(pi*x(j)); %誤差函數(shù)
end
end
e=max(max(abs(e))) %最大誤差 |