取h=0.1時用euler法,改進euler法,rung-kutta方法求其數值解並與精確解進行比較。
輸入:求解區間,初值,數值解個數
輸出:數值解
改進尤拉公式:
四階龍格—庫塔方法:
改進的尤拉方程 : 四階龍格—庫塔方法:
//定義係數c
double c;
//儲存生成的節點橫座標
double datax[100];
//儲存生成的節點準確的縱座標
double datay[100];
//儲存euler的解
double datae[100];
//儲存改進euler的解
double dataie[100];
//儲存rung-kutta方法求其數值解
double datark[100];
//定義原函式
double function(double x,double y);
//定義導函式
double derivative(double x);
//分割區間
void devide(double a,double b,int n,double y);
//定義用尤拉方法求解的函式
void euler(double a,double b,double n);
//定義用改進尤拉方法求解的函式
void improveeuler(double a,double b,double n);
//定義四階龍格-庫塔方法求解的函式
void rungkutta(double a,double b,double n);
//列印**
void printtable(double n);
int main()
//定義原函式
double function(double x)
//定義導函式
double derivative(double x,double y)
//分割區間
void devide(double a,double b,int n,double y)
}//定義用尤拉方法求解的函式
數值微分與數值積分
注意 diff函式計算的是向量元素間的差分,故差分向量元素的個數比原向量少了 乙個。同樣,對於矩陣來說,差分後的矩陣比原矩陣少了一行或一列。另外,計算差分之後,可以用f x 在某點處的差商作為其導數的近似值。matlab提供了求向前差分的函式diff,其呼叫格式有三種 dx diff x 計算向量x...
常微分方程數值解法 python實現
研究生課程 應用數值分析 結課了,使用python簡單記錄了下常微分方程數值解法。y y i h i f x i,y i y 0 y a end right y x y 1 0 leq x leq 1 y 0 1 end right yi format xi,yi xi,yi xi h,y retu...
數值分析實驗 二 之數值積分與微分
1 用復化梯形公式的自動控制誤差演算法求積分。2 romberg積分演算法求積分。復化梯形公式 sy2 1.m檔案 myint 0,1,100 fun1.m檔案 function f fun1 x if x 0 x 1 f 1 else f sin x x endmyint,m檔案 function...