數值演算法 常微分方程的尤拉方法

2021-04-01 11:40:39 字數 1724 閱讀 4940

[

數值演算法

]常微分方程的尤拉方法

:尤拉方法是求解常微分方程的入門級的方法,精度並不算高,但它具有較大的理論價值。

一些較好的演算法,如龍格

.庫塔方法等都是在這個方法的基礎上實現的。

(相關的理論請參考相關的數值演算法的書籍,我這裡只給出關鍵的函式及主程式段,其餘相關的細節就不再一一羅列了

.)void yulamethod(type x0,type y0,type xend,type h,type (*arguf)(type,type),file* outputfile)

/*output answer*/

fprintf(outputfile,"total iterator time is:%d/r/n",iteratornum);

}/*tess program*/

#include "myassert.h"

#include "lula.h"

#include

#include

#include

#include

type testf1(type x,type y);

char *infilename="inputdata.txt";

/*input data specification

x0,xend means the x value is located about in [x1,x2]

h is the step orthe adder of x.

*/char *outfilename="outputdata.txt";

#define debug 1

void main(int argc,char* argv)

type testf1(type x,type y)

測試結果

:輸入:

0,1,1,0.1x起始

x終點

y值起點

x的步長.輸出

:xn:yn:

0.1000001.095909

0.2000001.184097

0.3000001.266201

0.4000001.343360

0.5000001.416402

0.6000001.485955

0.7000001.552514

0.8000001.616474

0.9000001.678166

1.0000001.737867

下面是相同輸入資料用龍格庫塔方法

)所得的結果

.xn:yn:

0.1000001.095446

0.2000001.183217

0.3000001.264912

0.4000001.341642

0.5000001.414215

0.6000001.483242

0.7000001.549196

0.8000001.612455

0.9000001.673324

1.0000001.732056

可看到,

二者的計算精度差大概在

10^-3----10^-2

級別中,

而龍格庫塔所得結果則要更接近實際值

.

常微分方程的數值解法系列一 常微分方程

在慣性導航以及vio等實際問題中利用imu求解位姿需要對imu測量值進行積分得到需要的位置和姿態,其中主要就是求解微分方程。但之前求解微分方程的解析方法主要是應用於一些簡單和特殊的微分方程求解中,對於一般形式的微分方程,一般很難用解析方法求出精確解,只能用數值方法求解。該系列主要介紹一些常用的常微分...

常微分方程數值解上機

二步顯式 adams 法和gear 法求解,y 0 1,步長分別為h 0.1和h 0.05 1.程式文字 二步顯式 adams法 clc y 1 1 h 0.1 y 2 y 1 2 h y 1 3 h n 1 h fori 2 n y i 1 y i 3 h y i h y i 1 3 h endt...

常微分方程數值解法 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...

fortran迭代尤拉演算法 常微分方程與優化演算法

本文分享一下我們對常微分方程 ordinary differential equation,簡稱ode 與優化演算法的關係的一些理解。概括地說,就是某些優化演算法可以表示成對應常微分方程的離散形式。這裡,我們不做常微分方程的解的存在性討論,而只是給出示意性的描述。我們首先用梯度下降和nesterov...

MATLAB學習筆記 常微分方程的數值解

常微分方程數值求解的命令 求常微分方程的數值解,matlab的命令格式為 t,y solver odefun tspan,y0,options 其中solver選擇ode45等函式名,odefun為根據待解方程或方程組編寫的m檔名,tspan為自變數的區間 t0,tf 即準備在那個區間上求解,y0表...