Python多语言欧拉法和预测校正器实现

📜流体力学电磁学运动学动力学化学和电路中欧拉法

📜流体力学电磁学运动学动力学化学和电路中欧拉法示例:Python重力弹弓流体晃动微分方程模型和交直流电阻电容电路
在这里插入图片描述

✒️多语言实现欧拉法和修正欧拉法

在数学和计算科学中,欧拉方法(也称为前向欧拉方法)是一种用于求解具有给定初值的常微分方程的一阶数值程序。考虑一个微分方程 d y / d x = f ( x , y ) d y / d x=f(x, y) dy/dx=f(x,y),初始条件为 y ( x 0 ) = y 0 y(x 0)=y 0 y(x0)=y0,则该方程的逐次逼近可由下式给出:
y ( n + 1 ) = y ( n ) + h ∗ f ( x ( n ) , y ( n ) ) y(n+1)=y(n)+h * f(x(n), y(n)) y(n+1)=y(n)+hf(x(n),y(n))
其中 h = ( x ( n ) − x ( 0 ) ) / n h=(x(n)-x(0)) / n h=(x(n)x(0))/n, $h $表示步长。选择较小的 h h h​ 值会导致更准确的结果和更多的计算时间。

例如,考虑微分方程 d y / d x = ( x + y + x y ) d y / d x=(x+y+x y) dy/dx=(x+y+xy),初始条件为 y ( 0 ) = 1 y (0)=1 y(0)=1,步长为 h = 0.025 h =0.025 h=0.025。求 y ( 0.1 ) y(0.1) y(0.1)​。

解: f ( x , y ) = ( x + y + x y ) f(x, y)=(x+y+x y) f(x,y)=(x+y+xy)

x 0 = 0 , y 0 = 1 , h = 0.025 x 0=0, y 0=1, h=0.025 x0=0,y0=1,h=0.025

现在我们可以使用欧拉公式计算 y 1 y_1 y1
y 1 = y 0 + h ∗ f ( x 0 , y 0 ) y 1 = 1 + 0.025 ∗ ( 0 + 1 + 0 ∗ 1 ) y 1 = 1.025 y ( 0.025 ) = 1.025. \begin{aligned} & y_1=y 0+h * f(x 0, y 0) \\ & y_1=1+0.025 *(0+1+0 * 1) \\ & y_1=1.025 \\ & y(0.025)=1.025 . \end{aligned} y1=y0+hf(x0,y0)y1=1+0.025(0+1+01)y1=1.025y(0.025)=1.025.
类似地我们可以计算 y ( 0.050 ) , y ( 0.075 ) , … y(0.050), y(0.075), \ldots y(0.050),y(0.075), y ( 0.1 ) y(0.1) y(0.1)

y ( 0.1 ) = 1.11167 y(0.1)=1.11167 y(0.1)=1.11167

Python实现:

def func( x, y ):return (x + y + x * y)def euler( x0, y, h, x ):temp = -0while x0 < x:temp = yy = y + h * func(x0, y)x0 = x0 + hprint("Approximate solution at x = ", x, " is ", "%.6f"% y)x0 = 0
y0 = 1
h = 0.025
x = 0.1euler(x0, y0, h, x)

C++实现:

#include <iostream>
using namespace std;float func(float x, float y)
{return (x + y + x * y);
}void euler(float x0, float y, float h, float x)
{float temp = -0;while (x0 < x) {temp = y;y = y + h * func(x0, y);x0 = x0 + h;}cout << "Approximate solution at x = "<< x << " is " << y << endl;
}int main()
{float x0 = 0;float y0 = 1;float h = 0.025;float x = 0.1;euler(x0, y0, h, x);return 0;
}

C#实现:

using System;class GFG {static float func(float x, float y){return (x + y + x * y);}static void euler(float x0, float y, float h, float x){while (x0 < x) {y = y + h * func(x0, y);x0 = x0 + h;}Console.WriteLine("Approximate solution at x = "+ x + " is " + y);}public static void Main(){float x0 = 0;float y0 = 1;float h = 0.025f;float x = 0.1f;euler(x0, y0, h, x);}
}

Java实现:

import java.io.*;class Euler {float func(float x, float y){return (x + y + x * y);}void euler(float x0, float y, float h, float x){float temp = -0;while (x0 < x) {temp = y;y = y + h * func(x0, y);x0 = x0 + h;}System.out.println("Approximate solution at x = "+ x + " is " + y);}public static void main(String args[]) throws IOException{Euler obj = new Euler();float x0 = 0;float y0 = 1;float h = 0.025f;float x = 0.1f;obj.euler(x0, y0, h, x);}
}

