24小时热门版块排行榜    

CyRhmU.jpeg
查看: 943  |  回复: 3
【悬赏金币】回答本帖问题,作者hylb3020将赠送您 30 个金币
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

hylb3020

木虫 (正式写手)

流体力学爱好者

[求助] matlab程序, 被调用函数中使用 if 语句出错已有1人参与

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


我想求解一个偏微分方程,变量t 取了12个值,在被调用的函数 advection_diffusion 中需要用到一个 if 语句,对 t进行分类,程序一直运行不出来。希望得到大家的指点,不胜感激。
回复此楼
人生得意须尽欢
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

hylb3020

木虫 (正式写手)

流体力学爱好者

送红花一朵
引用回帖:
2楼: Originally posted by 独孤神宇 at 2021-06-29 19:41:51
if 后面t&lt;20的括号去掉

呀,确实是这个原因。感谢啊  很久没有上小木虫了,也不知道怎样把金币给你。
人生得意须尽欢
3楼2021-06-29 22:06:54
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 4 个回答

独孤神宇

版主 (知名作家)

【答案】应助回帖

感谢参与,应助指数 +1
if 后面t<20的括号去掉

发自小木虫Android客户端

» 本帖已获得的红花(最新10朵)

数值计算
2楼2021-06-29 19:41:51
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

hylb3020

木虫 (正式写手)

送红花一朵
引用回帖:
2楼: Originally posted by 独孤神宇 at 2021-06-29 19:41:51
if 后面t&lt;20的括号去掉

4楼2021-06-29 22:08:41
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
不应助 确定回帖应助 (注意:应助才可能被奖励,但不允许灌水,必须填写15个字符以上)
信息提示
请填处理意见