數值微分C 實現

2021-08-21 11:16:20 字數 1728 閱讀 9807

取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...