JavaScript实现:

<script>function func(x, y){return (x + y + x * y);}function euler(x0, y, h, x){let temp = -0;while (x0 < x) {temp = y;y = y + h * func(x0, y);x0 = x0 + h;}document.write("Approximate solution at x = "+ x + " is " + y);}let x0 = 0;let y0 = 1;let h = 0.025;let x = 0.1;euler(x0, y0, h, x);</script>

预测校正器或修正欧拉法

Python实现

def f(x, y):v = y - 2 * x * x + 1;return v;def predict(x, y, h):y1p = y + h * f(x, y);return y1p;def correct(x, y, x1, y1, h):e = 0.00001;y1c = y1;while (abs(y1c - y1) > e + 1):y1 = y1c;y1c = y + 0.5 * h * (f(x, y) + f(x1, y1));return y1c;def printFinalValues(x, xn, y, h):while (x < xn):x1 = x + h;y1p = predict(x, y, h);y1c = correct(x, y, x1, y1p, h);x = x1;y = y1c;print("The final value of y at x =",int(x), "is :", y);if __name__ == '__main__':x = 0; y = 0.5;xn = 1;h = 0.2;printFinalValues(x, xn, y, h);

C++实现

#include <bits/stdc++.h>
using namespace std;double f(double x, double y)
{double v = y - 2 * x * x + 1;return v;
}double predict(double x, double y, double h)
{double y1p = y + h * f(x, y);return y1p;
}double correct(double x, double y,double x1, double y1,double h)
{double e = 0.00001;double y1c = y1;do {y1 = y1c;y1c = y + 0.5 * h * (f(x, y) + f(x1, y1));} while (fabs(y1c - y1) > e);return y1c;
}void printFinalValues(double x, double xn,double y, double h)
{while (x < xn) {double x1 = x + h;double y1p = predict(x, y, h);double y1c = correct(x, y, x1, y1p, h);x = x1;y = y1c;}cout << "The final value of y at x = "<< x << " is : " << y << endl;
}int main()
{double x = 0, y = 0.5;double xn = 1;double h = 0.2;printFinalValues(x, xn, y, h);return 0;
}

C#实现

using System;class GFG
{static double f(double x, double y)
{double v = y - 2 * x * x + 1;return v;
}static double predict(double x, double y, double h)
{double y1p = y + h * f(x, y);return y1p;
}static double correct(double x, double y,double x1, double y1,double h)
{double e = 0.00001;double y1c = y1;do{y1 = y1c;y1c = y + 0.5 * h * (f(x, y) + f(x1, y1));}while (Math.Abs(y1c - y1) > e);return y1c;
}static void printFinalValues(double x, double xn,double y, double h)
{while (x < xn) {double x1 = x + h;double y1p = predict(x, y, h);double y1c = correct(x, y, x1, y1p, h);x = x1;y = y1c;}Console.WriteLine("The final value of y at x = "+x + " is : " + Math.Round(y, 5));
}static void Main()
{double x = 0, y = 0.5;double xn = 1;double h = 0.2;printFinalValues(x, xn, y, h);
}
}

Java实现

import java.text.*;class GFG
{static double f(double x, double y)
{double v = y - 2 * x * x + 1;return v;
}static double predict(double x, double y, double h)
{double y1p = y + h * f(x, y);return y1p;
}static double correct(double x, double y,double x1, double y1,double h)
{double e = 0.00001;double y1c = y1;do{y1 = y1c;y1c = y + 0.5 * h * (f(x, y) + f(x1, y1));}while (Math.abs(y1c - y1) > e);return y1c;
}static void printFinalValues(double x, double xn,double y, double h)
{while (x < xn) {double x1 = x + h;double y1p = predict(x, y, h);double y1c = correct(x, y, x1, y1p, h);x = x1;y = y1c;}DecimalFormat df = new DecimalFormat("#.#####");System.out.println("The final value of y at x = "+x + " is : "+df.format(y));
}public static void main (String[] args) 
{double x = 0, y = 0.5;double xn = 1;double h = 0.2;printFinalValues(x, xn, y, h);
}
}

JavaScript实现

