用龙格库塔法计算

#include
<iostream>

#include<iomanip>

#include
<cmath>

using
namespace std;

int main()

{

double a
= 1, b =
3;      //a,b表示[a,b]求解区间

double
x0 = 1, y0 =
2;      //x0表示初始时刻x的值,y0表示初始时刻y的值

double
x,
y;                  //x,y分别表示变化的时候x,y的值

double
F1, F2, F3,
F4;      //F1,F2,F3,F4分别表示斜率值

double
h = 1.0f /
128;      //h表示步长

cout << setiosflags(ios::left)

<< setw(25)
<< "x的值"

<< setw(25)
<< "龙格库塔计算得到的值"

<< setw(25)
<< "解析解得到的值"

<< setw(25)
<< "误差"
<< endl;

x
= x0;

y
= y0;

cout << setw(25)
<< x

<< setw(25)
<< y

<< setw(25)
<< y0

<< setw(25)
<< abs(y0-y)<< endl;

do

{

F1
= h*pow(x, -2)*(x*y - y*y);

F2
= h*pow(x + h / 2, -2)*((x + h / 2 )* (y + F1 / 2) - (y +
F1 / 2)*(y + F1 / 2));

F3
= h*pow(x + h / 2, -2)*((x + h / 2)* (y + F2 / 2) - (y +
F2 / 2)*(y + F2 / 2));

F4
= h*pow(x + h, -2)*((x + h)* (y + F3) - (y + F3)*(y +
F3));

y
+= (F1 + 2 * F2 + 2 * F3 + F4) / 6;

x
= x + h;

cout<< setw(25)
<< x

<< setw(25)
<< y

<< setw(25)
<< x / (1.0f / 2
log(x))

<< abs(x
/ (1.0f / 2 + log(x)) - y)
<< endl;

}
while (x<=b);

return
0;

}

龙格-库塔法解常微分方程(c++)的更多相关文章

  1. c语言-四阶龙格-库塔法

    #include<stdio.h> #include<math.h> #define n 14 //double func1(double x, double y); doub ...

  2. 数值计算:四阶龙格-库塔法 for 二阶微分方程

    引言 考虑存在以下二阶偏微分方程 \[\begin{align} f_2 \cdot \ddot{X(t)}+f_1 \cdot \dot{X(t)} +f_0 \cdot {X(t)} =F(t) ...

  3. 计算科学(转自wiki)

    计算科学(也称科学计算 scientific computation 或 SC)是一个快速增长的多学科领域,使用先进的计算能力来理解和解决复杂的问题. 计算科学包括三个不同的方面: 1. 开发用于解决 ...

  4. MATLAB学习笔记(七)——MATLAB解方程与函数极值

    (一)线性方程组求解 包含n个未知数,由n个方程构成的线性方程组为: 其矩阵表示形式为: 其中 一.直接求解法 1.左除法 x=A\b; 如果A是奇异的,或者接近奇异的.MATLAB会发出警告信息的. ...

  5. 【C/C++】龙格库塔+亚当姆斯求解数值微分初值问题

    /* 解数值微分初值问题: 龙格-库塔法求前k个初值 + 亚当姆斯法 */ #include<bits/stdc++.h> using namespace std; double f(do ...

  6. 常微分方程初值问题:单步方法 [MATLAB]

    #先上代码后补笔记# #可以直接复制粘贴调用的MATLAB函数代码!# 1. 朗格-库塔(Runge-Kutta)方法族 目前只实现了四阶Runge-Kutta方法. function [ YMat ...

  7. MATLAB解决常微分方程

    首先得介绍一下,在matlab中解常微分方程有两种方法,一种是符号解法,另一种是数值解法.在本科阶段的微分数学题,基本上可以通过符号解法解决.   用matlab解决常微分问题的符号解法的关键命令是d ...

  8. 有限差分法(Finite Difference Method)解方程:边界和内部结点的控制方程

    FDM解常微分方程 问题描述 \[\frac{d^2\phi}{dx^2}=S_{\phi} \tag{1} \] 这是二阶常微分方程(second-order Ordinary Differenti ...

  9. Simulink仿真入门到精通(十五) Simulink在流程工业中的仿真应用

    15.1 工业乙醇生产与计算机仿真 乙醇作为可再生清洁能源不仅可以代替四乙基铅作为汽油的防爆剂,还可以制造汽油醇.这一巨大的潜在需求促使人们去寻找提高乙醇工业生产率的途径,使人们着手于发酵工程的研究. ...

随机推荐

  1. 面试总结之Data Science

    数据科学家面试如何准备? https://mp.weixin.qq.com/s/uFJ58az8WRyaXT2nibK02g 2020 年算法 / 数据分析面试数学考点梳理 https://mp.we ...

  2. Java框架之MyBatis框架(一)

    一.框架介绍: MyBatis是一个优秀的持久层框架,它对jdbc的操作数据库的过程进行封装,使开发者只需要关注 SQL 本身,而不需要花费精力去处理例如注册驱动.创建connection.创建sta ...

  3. 京信通信成功打造自动化工厂(MES应用案例)

    企业介绍: 京信通信成立于1997年,是一家集研发.生产.销售及服务于一体的移动通信外围设备专业厂商,致力于为客户提供无线覆盖和传输的整体解决方案,于2003年在香港联交所主板上市(2342.HK), ...

  4. 三星手机使用应用沙盒一键修改路由mac数据

    之前文章介绍了怎么在安卓手机上安装激活xposed框架,xposed框架的极强的功能大家都知道,能够不修改apk的前提下,修改系统底层的参数,打比方在某些应用情景,大家需要修改手机的某个系统参数,这情 ...

  5. Objective-C中的@dynamic 、@synthesize

    Objective-C中的@dynamic 一.@dynamic与@synthesize的区别 @property有两个对应的词,一个是@synthesize,一个是@dynamic.如果@synth ...

  6. Python学习日记(二十九) 网络编程

    早期的计算机通信需要有一个中间件,A要给B传东西,A必须要把信息传给中间件,B再把从中间件中拿到信息 由于不同机器之间需要通信就产生了网络 软件开发的架构 1.C/S架构 服务器-客户机,即Clien ...

  7. CAS 的问题

    cas这么好用,那么有没有什么问题呢?还真有 ABA问题 CAS需要在操作值的时候检查下值有没有发生变化,如果没有发生变化则更新,但是如果一个值原来是A,变成了B,又变成了A,那么使用CAS进行检查时 ...

  8. Cypress自动化环境搭建

    1.Cypress 下载: 官网下载,下载后直接解压即可,解压后便可单机exe文件打开 Ps:直接打开exe是会报错找不到json文件的,所以还要安装依赖环境 运行cypress项目前,必须vue-c ...

  9. Web开发之跨域问题

    最近在工作上遇到了跨域方面的问题,借此温习巩固. 跨域是受到浏览器的同源策略引起的,为了防止某些文档或脚本加载别的域下的未知内容造成泄露隐私,破坏系统等安全行为. 那什么是同源的呢? 同源是指:应用协 ...

  10. selenium中的等待方法及区别

    等待是为了使脚本执行更加稳定 常用的休眠方式: 1.time模块的sleep方法 :引入from time import sleep 2.implicitly_wait():设置webdriver等待 ...