matlab采用不同数值方法求解微分方程

1、内容简介

略

60-可以交流、咨询、答疑

欧拉方法、改进欧拉、RK4、米尔斯坦方法求解微分方程

2、内容说明

略

复制代码
lc;
close all;
clear all;    

% =============参数赋值===========
global a
global b
global h
a = 1;
b = 2;
Ni = 1000;      % 总步数
h = 0.001;      % 步长

Xt1(1:Ni) = 0;     
Xt2(1:Ni) = 0;    

% 初始值
t = 0:h:h*(Ni-1);           % t
Xt1(1) = 5;          % y_0 欧拉方法 x
Xt2(1) = Xt1(1);          % y_0 第二种方法

rng default;  % For reproducibility
% 欧拉方法
wt = normrnd(0,sqrt(h),1,Ni);

for i = 2:Ni 
    % Xt1(i) = Xt1(i-1)+a*h*Xt1(i-1)+b*Xt1(i-1)*wt(i-1);%原始方法
    % y(i)=y(i-1)+h/2*( a*h*Xt1(i-1)+b*Xt1(i-1)*wt(i-1)+a*h*Xt1(i-1)+b*Xt1(i-1)*wt(i-1)+h*(f(x(i-1),x(i-1))));  
    % y1(i) = y1(i-1)+h*f1(x(i-1),y1(i-1));
    % 改进欧拉方法
    temp1 = Xt1(i-1)+a*h*Xt1(i-1)+b*Xt1(i-1)*wt(i-1);
    temp2 = a*Xt1(i-1)+b*Xt1(i-1)*wt(i-1)/h;
    temp3 = a*temp1+b*temp1*wt(i)/h;
    Xt1(i) = Xt1(i-1)+h/2*(temp2+temp3);
    
    Xt2(i) = Xt2(i-1)+a*h*Xt2(i-1)+b*Xt2(i-1)*wt(i-1)+0.5*b^2*Xt2(i-1)*(wt(i-1)^2-h);%随机微分方程米尔斯坦方法
    % y1(i) = y1(i-1)+h*equation(wt(i-1)+0.5*h,y1(i-1)+0.5*h*equation(wt(i-1),y1(i-1)));
end

Xt0 = Xt1(1)*exp((a-b^2/2)*t+b*wt);
figure(1)
plot(t,Xt0,t,Xt1,t,Xt2,'linewidth',2);
legend('解析解','欧拉数值解','米尔斯坦方法')
% plot(t,Xt0,t,Xt2,'linewidth',2);

3、仿真分析

略matlab采用不同数值方法求解微分方程_哔哩哔哩_bilibili

4、参考论文

略

相关推荐
kimnoic6 小时前
Python数据库学习心得:SQLite、MySQL、PostgreSQL优缺点
开发语言·python
必须得开心呀7 小时前
python编写带界面的软件,需要安装哪些插件
开发语言·python
沫璃染墨9 小时前
《Qt从零入门系列(十三):QSS样式表详解——从选择器与层叠规则到控件美化实战》
开发语言·css·c++·qt·ui·qt6.3·qss
达子66610 小时前
RUST 图解 第 3 章:通用编程概念(Common Programming Concepts)
开发语言·算法·rust
道尔柯南10 小时前
C++ 面向对象编程入门:类和对象(上)
开发语言·c++·算法
楠楠子呀10 小时前
英语、西语、阿语客户各开一个口:多语言获客的分流方案
开发语言·javascript·ecmascript·跨境电商·whatsapp·营销工具
tachibana210 小时前
使用for range 的时候,它的地址会发生变化吗?
开发语言·后端·golang·go·语法
临床数据科学和人工智能兴趣组11 小时前
正则表达式的基础语法的基本符号
开发语言·人工智能·python·正则表达式·r语言·r语言-4.2.1·workbudyy
王中阳Go11 小时前
Go 后端转 AI:非科班怎么补?一张 3 列路线表(可保存)
开发语言·人工智能·后端·python·golang·大语言模型
geats人山人海11 小时前
java 4继承
java·开发语言