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

news2024/11/19 21:19:23

目录

一、研究问题

二、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.coloradmin.cn/o/1867134.html

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

相关文章

【STM32】外部中断

1.EXTI简介 外部中断/事件控制器(EXTI)管理了控制器的23个中断/事件线。每个中断/事件线都对应有一个边沿检测器&#xff0c;可以实现输入信号的上升沿检测和下降沿的检测。 EXTI可以实现对每个中断/事件线进行单独配置&#xff0c;可以单独配置为中断或者事件&#xff0c;以及…

Spring Ai入门

SpringAI是一个AI工程应用框架&#xff0c;旨在将Spring生态系统的设计原则&#xff08;如可移植性和模块化设计&#xff09;应用于AI领域。它推广使用Plain Old Java Object&#xff08;POJO&#xff09;作为AI应用程序的构建块&#xff0c;从而为Java开发者提供了一种更简洁的…

JavaScript中常用数据类型做布尔值(Boolean)转换

一、前言 二、示例 1、String转Boolean 2、Number转Boolean 3、NaN、Null、undefined 转Boolean 4、Object转Boolean 5、Array转Boolean 6、Symbol转Boolean 三、总结 四、思考 一、前言 JavaScript中&#xff0c;经常需要对一些值进行boolean判断&#xff0c;根据判…

【efinix】efinity如何安装官方补丁patch

