常微分方程算法之编程示例五(阿当姆斯法)

目录

一、研究问题

二、C++代码

三、计算结果


一、研究问题

        本节我们采用阿当姆斯法(Adams法)求解算例。

        阿当姆斯法的原理及推导请参考:

常微分方程算法之阿当姆斯法(Adams法)_四步四阶adams显格式;三步四阶adams隐格式;四阶adams预估-校正格式-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/L_peanut/article/details/137378532        研究问题依然为

\left\{\begin{matrix} \frac{dy}{dx}=y-\frac{2x}{y},0<x\leqslant 1,\\ y(0)=1 \end{matrix}\right.

取步长为0.1。已知精确解为y=\sqrt{1+2x}

二、C++代码

        这里我们使用四阶阿当姆斯显格式四阶阿当姆斯预估-校正格式进行求解,如下:


#include <cmath>
#include <stdlib.h>
#include <stdio.h>int main(int argc, char *argv[])
{int i,N;double a,b,h,k1,k2,k3,k4,upredict;double *x,*y,*u;double f(double x, double y);double exact(double x);a=0.0;b=1.0;N=10;h=(b-a)/N;x=(double *)malloc(sizeof(double)*(N+1));y=(double *)malloc(sizeof(double)*(N+1));u=(double *)malloc(sizeof(double)*(N+1));for(i=0;i<=N;i++)x[i]=a+i*h;y[0]=1.0;u[0]=1.0;for(i=0;i<=2;i++)  //用龙格-库塔法求解y1,y2,y3作为初始值{k1=h*f(x[i],y[i]);k2=h*f(x[i]+0.5*h,y[i]+0.5*k1);k3=h*f(x[i]+0.5*h,y[i]+0.5*k2);k4=h*f(x[i]+h,y[i]+k3);y[i+1]=y[i]+(k1+2*k2+2*k3+k4)/6.0;u[i+1]=y[i+1];}for(i=3;i<N;i++){//四阶阿当姆斯显格式y[i+1]=y[i]+(55*f(x[i],y[i])-59*f(x[i-1],y[i-1])+37*f(x[i-2],y[i-2])-9*f(x[i-3],y[i-3]))*h/24.0;//四阶阿当姆斯预估-校正格式upredict=u[i]+(55*f(x[i],u[i])-59*f(x[i-1],u[i-1])+37*f(x[i-2],u[i-2])-9*f(x[i-3],u[i-3]))*h/24.0;u[i+1]=u[i]+(9*f(x[i+1],upredict)+19*f(x[i],u[i])-5*f(x[i-1],u[i-1])+f(x[i-2],u[i-2]))*h/24.0;}for(i=0;i<=N;i++)printf("x=%.2f, 显示解=%f, 预估-校正解=%f, exact=%f.\n",x[i],y[i],u[i],exact(x[i]));free(x);free(y);free(u);return 0;
}double f(double x, double y)
{return y-2*x/y;
}
double exact(double x)
{return sqrt(1+2.0*x);
}

 三、计算结果

x=0.00, 显示解=1.000000, 预估-校正解=1.000000, exact=1.000000.
x=0.10, 显示解=1.095446, 预估-校正解=1.095446, exact=1.095445.
x=0.20, 显示解=1.183217, 预估-校正解=1.183217, exact=1.183216.
x=0.30, 显示解=1.264912, 预估-校正解=1.264912, exact=1.264911.
x=0.40, 显示解=1.341552, 预估-校正解=1.341641, exact=1.341641.
x=0.50, 显示解=1.414046, 预估-校正解=1.414214, exact=1.414214.
x=0.60, 显示解=1.483019, 预估-校正解=1.483240, exact=1.483240.
x=0.70, 显示解=1.548919, 预估-校正解=1.549193, exact=1.549193.
x=0.80, 显示解=1.612116, 预估-校正解=1.612452, exact=1.612452.
x=0.90, 显示解=1.672917, 预估-校正解=1.673320, exact=1.673320.
x=1.00, 显示解=1.731570, 预估-校正解=1.732051, exact=1.732051.

        从计算结果可知,预估-校正法求解结果有效数字更多,结果更为精确,优于显示法。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/861087.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

云计算运维工程师面试

1. 云计算运维工程师的角色和职责是什么? 回答: 云计算运维工程师负责确保云计算环境(包括硬件和软件系统)的高可用性和稳定性。他们的主要职责包括: 监测系统和应用程序的性能,确保它们正常运行。故障排除,快速响应并解决系统或应用程序中出现的问题。容量规划,根据…

10.二次开发——黑马程序员Java最新AI+若依框架项目

目录 前言零、使用若依修改器修改项目名称一、创建sky-merchant模块1.创建模块2. 在新模块中导入依赖3. 父工程锁定版本4. sky-admin 导入依赖 二、菜品管理页面生成1.根据页面原型&#xff0c;确定表信息2.设计表3使用代码生成器生成页面4&#xff0c;下载tb_dish代码并分别导…

Matlab|【免费】含氢气氨气综合能源系统优化调度

目录 主要内容 部分代码 结果一览 下载链接 主要内容 该程序参考《_基于氨储能技术的电转氨耦合风–光–火综合能源系统双层优化调度》模型&#xff0c;对制氨工厂、风力发电、电制氢、燃气轮机、火电机组等主体进行建模分析&#xff0c;以火电机组启停成本、煤耗…

VS Code修改菜单栏字体大小

修改方法 打开VS Code&#xff0c;快捷键 CtrlShiftP&#xff0c;在弹出的输入框中输入 setting&#xff0c;找到带有JSON的一项&#xff0c;如图所示&#xff1a; 原文链接 window.zoomLevel 前后变化 终端字体大小 File -> Preferences -> Settings -> Features…

用Hugging Face Transformers,高效部署:多显卡量化感知训练并转换为ONNX格式的多标签分类模型

文章目录 环境准备数据准备数据集定义模型定义多显卡训练模型保存与 ONNX 转换验证 ONNX 模型部署到移动设备 要在多显卡上进行量化感知训练&#xff08;QAT&#xff09;&#xff0c;然后将量化后的模型转换为 ONNX 格式并部署到移动设备&#xff0c;可以按照以下步骤进行&…

mysql数据库SQL语句大全详解(下)

六、事务管理 1、开始事务 START TRANSACTION;2、提交事务 COMMIT;3、回滚事务 ROLLBACK;4、保存点 设置保存点&#xff1a; SAVEPOINT savepoint_name;回滚到保存点&#xff1a; ROLLBACK TO SAVEPOINT savepoint_name;七、视图 1、创建视图 CREATE VIEW view_name A…

昇思25天学习打卡营第3天|数据集 Dataset

文章目录 要训练AI&#xff0c;大量的数据是基础。就像我们人去学习写作文一样&#xff0c;得先有大量的输入&#xff0c;然后才能有一个不错的输出。AI也一样&#xff0c;需要喂大量的数据以后&#xff0c;才可能有一个不错的预测。 我们产生的数据多种多样 乱七八糟。但计算…

海外短剧系统:一扇窥探多元文化的奇妙之窗

随着全球化的推进&#xff0c;文化交流的壁垒逐渐消融&#xff0c;我们得以更加便捷地领略到世界各地的独特风情。在这一背景下&#xff0c;海外短剧系统应运而生&#xff0c;它如同一扇扇虚拟的窗户&#xff0c;将我们带入不同国家、不同民族、不同文化的世界&#xff0c;让我…

Spark算法之ALS模型(附Scala代码)

Spark算法之ALS模型&#xff08;附Scala代码&#xff09; 在大数据时代&#xff0c;个性化推荐系统已成为连接用户与信息的桥梁&#xff0c;而算法则是构建这一桥梁的基石。Apache Spark&#xff0c;作为一款强大的分布式计算系统&#xff0c;提供了丰富的机器学习库&#xff…

比特币生态系统的现状与流动性提升的新路径

自2009年中本聪发布比特币白皮书以来&#xff0c;比特币一直被誉为“数字黄金”&#xff0c;在加密货币领域占据着不可动摇的地位。其去中心化、稀缺性和安全性&#xff0c;增强了其作为长期价值储存工具的吸引力。 相比之下&#xff0c;以太坊自2015年问世以来&#xff0c;凭…

超低排放标准

据朗观视觉小编了解发现&#xff0c;超低排放标准作为衡量一个行业或企业环保水平的重要指标&#xff0c;越来越受到社会各界的关注。本文将深入探讨超低排放标准的内涵、实施意义以及未来展望。 一、超低排放标准的定义 超低排放标准&#xff0c;是指在特定工业生产过程中&am…

electron的托盘Tray

1.在主进程文件background.js中引入需要的文件 import { Tray, Menu } from "electron"; const path require("path");2.获取托盘图标 const baseSRC process.cwd(); //这里不能使用__dirname,使用dirname会直接获取dist_electron中的文件&#xff0c;…

视频共享融合赋能平台LntonCVS统一视频接入平台数字化升级医疗体系

医疗健康事关国计民生&#xff0c;然而&#xff0c;当前我国医疗水平的地区发展不平衡、医疗资源分布不均和医疗信息系统老化等问题&#xff0c;制约了整体服务能力和水平的提升。视频融合云平台作为推动数字医疗的关键工具&#xff0c;在医疗领域的广泛应用和普及&#xff0c;…

Oracle - 数据库打补丁实践

原文&#xff1a;https://www.cnblogs.com/ddzj01/p/12097467.html 一、概述 本文将介绍如何给oracle数据库打最新补丁&#xff0c;数据库版本为11.2.0.4单实例&#xff0c;操作系统为redhat6.5 二、下载相关升级包 1. 登录MOS&#xff0c;查阅(ID 2118136.2)&#xff0c;下载…

vue3中引入echarts图表

1.下载echarts npm install echarts 2.在使用的页面引入echarts // 按需引入 echarts import * as echarts from "echarts"; 3.准备dom节点 <div id"chartLine"></div> 4.将数据渲染到dom节点 import { ref, onMounted, markRaw } from "…

如何快速把一篇文章或企业介绍变为视频?

随着科技和数字化的不断发展&#xff0c;企业的营销手段也在不断变革。尤其对于产品宣传来说&#xff0c;用生动的视觉语言直观地展示产品特点和优势&#xff0c;能够彰显企业实力&#xff0c;让社会不同层面的人士对企业产生正面、良好的印象&#xff0c;从而建立对该企业的好…

2024.06.18【读书笔记】丨生物信息学与功能基因组学(第十五章 真菌基因组 第二部分)【AI测试版】

读书笔记&#xff1a;《生物信息学与功能基因组学》第十五章 - 第二部分 摘要 本部分深入探讨了真菌基因组的生物信息学分析&#xff0c;包括基因组测序策略、基因识别与功能注释&#xff0c;以及基因组复制对真菌进化的影响。此外&#xff0c;还讨论了功能基因组学方法在真菌…

开发技术-Java集合(List)删除元素的几种方式

文章目录 1. 错误的删除2. 正确的方法2.1 倒叙删除2.2 迭代器删除2.3 removeAll() 删除2.4 removeIf() 最简单的删除 3. 总结 1. 错误的删除 在写代码时&#xff0c;想将其中的一个元素删除&#xff0c;就遍历了 list &#xff0c;使用了 remove()&#xff0c;发现效果并不是想…

打破僵局:Foxit Reader无法打开的终极解决方案

打破僵局&#xff1a;Foxit Reader无法打开的终极解决方案 在数字化阅读时代&#xff0c;Foxit Reader作为一款广受欢迎的PDF阅读器&#xff0c;其打不开的问题无疑会给用户带来诸多不便。本文将为您提供全面的解决方案&#xff0c;从基础检查到高级技巧&#xff0c;确保您能够…

CircuitBreaker断路器-Resilience4j

目录 背景分布式架构面临的问题&#xff1a;服务雪崩如何解决&#xff1f; CircuitBreakerResilience4jCircuitBreaker 服务熔断服务降级三种状态转换例子参数配置案例demo作业 BulkHead隔离特性SemaphoreBulkhead使用了信号量FixedThreadPoolBulkhead使用了有界队列和固定大小…