常微分方程算法之编程示例三(预估-校正法)

news2024/11/16 9:36:51

目录

一、研究问题

二、C++代码

三、计算结果


一、研究问题

        本节我们采用预估校正法(改进欧拉法)求解算例。

        预估-校正法的原理及推导请参考:

常微分方程算法之预估-校正法(改进Euler法)_、改进欧拉法-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/L_peanut/article/details/137326300?spm=1001.2014.3001.5501

        研究问题依然为

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

取步长为0.1。

二、C++代码


#include <cmath>
#include <stdlib.h>
#include <stdio.h>

int main(int argc, char *argv[])
{
        int i,k,N;
        double a,b,h,y0,ypredict,err,maxerr;
        double *x,*y;
        double f(double x, double t);
        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));
        for(i=0;i<=N;i++)
                x[i]=a+i*h;   //节点坐标
        y0=1.0;
        y[0]=y0;  //初值

        for(i=0;i<N;i++)
        {
                ypredict=y[i]+h*f(x[i],y[i]);
                y[i+1]=y[i]+h*(f(x[i],y[i])+f(x[i+1],ypredict))/2.0;
                err=fabs(y[i+1]-exact(x[i+1]));  //计算节点处的误差
                printf("x[%d]=%.4f, y[%d]=%f, exact=%f, err=%f.\n",i+1,x[i+1],i+1,y[i+1],exact(x[i+1]),err);
                if(err>maxerr)
                        maxerr=err;
        }
        printf("The max error is %f.\n",maxerr);

        return 0;
}



//右端项函数
double f(double x, double y)
{
        return y-2*x/y;
}
//精确解
double exact(double x)
{
        return sqrt(1.0+2*x);
}

 三、计算结果

x[1]=0.1000, y[1]=1.095909, exact=1.095445, err=0.000464.
x[2]=0.2000, y[2]=1.184097, exact=1.183216, err=0.000881.
x[3]=0.3000, y[3]=1.266201, exact=1.264911, err=0.001290.
x[4]=0.4000, y[4]=1.343360, exact=1.341641, err=0.001719.
x[5]=0.5000, y[5]=1.416402, exact=1.414214, err=0.002188.
x[6]=0.6000, y[6]=1.485956, exact=1.483240, err=0.002716.
x[7]=0.7000, y[7]=1.552514, exact=1.549193, err=0.003321.
x[8]=0.8000, y[8]=1.616475, exact=1.612452, err=0.004023.
x[9]=0.9000, y[9]=1.678166, exact=1.673320, err=0.004846.
x[10]=1.0000, y[10]=1.737867, exact=1.732051, err=0.005817.

        同样的算例,采用梯形法和欧拉法的计算结果误差为:

+++++++++++++++++++++++++++梯形法+++++++++++++++++++++++++++++
k=3, x[1]=0.1000, y[1]=1.095657, exact=1.095445, err=0.000212.
k=3, x[2]=0.2000, y[2]=1.183596, exact=1.183216, err=0.000380.
k=3, x[3]=0.3000, y[3]=1.265444, exact=1.264911, err=0.000532.
k=3, x[4]=0.4000, y[4]=1.342327, exact=1.341641, err=0.000686.
k=3, x[5]=0.5000, y[5]=1.415064, exact=1.414214, err=0.000850.
k=3, x[6]=0.6000, y[6]=1.484274, exact=1.483240, err=0.001034.
k=3, x[7]=0.7000, y[7]=1.550437, exact=1.549193, err=0.001244.
k=2, x[8]=0.8000, y[8]=1.613948, exact=1.612452, err=0.001496.
k=2, x[9]=0.9000, y[9]=1.675112, exact=1.673320, err=0.001792.
k=2, x[10]=1.0000, y[10]=1.734192, exact=1.732051, err=0.002141.
The max error is 0.002141.
++++++++++++++++++++++++++欧拉法+++++++++++++++++++++++++
x[1]=0.1000, y[1]=1.100000, exact=1.095445, err=0.004555.
x[2]=0.2000, y[2]=1.191818, exact=1.183216, err=0.008602.
x[3]=0.3000, y[3]=1.277438, exact=1.264911, err=0.012527.
x[4]=0.4000, y[4]=1.358213, exact=1.341641, err=0.016572.
x[5]=0.5000, y[5]=1.435133, exact=1.414214, err=0.020919.
x[6]=0.6000, y[6]=1.508966, exact=1.483240, err=0.025727.
x[7]=0.7000, y[7]=1.580338, exact=1.549193, err=0.031145.
x[8]=0.8000, y[8]=1.649783, exact=1.612452, err=0.037332.
x[9]=0.9000, y[9]=1.717779, exact=1.673320, err=0.044459.
x[10]=1.0000, y[10]=1.784771, exact=1.732051, err=0.052720.

        可见虽然与梯形法相比,误差较大,但是可以在不增加计算量的前提条件下获得比欧拉法更小的误差。如果取步长为0.05,计算结果为:

x[1]=0.0500, y[1]=1.048869, exact=1.048809, err=0.000060.
x[2]=0.1000, y[2]=1.095561, exact=1.095445, err=0.000116.
x[3]=0.1500, y[3]=1.140345, exact=1.140175, err=0.000169.
x[4]=0.2000, y[4]=1.183437, exact=1.183216, err=0.000221.
x[5]=0.2500, y[5]=1.225017, exact=1.224745, err=0.000273.
x[6]=0.3000, y[6]=1.265236, exact=1.264911, err=0.000325.
x[7]=0.3500, y[7]=1.304219, exact=1.303840, err=0.000378.
x[8]=0.4000, y[8]=1.342075, exact=1.341641, err=0.000434.
x[9]=0.4500, y[9]=1.378897, exact=1.378405, err=0.000492.
x[10]=0.5000, y[10]=1.414767, exact=1.414214, err=0.000553.
x[11]=0.5500, y[11]=1.449756, exact=1.449138, err=0.000618.
x[12]=0.6000, y[12]=1.483927, exact=1.483240, err=0.000687.
x[13]=0.6500, y[13]=1.517337, exact=1.516575, err=0.000762.
x[14]=0.7000, y[14]=1.550035, exact=1.549193, err=0.000842.
x[15]=0.7500, y[15]=1.582067, exact=1.581139, err=0.000928.
x[16]=0.8000, y[16]=1.613472, exact=1.612452, err=0.001021.
x[17]=0.8500, y[17]=1.644289, exact=1.643168, err=0.001122.
x[18]=0.9000, y[18]=1.674551, exact=1.673320, err=0.001231.
x[19]=0.9500, y[19]=1.704288, exact=1.702939, err=0.001350.
x[20]=1.0000, y[20]=1.733530, exact=1.732051, err=0.001479.
The max error is 0.001479.

        可见缩小步长,可以取得较理想的计算结果。

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

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

相关文章

东昂科技从创业板改道北交所:大客户依赖症明显,巨额分红又募投补流

《港湾商业观察》施子夫 黄懿 2024年6月24日&#xff0c;厦门东昂科技股份有限公司&#xff08;以下简称&#xff0c;东昂科技&#xff09;在北交所网站披露第二轮审核问询函的回复。自2024年1月IPO申请获北交所受理以来&#xff0c;东昂科技已经收到北交所下发的两轮审核问询…

探索SoMeLVLM:面向社交媒体处理的大型视觉语言模型

SoMeLVLM: A Large Vision Language Model for Social Media Processing 论文地址: https://arxiv.org/abs/2402.13022https://arxiv.org/abs/2402.13022发表在ACL 2024 1.概述 在线社交媒体平台涌现出海量的文本与视觉内容,深刻揭示了人们如何交流、互动以及自我表达。随着通…

动态规划数字三角形模型——AcWing 275. 传纸条

动态规划数字三角形模型 定义 动态规划数字三角形模型是在一个三角形的数阵中&#xff0c;通过一定规则找到从顶部到底部的最优路径或最优值。 运用情况 通常用于解决具有递推关系、需要在不同路径中做出选择以达到最优结果的问题。比如计算最短路径、最大和等。 计算其他…

研究上百个小时,高手总结了这份 DALL-E 3 人物连续性公式(下)

根据前两篇学习&#xff0c;如何创建人物连续性公式&#xff0c;或多或少都会联想到 Midjourney 里面的 Seed 值&#xff0c;是否能运用到 Dall e3 里面&#xff0c;那么今天这篇文章更新来了&#xff01;&#xff01; 继续感谢这位伟大的作者&#xff1a;AshutoshShrivastava…

五大基于Cesium的开源框架及其优劣势,一文导读。

2024-03-12 10:49贝格前端工场 OpenGL基础上有了webGL&#xff0c;webGL基础上有了Cesium&#xff0c;Cesium基础上有了N多开源框架&#xff0c;本文带大家看一下。 1. CesiumJS CesiumJS 是 Cesium 引擎的核心框架&#xff0c;提供了丰富的 API 和组件&#xff0c;用于构建…

基于Java微信小程序校园订餐系统设计和实现(源码+LW+调试文档+讲解等)

&#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN作者、博客专家、全栈领域优质创作者&#xff0c;博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌&#x1f497; &#x1f31f;文末获取源码数据库&#x1f31f;感兴趣的可以先收藏起来&#xff0c;还…

大模型训练十大戒律!!

1.切勿微调&#xff08;Thou Shalt Not Fine-Tune&#xff09;&#xff1a;尽量写prompt&#xff0c;利用大模型本身的能力zeroshot&#xff0c;必要时辅以少量样本&#xff08;few-shot examples&#xff09;或检索增强生成&#xff08;RAG&#xff09;。微调成本高、速度慢且…

如何在web页面下做自动化测试?

自动化测试是在软件开发中非常重要的一环&#xff0c;它可以提高测试效率并减少错误率。在web页面下进行自动化测试&#xff0c;可以帮助我们验证网页的功能和交互&#xff0c;并确保它们在不同浏览器和平台上的一致性。本文将从零开始&#xff0c;详细介绍如何在web页面下进行…

