for k=2:n
yp=y(k-1,:)+h*feval(f,x(k-1),y(k-1,:));
yc=y(k-1,:)+h*feval(f,x(k),yp);
y(k,:)=(yp+yc)/2;
end(3) runge-kutta method:
function [tout,yout]=runge_kutta(f,ab,y0,h)
tout=(ab(1):h:ab(2))';
n=length(tout);
yout=zeros(n,length(y0));
yout(1,:)=y0';
for k=2:n
x=tout(k-1); y=yout(k-1,:)';
k1=feval(f,x,y);
k2=feval(f,x+h/2,y+k1*h/2);
k3=feval(f,x+h/2,y+k2*h/2);
k4=feval(f,x+h,y+k3*h);
yout(k,:)=(y+(k1+2*k2+2*k3+k4)*h/6)';
end四、實驗步驟
1、開啟matlab軟體,新建 *.m檔案,在m檔案的視窗中編輯euler演算法的函式程式,另建一m檔案,編輯自己改進的euler演算法的函式程式,再新建一m檔案,在視窗中編輯runge-kutta演算法的函式程式,並全部儲存在指定的資料夾下;
2、將matlab軟體的工作頁面的工具欄下的目標檔案指向指定的資料夾;
3、分別呼叫上述三種演算法的函式,實現微分方程(組)的數值求解完成給定的實驗題目;
4、輸出結果和初步分析說明(見附頁)。
五、使用說明實驗結果分析
1、在command window視窗中編輯要呼叫的函式名與指定的函式名字不同導致出現錯誤,通過改正與函式名相同即可;
2、大部分的常微分方程求不出十分精確的解,而只能得到近似解。當然,這個近似解的精確程度是比較高的。另外還應該指出,用來描述物理過程的微分方程,以及由試驗測定的初始條件也是近似的,這種近似之間的影響和變化還必須在理論上加以解決。
六、演算法的改進和實驗總結
1、euler演算法的改進:
先用尤拉法求得乙個初步的近似值,稱為預報值,然後用它替代梯形法右端的yi+1再直接計算fi+1,得到校正值yi+1,這樣建立的預報-校正系統稱為改進的尤拉格式:
預報值 y~i+1=yi+1 + h*f(xi,yi)
校正值 yi+1 =yi+(h/2)*[f(xi,yi)+f(xi+1,y~i+1)]
它有下列平均化形式:
yp=yi+h*f(xi,yi)
且 yc=yi+h*f(xi+1,yp)
且 yi+1=(xp+yc)/2
它的區域性截斷誤差為o(h^3),可見,改進尤拉格式較尤拉格式提高了精度,其截斷誤差比尤拉格式提高了一階。
2、總結:runge-kutta法求解微分方程比euler公式,改進的euler公式的求解結果有更高的精度,通過本次實驗,不僅對其三種方法有了更一步的了解,而且掌握並了解了幾種計算機輔助工具的運用,對我們以後更好的學習它們奠定了一定的實踐基礎,提高了我們一定的分析問題和解決問題的能力,也讓我們對所學知識有了更深刻的了解,同時也提高了我們的動手能力。
微分方程數值方法實驗報告
一 實驗題目 1 用ritz galerkin方法求解邊值問題 精確解 2 用有限元方法求解 二 實驗目的 運用matlab數學軟體編寫ritz galerkin方法和有限元方法程式,進一步熟悉matlab的應用及掌握偏微分方程數值方法中ritz galerkin方法和有限元方法,對各個方法求解精度...
微分方程數值解法答案
包括基本概念,差分格式的構造 截斷誤差和穩定性,這些內容是貫穿整個教材的主線。解答問題關鍵在過程,能夠顯示出你已經掌握了書上的內容,知道了解題方法。這次考試題目的型別 20分的選擇題,主要是基本概念的理解,後面有五個大題,包括差分格式的構造 截斷誤差和穩定性。習題一1 略 2 梯形公式 所以,當時,...
常微分方程數值解實驗報告
學院 數學與資訊科學 專業 資訊與計算科學 姓名 鄭思義 學號 201216524 課程 常微分方程數值解 實驗一 常微分方程的數值解法 1 分別用euler法 改進的euler法 預報校正格式 和s k法求解初值問題。h 0.1 並與真解作比較。1.1實驗 尤拉法 function x,y nae...