matlab程序, 被調(diào)用函數(shù)中使用 if 語(yǔ)句出錯(cuò)
clear all; close all;
l=45;
alpha1=-0.25;
lambda1=0.25;
n=128;
x=l/n*[-n/2:n/2-1]; y=x;
kx=(2*pi/l)*[0:n/2-1 -n/2:-1];
kx(1)=1e-6; ky=kx;
[x,y]=meshgrid(x,y);
[kx,ky]=meshgrid(kx,ky);
h=2*pi/n;
column=[00.5*(-1).^(1:n-1).*cot((1:n-1)*h/2)]';
d=(2*pi/l)*toeplitz(column,column([1n:-1:2]));
column=[-pi^2/(3*h^2)-1/6-0.5*(-1).^(1:n-1)./sin(h*(1:n-1)/2).^2];
d2=(2*pi/l)^2*toeplitz(column);
column=[0 (-1).^(1:n-1).*cot((1:n-1)*h/2).*(-pi^2/(2*h^2)+3/4*csc((1:n-1)*h/2).^2)]';
w=1+0.1*cos(0.31*x)+0.1*cos(0.31*y);%初始條件
t=[0 17 17.5 18 19 20 21 22 23 25 30 40]
[t,wsol]=ode45('advection_diffusion', t, w( : ),[],n,d,d2,alpha1,lambda1,x);
advection_diffusion.m
function dw=advection_diffusion(t,w,dummy,n,d,d2,alpha1,lambda1, x);
w=reshape(w,n,n); wt=fft2(w);
if (t<=20)
dw=reshape(i*(alpha1*d2*w+lambda1*w*d2')+t,n^2,1);
else
dw=reshape(i*(alpha1*d2*w+lambda1*w*d2')-t,n^2,1);
end
我想求解一個(gè)偏微分方程,變量t 取了12個(gè)值,在被調(diào)用的函數(shù) advection_diffusion 中需要用到一個(gè) if 語(yǔ)句,對(duì) t進(jìn)行分類,程序一直運(yùn)行不出來(lái)。希望得到大家的指點(diǎn),不勝感激。
返回小木蟲(chóng)查看更多
京公網(wǎng)安備 11010802022153號(hào)
if 后面t<20的括號(hào)去掉
呀,確實(shí)是這個(gè)原因。感謝啊 很久沒(méi)有上小木蟲(chóng)了,也不知道怎樣把金幣給你
,