充电宝哪个牌子最好最耐用?耐用西圣、罗马仕、绿联充电宝实测

目前充电宝是我们出行必备的“能量伴侣”。然而&#xff0c;市面上充电宝品牌繁多&#xff0c;让人眼花缭乱&#xff0c;究竟哪个牌子最好最耐用呢&#xff1f;为了给大家找到答案&#xff0c;我们精心挑选了西圣、罗马仕和绿联这三个备受关注的品牌&#xff0c;并对它们的充电…

小米6款手机霸榜618 Top20,看安卓巨头如何撼动苹果地位

618购物节&#xff0c;作为中国电商领域的一大盛事&#xff0c;每年都会吸引无数消费者的眼球。在这场购物狂欢中&#xff0c;智能手机市场的竞争尤为激烈。 今年618&#xff0c;小米以6款手机上榜累计销量TOP20&#xff0c;超越了苹果的5款&#xff0c;成为上榜机型最多的品牌…

74. UE5 RPG 搭建场景设置光照和纹理流送

前面&#xff0c;我们对角色和敌人进行了一些完善。在这一篇文章里面&#xff0c;我们将进行对场景进行搭建&#xff0c;并对场景的光照和场景的后处理进行设置。 创建新场景 选择新建关卡 接着选择将关卡另存为 选择一个合理的位置 我们将场景内的网格地面删除掉&#xf…

如何提高测试管理的效率和一致性?

TestComplete 是一款自动化UI测试工具&#xff0c;这款工具目前在全球范围内被广泛应用于进行桌面、移动和Web应用的自动化测试。 TestComplete 集成了一种精心设计的自动化引擎&#xff0c;可以自动记录和回放用户的操作&#xff0c;方便用户进行UI&#xff08;用户界面&…

什么是 Linux 内核,其功能是什么?

inux内核是Linux操作系统的核心组件&#xff0c;负责管理系统的硬件资源&#xff0c;并为应用程序提供基本的操作系统服务。刚好我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「Linux的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后…

服务器神秘挂起:一场惊心动魄的内核探案

2024年6月17日&#xff0c;我们的运维团队突然收到了一连串的告警。监控大屏上&#xff0c;代表着不同 Sealos 可用区的绿点中&#xff0c;零星地闪烁起了一两个红点。 “奇怪&#xff0c;怎么有几台服务器突然 hang 住了&#xff1f;” 值班的小辉皱起了眉头。 这次故障的诡…

能运行的Bug就别动它了...程序员老梗图什么时候看见才能不笑啊

说到程序员&#xff0c;那可是外界眼中自带光环的生物——掌控代码的大神&#xff0c;改变世界的王者&#xff01; 然而&#xff0c;现实却是“甲方虐我千百遍&#xff0c;我待bug如初恋”。活多钱少压力大&#xff0c;程序员们只能踏上了自黑、自嘲的不归路&#xff0c;毕竟&…

记录一个前端axios传参格式的问题

今天改造一个其他系统的页面&#xff0c;直接把原来系统的接口拿过来复用&#xff0c;发现怎么传参都报400&#xff0c;地址参数都一样&#xff0c;怎么就报错了呢&#xff0c;报错原因大概是后台无法解析出参数&#xff08;后台属于其他平台&#xff0c;无法测试&#xff09;。…

Spring Boot配置Springdoc

刚刚开通了一个公众号&#xff0c;会分享一些技术博客和自己觉得比较好的项目&#xff0c;同时会更新一些自己使用的工具和图书资料&#xff0c;后面会整理一些面试资料进行分享&#xff0c;觉得有兴趣的可以关注一下。 问题描述 之前文章有提到Spring Boot切换到Springdoc&a…

CAD随机球体插件 专业版

插件介绍 CAD随机球体插件专业版可用于在AutoCAD内建立随机分布的球体三维模型。 模型说明 模型尺寸中长度、宽度、高度&#xff1a;设定随机球体生成的长方体区域&#xff0c;及生成的长方体部件尺寸。 建模控制中球体内包参数为限定球体是否会穿过模型的边界。当球体内…

标准立项 | 湖库沉积物微生物多样性监测规程

饮用水水源地保护是饮用水安全保障中最重要的一个环节&#xff0c;其水质状况直接关系到供水区人民群众的身体健康。我国水资源存在水质差、资源短缺、资源时间空间分布不合理等问题。而近些年由水源地污染引发的饮用水安全事件&#xff0c;给居民的生产生活造成一定程度的影响…

【网络安全的神秘世界】解决dvwa靶场报错:Illegal mix of collations for operation ‘UNION‘

&#x1f31d;博客主页&#xff1a;泥菩萨 &#x1f496;专栏&#xff1a;Linux探索之旅 | 网络安全的神秘世界 | 专接本 | 每天学会一个渗透测试工具 &#x1f6a9;问题描述 当尝试执行如下 SQL 语句时&#xff1a; 1 union select schema_name,1 from information_schema.s…