龙格-库塔法解常微分方程(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 工业乙醇生产与计算机仿真 乙醇作为可再生清洁能源不仅可以代替四乙基铅作为汽油的防爆剂,还可以制造汽油醇.这一巨大的潜在需求促使人们去寻找提高乙醇工业生产率的途径,使人们着手于发酵工程的研究. ...
随机推荐
- Commander基本使用
随着NodeJs的不断发展,对于前端来说要做的东西也就更多,Vue脚手架React脚手架等等等一系列的东西都脱颖而出,进入到人们的视野当中,对于这些脚手架工具来讲也只是停留在应用阶段,从来没有想过脚手 ...
- 《区块链DAPP开发入门、代码实现、场景应用》笔记4——Ethereum Wallet中部署合约
账号创建完成之后,账号余额是0,但是部署合约是需要消耗GAS的,因此需要获取一定的以太币才能够继续本次实现.在测试网中获取以太币可以通过挖矿的方式,在开发菜单中可以选择打开挖矿模式,但是这需要将Syn ...
- 常用的User-Agent
window.navigator.userAgent 1) ChromeWin7:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTM ...
- js 动态创建 全局变量(转载)
转载来源 https://blog.csdn.net/stevenzhong900610/article/details/40857087 https://www.jb51.net/article/8 ...
- EF执行存储过程(转载)
https://blog.csdn.net/xiaouncle/article/details/82914255 相关文章: https://www.cnblogs.com/Coder-ru/arch ...
- elasticsearchTemplate操作es
ElasticsearchTemplate是spring对java api的封装 maven依赖: <dependency> <groupId>org.springframew ...
- 从零搭建consul
从零搭建consul 原文链接:https://blog.csdn.net/weixin_42107541/article/details/87640807#2linux_25 从零搭建consul1 ...
- 19,flask消息闪现-flash
Flash消息 请求完成后给用户的提醒消息,flask的核心特性, flash函数实现效果 视图函数中调用flash()方法 html中要使用get_flashed_messages() 后端代码: ...
- Redis相关知识整理
Redis相关知识整理 1. Redis和MySQL的区别?a).mysql是关系型数据库,而redis是NOSQL,非关系型数据库.mysql将数据持久化到硬盘,读取数据慢,而redis数据先存储在 ...
- Seata 动态配置订阅与降级实现原理
Seata 的动态降级需要结合配置中心的动态配置订阅功能.动态配置订阅,即通过配置中心监听订阅,根据需要读取已更新的缓存值,ZK.Apollo.Nacos 等第三方配置中心都有现成的监听器可实现动态刷 ...