【正文】
這次實驗,很具有代表性且較為上手,在初學階段,能夠很好的鍛煉初學者的實踐能力和理解能力,并且逐步深入,對于操作者能力有所提升并對微分方程數(shù)值解問題和Matlab部分算法的理解更為透徹。在編寫期間,清楚代碼間的關(guān)系及函數(shù)的意義,通過不斷的修改與整理,盡量獨立完成代碼的編寫和調(diào)試,展現(xiàn)出自己代碼的穩(wěn)健性。但由于對Matlab中求解最優(yōu)化問題相關(guān)的函數(shù)的不了解,我們只有不斷的查閱相關(guān)文獻學習了解,然后通過不斷的編寫、調(diào)試、運行,最終得出結(jié)果。結(jié)果輸出: 精確解近似解誤差……………… 五、 自我總結(jié) 對于此次試驗課題,基于我們對Matlab的使用較為熟悉,能夠輕松使用,所以一開始我們就毫不猶豫的選擇了使用Matlab進行課題內(nèi)容實現(xiàn);但由于對Matlab中的工具箱的不熟悉,一開始我們浪費了很多時間。精確解曲面圖39。)。,e,39。xlswrite(39。)。%保存數(shù)據(jù)title(39。data239。D:\39。figuresurf(x,y,e)。五點差分法解橢圓型偏微分方程39。)。zlabel(39。y39。)。%保存數(shù)據(jù)xlabel(39。data139。D:\39。figuresurf(x,y,u) 。解: 利用Matlab程序計算:命令窗口輸入:[p e u x y k]=fivepoint(,80,40,10000,1e11)。%精確解 e(i,j)=abs(u(i,j)exp(x(j))*sin(pi*y(i)))。%達到最大迭代次數(shù),終止循環(huán) end if(max(max(t))ep) break。 end end t(i,j)=sqrt(t(i,j))。 t(i,j)=(tempu(i,j))*(tempu(i,j))。%求區(qū)域中方程的每個節(jié)點 endendt=zeros(n1,m1)。 %(0,y) u(i,m+1)=exp(1)*exp(1)*sin(pi*y(i))。y=0+(0:n)*h。u=zeros(n+1,m+1)。 用matlab編寫源程序 Matlab程序源代碼:function [p e u x y k]= fivepoint (h,m,n,kmax,ep)%h步長%m,n為x,y方向的網(wǎng)格數(shù),例如(20)/=200。 注意五點格式計算節(jié)點是由邊界的已知節(jié)點,計算內(nèi)部節(jié)點,計算時需要聯(lián)立大型方程組,該方程組可以用迭代法求解。當改變q值和k值,可得到相應(yīng)的結(jié)果。用有限差分法近似求解,并且與精確解比較,分析結(jié)果。)。title(39。)。plot(x,u,x,uu,39。,abs(uu(4)u(4)))x=::。,u(4))fprintf(39。fprintf(39。τ=,θ= 時 :%f\n39。[u,tt,uu]=parabola(100,)。τ=,θ=39。grid on。o39。subplot(2,2,3)。誤差為:%f\n\n\n39。τ=,θ= 時 :%f\n39。,uu(4))[u,tt,uu]=parabola(100,)。fprintf(39。)。title(39。)。plot(x,u,x,uu,39。,abs(uu(4)u(4)))x=::。,u(4))fprintf(39。fprintf(39。τ=,θ= 時 :%f\n39。[u,tt,uu]=parabola(100,)。τ=,θ=39。grid on。o39。subplot(2,2,1)。誤差為:%f\n\n\n39。τ=,θ= 時 :%f\n39。,uu(4))[u,tt,uu]=parabola(100,)。fprintf(39。 %初始化uu矩陣for i=1:9 uu(i,1)=sin(pi*x(i))*exp(pi*pi*tt)。 endtt=k*t。 v=w。 %求解矩陣v w=u。 for i=2:8 B(i,1)=(1q)*t/h/h*