<script>function f(x , y) {var v = y - 2 * x * x + 1;return v;}function predict(x , y , h) {var y1p = y + h * f(x, y);return y1p;}function correct(x , y , x1 , y1 , h) {var e = 0.00001;var y1c = y1;do {y1 = y1c;y1c = y + 0.5 * h * (f(x, y) + f(x1, y1));} while (Math.abs(y1c - y1) > e);return y1c;}function printFinalValues(x , xn , y , h) {while (x < xn) {var x1 = x + h;var y1p = predict(x, y, h);var y1c = correct(x, y, x1, y1p, h);x = x1;y = y1c;}document.write("The final value of y at x = " + x + " is : " + y.toFixed(5));}var x = 0, y = 0.5;var xn = 1;var h = 0.2;printFinalValues(x, xn, y, h);
</script>

👉参阅:计算思维 | 亚图跨际

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

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

相关文章

C# VTK 移动旋转

对vtk 场景中一个或多个选中物体进行移动旋转。 交互移动旋转坐标系 首先我们创建旋转的交互坐标系&#xff0c;三个移动Actor&#xff0c;三个旋转Actor&#xff0c;还需要4个定位坐标的小球Actor。 public class CoordinateActor 中添加Actor// 当前选中的Actorpublic vtkAc…

C语言---数据结构(1)--时间复杂和空间复杂度计算

1.什么是时间复杂度和空间复杂度 1.1算法效率 算法效率分为时间效率和空间效率 时间效率被称为时间复杂度&#xff0c;而空间效率被称作空间复杂度。 时间复杂度主要衡量的是一个算法的运行速度&#xff0c;而空间复杂度主要衡量一个算法所需要的额外空间&#xff0c;在计算…

机器人阻抗控制相关文献学习(阻抗实现)

机器人阻抗是一个描述机器人与环境交互时动态特性的概念。 定义&#xff1a; 阻抗在机器人领域中&#xff0c;通常用来描述机器人与其环境之间的相互作用。当机器人与环境接触时&#xff0c;环境对机器人施加一个作用力&#xff0c;而机器人也会对环境施加一个反作用力。这个反…

PMP与软考的区别? 我该学习哪个?

PMP&#xff08;项目管理专业人士&#xff09;和软考&#xff08;软件工程师考试&#xff09;是两种不同领域的认证考试&#xff0c;分别专注于项目管理和软件工程师领域。下面将对它们做详细介绍。 一、PMP PMP作为项目管理领域的国际认证考试&#xff0c;由美国项目管理协会…

WordPress CDN是什么?CDN有什么作用?

您想让您的网站加载速度更快吗&#xff1f; 网站所有者希望网站加载速度快&#xff0c;内容丰富&#xff0c;功能强大&#xff0c;吸引用户。然而&#xff0c;添加这些功能可能会降低网站速度&#xff0c;难以快速向全球用户提供内容。 这就是为什么许多WordPress网站使用 CDN…

小型数据中心是什么?如何建设?

在数字化时代&#xff0c;小型数据中心正成为许多企业和组织加强数据管理和服务扩展的理想选择。与传统大型数据中心相比&#xff0c;小型数据中心以其灵活性、高效性和相对较低的运营成本吸引着越来越多的关注。然而&#xff0c;要成功建设一个小型数据中心&#xff0c;并确保…

Web网页端IM产品RainbowChat-Web的v7.0版已发布

一、关于RainbowChat-Web RainbowChat-Web是一套Web网页端IM系统&#xff0c;是RainbowChat的姊妹系统&#xff08;RainbowChat是一套基于开源IM聊天框架 MobileIMSDK (Github地址) 的产品级移动端IM系统&#xff09;。 ► 详细介绍&#xff1a;http://www.52im.net/thread-2…

特氟龙FEP离心管50ml30ml圆底赛默飞耐酸碱Thermo3114-0050离心管

FEP离心管&#xff1a;又叫聚全氟乙丙烯离心管&#xff0c;特氟龙离心管&#xff0c;F46离心管等。 其主要特性有&#xff1a; 1、可耐高温205℃、耐腐蚀性、不吸附性、透明可见、方便实验操作&#xff1b; 2、可适配于国内外各厂家离心机使用。 3、内壁光滑&#xff0c;不…

解决安全规模问题:MinIO 企业对象存储密钥管理服务器

