功能:全區間積分的雙邊法(常微分方程組的求解)
*/#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 ...