[未答复] 用pdepe函数求解变系数方程,循环变量导入问题

[复制链接]
hty126230 发表于 4 天前
  1. m=0;
  2. t=linspace(0,1,11);%时间分为11个节点
  3. x=linspace(0,2*pi,21);%空间分为21个节点
  4. tau=0.1;%τ=0.1
  5. ut=exp(-1)*sin(x)';
  6. for L=1:5
  7.      for i=1:5
  8.           sol1=pdepe(m,@fwt60pde_1,@fwt60ic_1,@fwt60bc_1,x,t,[],L,i,tau);
  9.           u=sol1(1,:,1);
  10.           sol2=pdepe(m,@fwt60pde_2,@fwt60ic_2,@fwt60bc_2,x,t,[],L,i,tau);
  11.           v=sol2(1,:,1);
  12.           A(:,i)=(v-u)/tau;
  13.      end
  14. end
  15. disp(A);

  16. function[d,f,s]=fwt60pde_1(x,t,u,DuDx,L,i,tau)
  17. c=[0.5,0.4,0.3,0.2,0.1];
  18. c(i)=c(i)+(L-1)*tau;
  19. d=1;
  20. f=(c(1)+c(2)*sin(x)+c(3)*cos(x)+c(4)*sin(2*x)+c(5)*cos(2*x))*DuDx;
  21. s=exp(-t)*(sin(x)*sin(x)-cos(x)*cos(x));
  22. end

  23. function[p1,q1,pr,qr]=fwt60bc_1(x1,u1,xr,ur,t,L,i,tau)
  24. p1=u1;
  25. q1=0;
  26. pr=ur;
  27. qr=0;
  28. end

  29. function u0=fwt60ic_1(x,L,i,tau)
  30. u0=sin(x);
  31. end

  32. function[d,f,s]=fwt60pde_2(x,t,u,DuDx,L,i,tau)
  33. c=[0.5,0.4,0.3,0.2,0.1];
  34. c(i)=c(i)+L*tau;
  35. d=1;
  36. f=(c(1)+c(2)*sin(x)+c(3)*cos(x)+c(4)*sin(2*x)+c(5)*cos(2*x))*DuDx;
  37. s=exp(-t)*(sin(x)*sin(x)-cos(x)*cos(x));
  38. end

  39. function[p1,q1,pr,qr]=fwt60bc_2(x1,u1,xr,ur,t,L,i,tau)
  40. p1=u1;
  41. q1=0;
  42. pr=ur;
  43. qr=0;
  44. end

  45. function u0=fwt60ic_2(x,L,i,tau)
  46. u0=sin(x);
  47. end
复制代码
我的想法将外部循环变量L、i导入fwt60pde函数中(对应官方文档的pdefun),用于定义[d f s]中的f,也就是扩散项系数,但是计算后发现系数未发生变化,两个sol结果相同,结果A矩阵为0,是不是这种导入方法不对呢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

相关帖子
热门教程
站长推荐
快速回复 返回顶部 返回列表