后退欧拉法求解常微分方程(c++)

后退欧拉法求解常微分方程(c++)

#include<iostream>

#include<iomanip>

using namespace std;

int main()

{

      

      double x,y,yn,h,temp;     

      x=0;      //x赋初值

      y=1;      //y赋初值

      h=0.1;      //步长设置为0.1

      

      cout<<setiosflags(ios::left);

      cout<<setw(20)<<"y的计算值";

      cout<<setw(20)<<"y的理论值";

      cout<<setw(20)<<"x的值";

      cout<<setw(20)<<"误差"<<endl;

      cout<<setw(20)<<y;

      cout<<setw(20)<<y;

      cout<<setw(20)<<x;

      cout<<setw(20)<<0<<endl;

      

      for (int i=0;i<10;i++)

      {

            temp=y;      //每次迭代之前y未变化的值,用于后面的计算

            y=y+h*(y-2*x/y);      //使y显化

            x+=h;

            

            do

            {

                  yn=y;

                  y=temp+h*(y-(2*x/y));

            }

            while (abs(yn-y)>0.0000001);

            cout<<setw(20)<<y;      //输出y的新值

            cout<<setw(20)<<sqrtf(1+2*x);      //计算y的理论值

            cout<<setw(20)<<x;      //输出x的新值

            cout<<setw(20)<<abs(y-sqrtf(1+2*x))<<endl;      //计算误差

      }

      return 0;

}

后退欧拉法求解常微分方程(c++)

转载于:https://www.cnblogs.com/liusuanyatong/p/11259924.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值