efinix官网可以下载efinity的官方补丁。 下载 efinity-2023.2.307.5.10-windows-x64-patch.zip 解压缩补丁zip 压缩包内容 files/ : updated files to be copied into the Efinity installation run.sh : patch installation script (Linux on…

【Nginx】静态资源访问配置

nginx 静态资源访问配置 Nginx 静态资源访问配置 通过该片文章&#xff0c;你能了解图中的内容&#xff1a; 实际问题 Nginx 应该怎么写&#xff0c;才能匹配这个图片资源路径&#xff1f; http://47.120.10.110:7001/public/images/picture.jpg解决方案 你需要配置一个 N…

Redis-Geospatial数据类型及其常用命令详解

1.Redis概述 2.Geospatial 数据类型 Redis 的 Geospatial 数据类型可以存储地理空间的位置信息和执行地理相关的查询。比如查找指定半径内的所有位置、计算两个位置之间的距离等。Redis 使用有序集合 (sorted sets) 来实现这些功能。 3.存储和性能 Geospatial 数据在 Redis 中…

2023 年度国家科学技术奖励公布

人不走空 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌赋&#xff1a;斯是陋室&#xff0c;惟吾德馨 目录 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌…

php goto解密脚本源码

php goto解密脚本源码 源码下载&#xff1a;https://download.csdn.net/download/m0_66047725/89426171 更多资源下载&#xff1a;关注我。

【数学建模】 函数极值与规划模型

文章目录 函数极值与规划模型1. 线性代数和线性规划的联系1.1 线性代数的基本概念1.2 线性规划的基本概念1.3 线性代数与线性规划的联系矩阵和向量线性方程组单纯形法内点法凸优化 1.4 例子 2. Numpy有关矩阵运算示例2.1 矩阵的创建2.2 矩阵的基本运算2.3 矩阵的合并2.4 矩阵的…

.NET C# 使用OpenCV实现人脸识别

.NET C# 使用OpenCV实现模型训练、人脸识别 码图~~~ 1 引入依赖 OpenCvSHarp4 - 4.10.0.20240616 OpenCvSHarp4.runtime.win - 4.10.0.20240616 2 人脸数据存储结构 runtime directory | face | {id}_{name} | *.jpg id - 不可重复 name - 人名 *.jpg - 人脸照片3 Demo 3.…

搞定求职难题:工作岗位列表+简历制作工具 | 开源专题 No.75

SimplifyJobs/New-Grad-Positions Stars: 8.5k License: NOASSERTION 这个项目是一个用于分享和跟踪美国、加拿大或远程职位的软件工作机会列表。该项目的核心优势和关键特点如下&#xff1a; 自动更新新岗位信息便捷地提交问题进行贡献提供一键申请选项 BartoszJarocki/cv…

SR655 OCP3 网卡Legacy PXE 轮循设置

1、更改UEFI Boot Mode为UEFI&#xff0c;保存重启服务器&#xff0c;再次进入UEFI界面调整如下图例 更改如下所有网卡legacy 为PXE。后将Boot Mode 更改为legacy,保存退出。 如下图例操作依次更改所有网卡口 2、步骤1&#xff0c;更改Boot Mode 为Legacy保存退出重启服器后&…

SAP揭秘者-在QM标准功能增加取消UD的功能第二季

文章摘要&#xff1a; 上篇文章我已经给大家介绍怎么开发两个程序来取消UD&#xff0c;但是上篇文章中有提到这个时候去直接执行ZQEVAC40程序去取消物料凭证 则会报错&#xff0c;那么为了解决这个报错&#xff0c;我们需要更改后台配置。 接下来我给大家讲后台配置该怎么配置&…

Jetpack架构组件_Navigaiton组件_1.Navigaiton切换Fragment

1.Navigation主要作用 方便管理Fragment &#xff08;1&#xff09;方便我们管理Fragment页面的切换 &#xff08;2&#xff09;可视化的页面导航图&#xff0c;便于理清页面间的关系。 &#xff08;3&#xff09;通过destination和action完成页面间的导航 &#xff08;4&a…

Docker 命令——安全

我们将学习两个命令。第一个命令是 docker container run 命令&#xff0c;这样你就能看到使用该命令的一些好处。其次&#xff0c;我们将看看 docker container diff 命令&#xff0c;你可以用它来查看在已有的镜像基础上做了什么。让我们看看如何使用这两个命令来确保容器的安…

【ARM-Linux篇】项目:智能家居

一、项目概述 •项目功能 通过语音控制客厅灯、卧室灯、风扇、人脸识别开门等,可以进行火灾险情监测,可以并且实现Sockect发送指令远程控制各类家电等 •项目描述 全志H616通过串口连接各模块硬件,检测语音的识别结果,分析语音识别的结果来对家电设备进行控制。摄像头拍…

山东大学多核并行2024年回忆版

2024.6.13回忆版 矩阵向量乘不可整除代码 集合通信与点对点通信的区别 块划分、循环划分、循环块划分&#xff08;14个向量&#xff0c;4个进程&#xff09; 按行访问还是按列访问快 SISD系统问题 循环依赖问题 问题&#xff1a;为什么不能对这个循环并行化&#xff0…

Vue移动端动态表单生成组件

FormCreate 是一个可以通过 JSON 生成具有动态渲染、数据收集、验证和提交功能的表单生成组件。支持6个UI框架&#xff0c;适配移动端&#xff0c;并且支持生成任何 Vue 组件。内置20种常用表单组件和自定义组件&#xff0c;再复杂的表单都可以轻松搞定。 帮助文档 | 源码下载…

科技赋能·创领未来丨智合同和百胜中国就Contract AI Studio项目达成合作

#智合同 #百胜中国 #AIGC #NLP #LLM #Contract AI Studio 近期&#xff0c;国内AIGC和LLM大语言模型发展可谓是如火如荼&#xff0c;其迅速崛起为社会和产业发展起到了非常重要的作用。人们利用AI技术&#xff08;AIGC、LLM大语言模型、NLP等&#xff09;将其赋能到企业生…

【ai】tx2 nx:ubuntu18.04 yolov4-triton-tensorrt 成功部署server 运行

isarsoft / yolov4-triton-tensorrt运行发现插件未注册? 【ai】tx2 nx: jetson Triton Inference Server 部署YOLOv4 【ai】tx2 nx: jetson Triton Inference Server 运行YOLOv4 对main 进行了重新构建 【ai】tx2 nx :ubuntu查找NvInfer.h 路径及哪个包、查找符号【ai】tx2…