龙格-库塔法解常微分方程(c++)
用龙格库塔法计算

#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++)的更多相关文章
- c语言-四阶龙格-库塔法
#include<stdio.h> #include<math.h> #define n 14 //double func1(double x, double y); doub ...
- 数值计算:四阶龙格-库塔法 for 二阶微分方程
引言 考虑存在以下二阶偏微分方程 \[\begin{align} f_2 \cdot \ddot{X(t)}+f_1 \cdot \dot{X(t)} +f_0 \cdot {X(t)} =F(t) ...
- 计算科学(转自wiki)
计算科学(也称科学计算 scientific computation 或 SC)是一个快速增长的多学科领域,使用先进的计算能力来理解和解决复杂的问题. 计算科学包括三个不同的方面: 1. 开发用于解决 ...
- MATLAB学习笔记(七)——MATLAB解方程与函数极值
(一)线性方程组求解 包含n个未知数,由n个方程构成的线性方程组为: 其矩阵表示形式为: 其中 一.直接求解法 1.左除法 x=A\b; 如果A是奇异的,或者接近奇异的.MATLAB会发出警告信息的. ...
- 【C/C++】龙格库塔+亚当姆斯求解数值微分初值问题
/* 解数值微分初值问题: 龙格-库塔法求前k个初值 + 亚当姆斯法 */ #include<bits/stdc++.h> using namespace std; double f(do ...
- 常微分方程初值问题:单步方法 [MATLAB]
#先上代码后补笔记# #可以直接复制粘贴调用的MATLAB函数代码!# 1. 朗格-库塔(Runge-Kutta)方法族 目前只实现了四阶Runge-Kutta方法. function [ YMat ...
- MATLAB解决常微分方程
首先得介绍一下,在matlab中解常微分方程有两种方法,一种是符号解法,另一种是数值解法.在本科阶段的微分数学题,基本上可以通过符号解法解决. 用matlab解决常微分问题的符号解法的关键命令是d ...
- 有限差分法(Finite Difference Method)解方程:边界和内部结点的控制方程
FDM解常微分方程 问题描述 \[\frac{d^2\phi}{dx^2}=S_{\phi} \tag{1} \] 这是二阶常微分方程(second-order Ordinary Differenti ...
- Simulink仿真入门到精通(十五) Simulink在流程工业中的仿真应用
15.1 工业乙醇生产与计算机仿真 乙醇作为可再生清洁能源不仅可以代替四乙基铅作为汽油的防爆剂,还可以制造汽油醇.这一巨大的潜在需求促使人们去寻找提高乙醇工业生产率的途径,使人们着手于发酵工程的研究. ...
随机推荐
- Java自学-控制流程 for
Java的for循环 for循环,和while一样,只是表达方式不一样 示例 1 : for 比较for和while public class HelloWorld { public static v ...
- CSS 之 圣杯布局&双飞翼布局
圣杯布局 和 双飞翼布局 是重要布局方式.两者的功能相同,都是为了实现一个两侧宽度固定,中间宽度自适应的三栏布局. 遵循了以下要点: 两侧宽度固定,中间宽度自适应 中间部分在DOM结构上优先,以便先行 ...
- 小程序中的数据请求sessionid,保持登陆状态。
版权声明:本文为CSDN博主「weixin_43964779」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明.原文链接:https://blog.csdn.net ...
- QuickStart系列:docker部署之Gitlab本地代码仓库
gitlab是可以在本地搭建的使用git作为源代码管理的仓库. 运行环境: win10+vmware14+docker7+docker 1. 使用命令拉取镜像(非必须,耗时比较久,这里以ce为准,ce ...
- 动态管理upsteam---nginx_http_dyups_module
nginx_http_dyups_module nginx_http_dyups_module是第三方开源软件,它提供API动态修改upstream的配置,并且支持Nginx的ip_hash.kee ...
- heapq 对有序的数组列表进行整体排序
""" 功能:实现对有序的多个数组整体排序,获取top k个最小元素 """ from heapq import * def heap_so ...
- 在命令行中执行kms命令激活Microsoft Office 2010
激活office2010的命令是什么?激活office2010除了使用office2010激活工具之外,还可以使用kms命令来激活office2010,但是office2010激活命令还需考虑32位或 ...
- Centos 6.5出现yum安装慢的情况
最近在用Centos 6.5 的时候出现了这种情况, Loaded plugins: fastestmirror, refresh-packagekit, security Loading mirro ...
- Dynamics 365 On-premises和Online 的不同
1.新建账号的不同:on-premises(下文简称op)是和ad绑定的,所以必须先在ad中新建账号后才能在CRM中新建.而online是和Office365(下文简称O365)绑定的,所以需在O36 ...
- HBase数据结构
1 RowKey 与nosql数据库们一样,RowKey是用来检索记录的主键.访问HBASE table中的行,只有三种方式: 1.通过单个RowKey访问 2.通过RowKey的range(正则) ...