matlab求解一维柱坐标导热方程

圆柱内径0.05 外径0.25 内边温度500 外边温度10 导热系数0.5

以下是代码
tic
clear
clc
h=0.02;
x=[0.05:h:0.25]';
N=length(x)-1;
f(N-1)=0
f(1)=-500;
f(end)=-10;
e=ones(N-1,1);
C1=(1/h^2)spdiags([e -2e e],[-1 0 1],N-1,N-1);
cc=2hx(2:N);
b=(0.5).*(cc.^-1);
C2=full(spdiags([-b b],[-1 1],N-1,N));
C2(:,N)=[];
C=C1+C2;
f=f';
D=C\f(:);

你好,你的边界条件施加错误了,现帮你改正,有帮助望采纳哟谢谢啦

tic
clear
clc
h=0.02;
x=(0.05:h:0.25)';
N=length(x)-1;
f = zeros(size(x));
e=ones(N-1,1);
C1=(1/h^2)*spdiags([e -2*e e],[-1 0 1],N-1,N-1);
cc=2*h*x(2:N);
b=1./cc; % 1除以
C2=full(spdiags([-b b],[-1 1],N-1,N));
C2(:,N)=[];
C=C1+C2;
% 边界条件
f(2) = -(-500*C(2,1));
f(end-1) = -(0*C(end-1,end));
% 做矩阵运算
D=C\f(2:end-1);
plot(x,[-500;D; 0], 'r-o') % 画图

效果:

img

求解的结果完全不对,求指点

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632