首页 > 编程知识 正文

matlab解二阶常微分方程,matlab计算微分方程

时间:2023-05-06 13:16:28 阅读:40087 作者:2126

//这里是代码窗口,请在下面写Forcal代码

I:outvector(p:k,I )=k=FCDLen(p ) p ),printff(r(n ),i=0,) I

! using['XSLSF']; //使用命名空间XSLSF

//函数定义用于计算微分方程组各方程的右端函数值,连分式法对微分方程组进行一步积分的函数pbs1调用该函数f。

//t是自变量,x是函数值,dx是右端的函数值,也就是微分方程式的值。

//调用此函数时使用参数a,k,这两个参数正好是拟合参数,并通过模块变量传递。

f(t,x,dx:A,k )={

dx=A*x/(k x )

(;

//计算相邻两组实验数据的理论值和实验值的误差。 将第1组数据作为理论值的起点,计算终点处的理论值,并与第2组数据表示的实验值进行比较。

//hf是函数f的句柄,预先得到该句柄; a是功的数值;step是积分步数; eps为积分精度; t1、t2是积分的起点和终点

//x1是与t1对应实验数据,即积分开始点的函数值; x_1是对应于t2的实验数据,与积分终点的函数值进行比较。

//h,I是自动变量。

t_I_j(HF,a,step,eps,t1,t2,x1,x_1:h,I )=

{

a .为a.setra(0,x1 )、//工作组分配初始值

计算h=(T2-T1 )/step,//积分步长

{ pbs1[hf、t1、a、h、eps]、//pbs1是用连分式法对微分方程组进行一阶段积分函数

t1=t1 h //积分起点的重新计算

}.Until[ABS(T1-T2 ) ]

a .用a.getra(0,x1 )//引用方式得到积分终点处的函数值

(x1-x_1)2//计算并返回理论值与实验值之差的平方和

(;

//目标函数的定义,自变量_A,_k是优化的参数,需要传递给对应的模块变量a,k。

//模块变量hf是函数f的句柄,并预先获得该句柄; Array是工作的数值; 步骤为积分步数; eps是积分精度。

k(a,_k:hf,Array,step,eps,a,k )={

A=_A,k=_k,/将优化参数_A,_k传递给对应的模块变量a,k

t_I_j(HF,Array,step,EPS :1,2:8.09946986336012.04826079 ) ) ) ) ) ) ) ) ) )

) ) ) )

) ) ) )

t_I_j(HF,Array,step,EPS :4,5:17.62752046336010.35408296 )

t_I_j(HF,Array,step,EPS :5,6:10.354082963360.246065848 ) ) )。

t_I_j(HF,Array,step,EPS :6,7:6.2460658483360.577315848 ) ) )

t_I_j(HF,Array,step,EPS :7,8:5.5773158483360.379678199 ) ) )

t_I_j(HF,Array,step,EPS :8,20:8.3796781993360.32249814 )

(;

main(3360d,u,v,x,_eps,k,xx,g,i:hf,Array,step,eps )=

{

hf=HFor(f )、//模块变量HF保存函数f的句柄,并预先通过函数hfor获取该句柄

array=new[rtoi(real_s ),rtoi ) 15,//工作组的申请

步骤=20、eps=1e-6、//积分步长数step越大,积分精度eps越小,精度越好,用于对微分方程组积分一次函数pbs1

x=new[rtoi(3(real_s ),rtoi )3],//工作组的申请

xx=new[rtoi(real_s )、rtoi(3)、rtoi(3) ],//工作组的申请

g=new[rtoi(3(real_s ),rtoi )3],//工作组的申请

_eps=1e-50,d=1,u=1.6,v=0.4,k=500,//变换d,u,v进一步求解。 k是允许的最大反复次数:得到的各解的差很大

I=jsim [求hfor (' k ',d,u,v,x,_eps,k,xx,g ),//n维极值的单形调谐法

printff{'rn实际迭代次数={1,r}rn ',i},/输出实际迭代次数

OutVector[x],//输出最佳参数值和目标函数的最终值

申请delete[x]、delete[xx]、delete[g]、delete[Array] //销毁的对象

(;

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。