在强大可靠的存储解决方案领域&#xff0c;MinIO 作为持久层脱颖而出&#xff0c;为组织提供安全、持久和可扩展的存储选项。MinIO 通常负责处理关键任务数据&#xff0c;在确保高可用性方面发挥着至关重要的作用&#xff0c;有时甚至在全球范围内。存储数据的性质&#xff0c;…

电路学习——经典运放电路(2024.06.21)

参考链接1: 11个经典运放电路 在此感谢各位前辈大佬的总结&#xff0c;写这个只是为了记录学习大佬资料的过程&#xff0c;内容基本都是搬运的大佬博客&#xff0c;觉着有用自己搞过来自己记一下&#xff0c;如果有大佬觉着我搬过来不好&#xff0c;联系我删。 电路学习——经典…

振弦式渗压计:土壤力学与地下水流动研究的关键工具

当谈论到地下水流动和土壤力学时&#xff0c;振弦式渗压计是一种至关重要的工具。这篇文章将探讨振弦式渗压计的原理、工作方式以及其在土壤力学和地下水流动研究中的重要性。 振弦式渗压计的原理 振弦式渗压计利用了振动传感器和压力传感器的组合来测量土壤中的水压力。其基本…

车联网全方位安全适配与领先架构

设想一下如下场景&#xff1a; 您钟爱的座驾&#xff0c;在毫无外力破坏迹象的情况下&#xff0c;突然被侵入&#xff0c;远程启动&#xff0c;然后绝尘而去… 别以为这只是大银幕上的虚构桥段&#xff0c;事实上&#xff0c;这一幕在现实中已经上演。 某款备受欢迎的车型&a…

职场新宠:ONLYOFFICE——办公协作的得力助手

&#x1f3a0;前言 在快节奏的职场环境中&#xff0c;高效、便捷的办公软件成为每一位职场人士不可或缺的工作伙伴。当我们谈论职场办公软件时&#xff0c;许多人首先会想到Microsoft Office、wps等老牌软件。 然而&#xff0c;有一款宝藏的办公软件ONLYOFFICE&#xff0c;凭…

ESP32 esp-idf esp-adf环境安装及.a库创建与编译

简介 ESP32 功能丰富的 Wi-Fi & 蓝牙 MCU, 适用于多样的物联网应用。使用freertos操作系统。 ESP-IDF 官方物联网开发框架。 ESP-ADF 官方音频开发框架。 文档参照 https://espressif-docs.readthedocs-hosted.com/projects/esp-adf/zh-cn/latest/get-started/index.…

Postgres 多实例实例部署方式(Windows)

复制之前数据库中的data文件 1、进入"服务"&#xff0c;停止服务 2、直接复制data整个文件夹到另一个路径&#xff0c;打开"postgresql.conf"文件夹&#xff0c;修改port为其他端口 启动新的服务实例 1、cmd输入命名启动服务 pg_ctl -D "D:\PG\N…

前后端分离项目面试总结

一&#xff1a;是否登录状态 服务端登录的时候&#xff0c;给分配一个session用于存储数据&#xff0c;同时将sessionID返回给浏览器&#xff0c;浏览器通过cookie把sessionID存储起来&#xff0c;下次访问时携带上&#xff0c;服务端就可以通过sessionID来确定用户是否登录。 …

GD32 串口接受异常的几个原因

前面我们介绍过GD32 485发送时出现异常的最常见原因&#xff0c;有小伙伴反馈想要知道GD32 串口接受异常的可能原因&#xff0c;今天我们就来安排。 一、波特率异常导致收发出错 我们知道&#xff0c;串口是异步通讯接口&#xff0c;通讯双方或者多方都需要工作在相同波特率下…

【JS逆向百例】某点数据逆向分析,多方法详解

前言 最近收到粉丝的私信&#xff0c;其在逆向某个站点时遇到了些问题&#xff0c;在查阅资料未果后&#xff0c;来询问K哥&#xff0c;K哥一向会尽力满足粉丝的需求。网上大多数分析该站点的教程已经不再适用&#xff0c;本文K哥将提供 3 种解决方案&#xff0c;对于 webpack…

【unity小技巧】unity事件系统创建通用的对象交互的功能

文章目录 前言实现1. **InteractEvent 类**&#xff1a;2. **Interact 类**&#xff1a;3. **Player 类**&#xff1a;4. **Chest 类**&#xff1a; 工作流程说明&#xff1a;开单个箱子按钮触发打开很多箱子拾取物品&#xff08;传参&#xff09;参考完结 前言 游戏开发过程中…