常微分方程算法之编程示例一(欧拉法)

目录

一、研究问题

二、C++代码

三、计算结果


一、研究问题

        前面几节内容介绍了常微分方程有限差分格式的推导。为加强对本专栏知识的理解,从本节开始,我们补充一些具体算例及相应的编程。

        欧拉法的原理及推导请参考:

常微分方程算法之欧拉法(Euler)_欧拉公式求解微分方程-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/L_peanut/article/details/137268437?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,N;double a,b,h,y0,err,maxerr;double *x,*y;double f(double x, double y);double exact(double x);a=0.0;  //求解区域的左端点b=1.0;  //求解区域的右端点N=10;  //总的剖分数h=(b-a)/N;  //步长//动态分配长度为(N+1)的数组,存放节点坐标x=(double *)malloc(sizeof(double)*(N+1));for(i=0;i<=N;i++)x[i]=a+i*h;//动态分配长度为(N+1)的数组,存放对应节点的数值解y=(double*)malloc(sizeof(double)*(N+1));y0=1.0;  //初值y[0]=y0;  //初值maxerr=0.0;for(i=0;i<N;i++){y[i+1]=y[i]+h*f(x[i],y[i]);  //欧拉法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.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.
The max error is 0.052720.

        从计算结果中可看出,欧拉法的计算误差还是比较大的。

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

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

相关文章

go的有栈和无栈

在 Go 的 HTTP 处理中&#xff0c;“有栈”和“无栈”通常是指处理并发请求时的不同方式。 “有栈”的方式通常是指使用传统的基于线程或协程的并发模型&#xff0c;每个并发请求都有自己独立的栈空间。 例如&#xff0c;使用标准库中的 net/http 处理并发请求&#xff0c;默认…

智能虚拟集群系统在酒店楼宇中的应用

随着城市化建设的不断发展&#xff0c;酒店楼宇等建筑规模不断扩大、地面/地下楼层不断增加。面对日益复杂的通信环境&#xff0c;酒店服务和管理人员对无线通信系统的稳定性、覆盖范围、话音清晰度、应急响应能力等方面均提出了更高的需求。 需求痛点 面对繁忙的工作&#x…

Python火焰锋动力学和浅水表面波浪偏微分方程

&#x1f3af;要点 &#x1f3af;流图可视化正弦余弦矢量场 | &#x1f3af;解空间变化边界条件二维拉普拉斯方程 | &#x1f3af;解圆柱坐标系标量场 | &#x1f3af;解一维泊松方程 | &#x1f3af;解二维扩散方程 | &#x1f3af;解火焰锋的动力学偏微分方程 | &#x1f3a…

Mysql Server配置

MySQL服务器mysqld有许多命令选项和系统变量&#xff0c;可以在启动时设置这些选项和变量来配置其操作。要确定服务器使用的默认命令选项和系统变量值&#xff0c;请执行以下命令&#xff1a; $> mysqld --verbose --help 该命令生成所有mysqld选项和可配置系统变量的列表…

计算机网络 MAC地址表管理

一、理论知识 1.MAC地址表&#xff1a;交换机使用MAC地址表来记录各MAC地址对应的端口&#xff0c;用于帧转发的目的。 2.老化机制&#xff1a;交换机会为每一条MAC地址表项设置老化时间&#xff0c;老化时间到期后未收到该MAC地址报文的表项将被删除&#xff0c;释放资源。 …

【自动驾驶】通过下位机发送的加速度、角速度计算机器人在世界坐标系中的姿态

文章目录 原始代码全局变量定义逆平方根函数四元数解算函数理论解释四元数加速度计数据归一化计算方向余弦矩阵的第三行计算误差计算并应用积分反馈应用比例反馈积分陀螺仪数据,更新四元数归一化四元数更新姿态数据整体流程原始代码 #define SAMPLING_FREQ 20.0f // 采样频率…

适用于轨道交通专用的板卡式网管型工业以太网交换机

是网管型 CompactPCI板卡式冗余环网交换机。前面板带有6个 10/100/1000Base-T(X)M12接口。后面的CPCI接口有 8个10/100/1000Base-T (X) 以太网接口。 是特别为轨道交通行业EN50155标准要求而设计的坚固型交换机。它同时具有以下特性&#xff1a; ● 支持2线以太网距离扩展端口&…

LeetCode 16.最接近的三数之和(C++)

链接 https://leetcode.cn/problems/3sum-closest/description/ 题目 给你一个长度为 n 的整数数组 nums 和 一个目标值 target。请你从 nums 中选出三个整数&#xff0c;使它们的和与 target 最接近。 返回这三个数的和。 假定每组输入只存在恰好一个解。 示例1 输入&a…

五十四、openlayers官网示例LineString Arrows解析——在地图上绘制箭头

