scilab 求微分_数值计算:微分方程的数值解法的C++程序

这篇博客介绍了如何用C++实现微分方程的数值解,包括欧拉法、二阶龙格库塔法和四阶龙格库塔法。通过实例展示了如何解决y' = cos(x)的问题,并给出了在Linux环境下编译的方法。程序结果可以与Scilab软件进行对比和可视化。
摘要由CSDN通过智能技术生成

微分方程的各种算法的C++实现,是学数值计算方法的实验,有欧拉法,二阶龙格库塔法和四阶龙格库塔法。 程序使用了我自己写的库(已上传)。

Linux下编译方法:g++ df.cpp -o df -lm

附图为把程序对y'=cos(x)在[0,10]区间内插值运行结果复制到scilab里画的图,实线是原始函数图像,点实线为欧拉法的解,*号为RK2的解,虚线为RK4结果。

#include #include #include #include #include using namespace std;

//微分方程 df = f(x,y);

double df(double x, double y)

{

return cos(x); // df/dx = cos(x); 解为f(x) = sin(x) + C

}

//欧拉法解微分方程,分块数量为n, 解的区间为[a,b], 解向量为(x,y),方程初值为(x0,y0)

bool Eluer(vector& x, vector& y, const int & n,

const double & a, const double & b,

const double & x0, const double & y0)

{

double h = (b-a)/n;

x.clear();

y.clear();

x.resize(n+1);

y.resize(n+1);

x[0] = x0;

y[

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值