全區間積分的雙邊法 常微分方程組的求解

2021-05-23 23:43:53 字數 1270 閱讀 7077

功能:全區間積分的雙邊法(常微分方程組的求解)

*/#include "stdio.h"

#include "stdlib.h"

#include "math.h"

/*全區間積分的定步長尤拉方法*/

/*全區間積分的維梯方法*/

/*全區間積分的定步長龍格-庫塔方法*/

typedef struct _fode fode, *fodep;

/*全區間積分的變步長默森方法*/

/*全區間積分的雙邊法*/

/*全區間積分的阿當姆斯預報校正法*/

/*全區間積分的哈明方法*/

typedef struct _fode2 fode2, *fode2p;

/*積分一步的特雷納方法*/

typedef struct _tlode tode, *todep;

/*積分一步的變步長尤拉方法*/

/*積分一步的變步長龍格-庫塔方法*/

/*積分一步的連分式法*/

typedef struct _eode eode, *eodep;

/*積分一步的變步長基爾方法*/

typedef struct _eode2 eode2, *eode2p;

/*二階微分方程邊值問題的數值解法*/

typedef struct _dode dode, *dodep;

static void bilateral_method_lis(int n,double eps,double t,double lens,double y,void (*ptr)())

}hh=hh/2.0;

m<<=1;

} while (p>=eps);

/*釋放動態分配的記憶體*/

free(g); free(b); free(c); free(d); free(e);

return;

}void bilateral_lis(fode2p ap)

for (j=0; jptr)(t,y,n,d);

for (j=0; jvoid bilateral_ptr_lis(double t,double y,int n,double d)

int main()

;double z[2][11]=;

fode2  fa=;

int    i;

bilateral_lis(&fa);

printf("/n");

for (i=0; iprintf("/n");

return 0;

}

matlab練習程式(常微分方程組向量場)

過去有畫過常微分方程的向量場,通過向量場能夠很形象的看出方程解的狀態。這裡用matlab也實現一下,同時對三維情況也做了乙個實現。繪製的方法就是計算方程在二維或三維某個點的方向,然後把方向歸一化,畫出歸一化的向量即可。二維微分方程組如下 三維微分方程組如下 matlab 如下 二維情況 clear ...

matlab練習程式(線性常微分方程組引數擬合)

比如我們已經有了微分方程模型和相關資料,如何求模型的引數。這裡以seir模型為例子,seir模型可以參考之前的文章。一般的線性方程我們可以用最小二乘來解,一般的非線性方程我們可以用lm來解。這裡是線性微分方程組,所以我們採用最小二乘來解。關鍵是構造出最小二乘形式,微分可以通過前後資料差分的方法來求。...

matlab練習程式(高階常微分方程組數值解)

這裡以三元二次常微分方程組做乙個例子,更多元更高次的都類似。比如下列方程組 x x x y z y y y x z z z x matlab 如下 main.m clear all close all clc t,x ode45 testfun 0 0.1 5 1 1 1 10.5 0 0 0.1 ...