官网demo地址&#xff1a; LineString Arrows 这篇介绍了在地图上绘制箭头。 创建一个矢量数据源&#xff0c;将其绑定为draw的数据源并展示在矢量图层上。 const source new VectorSource();const vector new VectorLayer({source: source,style: styleFunction,});map.ad…

真实还原汽车引擎声浪——WT2003Hx语音芯片方案

PART.01 产品市场 WT2003Hx是一款高性能的MP3音频解码芯片&#xff0c;具有成本效益、低功耗和高可靠性等特点&#xff0c;适用于多种场景&#xff0c;包括但不限于汽车娱乐系统、玩具、教育设备以及专业音响设备等。在模拟汽车引擎声的应用中&#xff0c;这一芯片的特性被特…

物联网技术里的边缘计算是什么?

物联网离不开云计算&#xff0c;但云计算有时会有一些问题&#xff0c;比如带宽不足和可能出现的高延迟&#xff0c;这些都给实时数据处理带来了麻烦。为了解决这个问题&#xff0c;现在很多公司开始关注边缘计算这个技术。 那什么是边缘计算呢&#xff1f;简单来说&#xff0…

NumPy2.0近期更新导致用不了

问题 A module that was compiled using NumPy 1.x cannot be run in NumPy 2.0.0 as it may crash. To support both 1.x and 2.x versions of NumPy, modules must be compiled with NumPy 2.0. Some module may need to rebuild instead e.g. with ‘pybind11>2.12’. …

关于on_listWidget_currentItemChanged问题

今天遇到了一个问题&#xff0c;我子界面和主界面各有一个qlistwidget&#xff0c;然后点击item需要执行一些业务逻辑&#xff0c;在测试时发现软件崩溃&#xff0c;通过断点发现是主界面的槽被触发了。 为什么我点击的是子界面的qlistwidget&#xff0c;却也触发了主界面的槽…

五十三、openlayers官网示例Layer Spy解析——跟随鼠标透视望远镜效果、图层剪裁

官网demo地址&#xff1a; Layer Spy 这篇实现了鼠标跟随望远镜效果&#xff0c;鼠标移动时绘制一个圆形的剪裁区剪裁上层图层。 container.addEventListener("mousemove", function (event) {mousePosition map.getEventPixel(event);map.render();});container.a…

28.建议和纠错

创建ByteBuf建议 特别说明&#xff1a; 之前创建的ByteBuffer都是&#xff1a; ByteBuf buffer ByteBufAllocator.DEFAULT.buffer(10); //默认获取的是直接内存 这样创建只是自己写一些测试练习使用。 真正项目开发中&#xff0c;还是建议在handler中的创建&#xff1a;在服…

【windows|009】计算机网络基础知识

&#x1f341;博主简介&#xff1a; &#x1f3c5;云计算领域优质创作者 &#x1f3c5;2022年CSDN新星计划python赛道第一名 &#x1f3c5;2022年CSDN原力计划优质作者 ​ &#x1f3c5;阿里云ACE认证高级工程师 ​ &#x1f3c5;阿里云开发者社区专家博主 &#x1f48a;交流社…

SAP AI Copilot Joule有可能是对SAP顾问的王炸

本月初在奥兰多举行的SAP蓝宝石大会&#xff0c;按照惯例SAP蓝宝石大会是SAP宣传SAP最新战略和技术的大会&#xff0c;所以火热的AI话题是重中之重&#xff0c;包括请了黄仁勋来站台。刚开始我也没有太在意&#xff0c;认为会是一场普通的大会。对于AI&#xff0c;虽然很火但是…

将 Aira2 集成到 Go项目中

介绍 Aria2 简介 Aria2 是一个轻量级的、跨平台的命令行下载工具&#xff0c;具有强大的多连接、多协议支持&#xff0c;以及灵活的任务控制功能。它可以同时从 HTTP、HTTPS、FTP、BitTorrent 和磁力链接等来源下载文件&#xff0c;并支持断点续传&#xff0c;可以在下载过程…

代码评审——Java占位符%n的处理

问题描述 在软件开发项目中&#xff0c;特别是在处理动态内容生成与呈现至前端界面的过程中&#xff0c;正确运用占位符以确保文本完整性和数据准确性显得尤为重要。不当的占位符管理不仅可能导致语法错误或逻辑混乱&#xff0c;还会引发一系列隐蔽的问题&#xff0c;这些问题…

PHP序列化基础概念:深入理解数据存储与传输

PHP序列化是一个关键概念&#xff0c;它允许开发者将复杂的数据结构&#xff08;如对象、数组等&#xff09;转换为可存储或可传输的字符串格式。以下是关于PHP序列化基础概念的深入理解&#xff1a; 序列化的定义与目的 定义&#xff1a;序列化是将数据结构或对象状态转换为可…