function[n,temp]=yiwei(long,thermcond,sours,leixing,number)%通过输入长度,导热系数,源项,传热类型,节点数来计算%各节点温度ifnargin3error('必须输入三个参数以上')endifisempty(sours)S=0;endS=sours;ifnargin4error('请输入类型')endL=long;k=thermcond;ifnargin5nodes=51;elsenodes=number;endm=nodes;n=[1:1:nodes];n=n';T=[1:1:nodes];T=T';p=[1:1:nodes];p=p';A=zeros(m);xl=L/(nodes-1);ifleixing==1Tl=input('请输入左边界温度')p(1)=Tl;A(1,1)=1;Tr=input('请输入右边界温度')p(m)=Tr;A(m,m)=1;elseifleixing==2ql=input('请输入左边界热流密度')p(1)=S*xl^2/2/k+ql*xl/k;A(1,1)=-1;A(1,2)=1;qr=input('请输入右边界热流密度')p(m)=-S*xl^2/2/k+qr*xl/k;A(m,m-1)=-1;A(m,m)=1;elseifleixing==3hl=input('左边界对流系数')Tfl=input('左边界环境温度')A(1,1)=1+xl*hl/k;A(1,2)=-1;p(1)=hl*Tfl*xl/k-S*xl^2/(2*k);hr=input('右边界对流系数');Tfr=input('右边界环境温度');A(m,m-1)=-1;A(m,m)=1-hr*xl/k;p(m)=-(hr*Tfr*xl/k+S*xl^2/(2*k));elseerror('类型必须为整数')endfori=2:1:(m-1)p(i)=S*xl^2/k;A(i,i)=2;A(i,i-1)=-1;A(i,i+1)=-1;endT=inv(A)*p;temp=T;n(1)=0;forj=2:mn(j)=n(j-1)+xl;endplot(n,T);holdonplot(n,T,'r*');holdoff