matlab求微分方程组数值解,科学网-用MATLAB编写预估-校正法程序求分数阶常微分方程组数值解-王福昌的博文...

该博客介绍了如何使用MATLAB编写预估-校正法程序来求解分数阶常微分方程组的数值解。博主通过比较自己编写的函数与文献中的方法,展示了不同解法的结果,并提供了详细的代码实现过程。
摘要由CSDN通过智能技术生成

3cb19e7c2a5e2149dd039f1df37c4a0a.png

主函数比较

% 根据文献自己编写

q = 0.5; %分数阶阶数

fdefun = @(t,y) [2/gamma(3-q)*t^(2-q)-1/gamma(2-q)*t^(1-q)-y+t^2-t]; %一元微分方程

y0 =0;%初值y0为列向量

h = 2^(-6);%步长

tspan = [0,2];

[t,y] = fdewfc(q,fdefun,tspan,y0,h);

figure(1)

plot(t,y(1,1:end)) ;

xlabel('t'); ylabel('y(t)');

hold on

plot(t,t.^2-t+0.5,'r-.')%解析解

%plot(t,-2./(t+1),'r')

%%%%%%与意大利 Roberto Garrappa, University of Bari, Italy 结果比较

t0=tspan(1); tfinal = tspan(2);

[t, y_fde12] = fde12(q,fdefun,t0,tfinal,y0,h);

plot(t,y_fde12+1,'k.')

Jfdefun = @(t,y)[-1];%Jacobi阵 此处退化为导数

[t, y_flmm2] =

MATLAB分数方程可以使用以下几种方: 1. 分步分数步长):将分数方程转化为一系列整数方程,然后采用常规的整数方程,如欧拉、龙格-库塔等。 2. Laplace 变换:将分数微分方程转化为 Laplace 域中的代数方程,然后通过代数方程得到。 3. 数值:使用数值分数微分方程,如 Grünwald-Letnikov 方、Liouville-Caputo 方等。 这里以 Grünwald-Letnikov 方为例,演示如何在 MATLAB分数微分方程。 假设我们有一个分数微分方程: D^alpha x = a * x + b * y D^beta y = c * x + d * y 其中,D^alpha 和 D^beta 分别表示分数导数运算符,alpha 和 beta 是数,a、b、c、d 是常数。 可以按照以下步骤进行: 1. 定义符号变量和常数: syms x(t) y(t) a b c d alpha beta alpha = 0.5; % 分数导数数 beta = 0.6; % 分数导数数 a = 1; b = 2; c = 3; d = 4; % 常数 2. 定义分数导数运算符: Dalpha = diff(x,t,alpha); Dbeta = diff(y,t,beta); 3. 将方程转化为代数形式: eqn1 = Dalpha == a * x + b * y; eqn2 = Dbeta == c * x + d * y; 4. 方程: sol = dsolve(eqn1, eqn2); 5. 显示结果: xSol(t) = sol.x ySol(t) = sol.y 这样就可以得到分数微分方程。请注意,这只是一个简单的示例,实际情况中可能需要根据具体的方程形式进行调整和
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值