偏微分方程数值解的matlab程序,偏微分方程数值解法MATLAB源码
《偏微分方程數值解法MATLAB源碼》由會員分享,可在線閱讀,更多相關《偏微分方程數值解法MATLAB源碼(27頁珍藏版)》請在人人文庫網上搜索。
1、源碼【更新完畢】偏微分方程數值解法的MATLAB原創 說明:由于偏微分的程序都比較長,比其他的算法稍復雜一些,所以另開一貼,專門上傳偏微分的程序 謝謝大家的支持! 其他的數值算法見:./Announce/Announce.asp?BoardID=209&id=8245004 、古典顯式格式求解拋物型偏微分方程(一維熱傳導方程)1 function U x t=PDEParabolicClassicalExplicit(uX,uT,phi,psi1,psi2,M,N,C) %古典顯式格式求解拋物型偏微分方程 %U x t=PDEParabolicClassicalExplicit(uX,uT,p。
2、hi,psi1,psi2,M,N,C) % %方程:u_t=C*u_xx 0 if r ) 不穩定 0.5, disp(r end 計算初值和邊值%U=zeros(M+1,N+1); i=1:M+1 for U(i,1)=phi(x(i); end j=1:N+1 for U(1,j)=psi1(t(j); U(M+1,j)=psi2(t(j); end 逐層求解%j=1:N for i=2:M for U(i,j+1)=r*U(i-1,j)+r1*U(i,j)+r*U(i+1,j); end end U=U; %作出圖形mesh(x,t,U); ) 古典顯式格式,一維熱傳導方程的解的圖像ti。
3、tle(x) xlabel(空間變量t) 時間變量 ylabel(U) zlabel(一維熱傳導方程的解 return; 古典顯式格式不穩定情況2 / 16 古典顯式格式穩定情況2、古典隱式格式求解拋物型偏微分方程(一維熱傳導方程) function U x t=PDEParabolicClassicalImplicit(uX,uT,phi,psi1,psi2,M,N,C) %古典隱式格式求解拋物型偏微分方程 %U x t=PDEParabolicClassicalImplicit(uX,uT,phi,psi1,psi2,M,N,C) % %方程:u_t=C*u_xx 0 1 if 13 / 。
4、16 ) 差分格式不穩定!,Lax-Friedrichs disp(|C*r|1 end 逐層求解 % j=1:N for i=2:M for U(i,j+1)=(U(i+1,j)+U(i-1,j)/2-C*r*(U(i+1,j)-U(i-1,j)/2; end end %Courant-Isaacson-Rees差分格式 CourantIsaacsonRees case C0 C*r1 if ) disp(Courant-Isaacson-Lees差分格式不穩定! end %逐層求解 j=1:N for i=2:M for U(i,j+1)=C*r*U(i-1,j)+(1-C*r)*U(i,。
5、j); end end end %Leap-Frog(蛙跳)差分格式 LeapFrog case psi2=); 請輸入第二層初值條件函數: phi2=input( abs(C*r)1 if ) Leap-Frog差分格式不穩定! disp(|C*r|1, end %第二層初值條件 i=1:M+1 for U(i,2)=phi2(x(i); 14 / 16 end %逐層求解 j=2:N for i=2:M for U(i,j+1)=U(i,j-1)-C*r*(U(i+1,j)-U(i-1,j); end end 差分格式 %Lax-WendroffLaxWendroff case abs(C。
6、*r)1 if ) 差分格式不穩定!disp(|C*r|1,Lax-Wendroff end 逐層求解 % j=1:N for i=2:M for U(i,j+1)=U(i,j)-C*r*(U(i+1,j)-U(i-1,j)/2+C2*r2*(U(i+1,j)-2*U(i,j)+U(i-1,j)/2; end end %Crank-Nicolson隱式差分格式,需調用追趕法求解三對角線性方程組的算法 CrankNicolson case Diag=zeros(1,M-1);%矩陣的對角線元素 Low=zeros(1,M-2);%矩陣的下對角線元素 Up=zeros(1,M-2);%矩陣的上對角。
7、線元素 i=1:M-2 for Diag(i)=4; Low(i)=-r*C; Up(i)=r*C; end Diag(M-1)=4; B=zeros(M-1,M-1); i=1:M-2 for B(i,i)=4; B(i,i+1)=-r*C; B(i+1,i)=r*C; end B(M-1,M-1)=4; ) %逐層求解,需要使用追趕法(調用函數EqtsForwardAndBackward j=1:N for b1=zeros(M-1,1); b1(1)=r*C*(U(1,j+1)+U(1,j)/2; 15 / 16 b1(M-1)=-r*C*(U(M+1,j+1)+U(M+1,j)/2; b=B*U(2:M,j)+b1; U(2:M,j+1)=EqtsForwardAndBackward(Low,Diag,Up,b); end otherwise ) 差分格式類型輸入有誤! disp( return; end U=U; 作出圖形%mesh(x,t,U); ); 格式求解一階雙曲型方程的解的圖像title(type x); 空間變量 xlabel(t); ylabel(時間變量U); 一階雙曲型方程的解 zlabel( return; 16 / 16。
總結
以上是生活随笔為你收集整理的偏微分方程数值解的matlab程序,偏微分方程数值解法MATLAB源码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 工作107:vue调用视频接口
- 下一篇: 数据窗口dw导出多种格式文件