Julia和Python线性矩阵机器学习和动态模型代码计算

🎯要点

  1. Julia和Python线性矩阵数学​方程​及代码​​:🎯矢量计算:🖊矢量:加法、标量向量乘法、内积 | 🖊线性:方程、泰勒近似、回归模型 | 🖊范数和距离:范数、距离、标准差、矢量角度 | 🖊聚类:K均值算法 | 🖊线性独立性:偏差、正交向量、格拉姆-施密特算法。🎯矩阵计算:🖊矩阵:从实体创建矩阵、零矩阵和单位矩阵、转置、加法和范数、矩阵向量乘法 | 🖊示例:几何变换、图的关联矩阵、卷积 | 🖊线性方程:线性和仿射函数、示例:弹性需求价格、平衡化学反应 | 🖊动态系统:示例:人口动态矩阵、疫情动态、截面中质量运动的离散模型 | 🖊矩阵乘法:矩阵-矩阵乘法、线性函数的复合、矩阵幂 | 🖊矩阵逆。🎯最小二乘法:🖊数据拟合、示例:房价回归模型、每小时臭氧水平、广告预算、最小物理作用力序列、复合投资组合价值、线性二次状态估计、算法实现:高斯-牛顿、莱文伯格-马夸特、惩罚算法、增强拉格朗日算法。
  2. 静态数据机器学习:🎯Julia神经网络实现:🖊数字分类识别,🖊自适应矩估计算法、🖊随机梯度下降、🖊线性最小二乘法分类器、🖊逻辑回归分类器、🖊支持向量机、🖊随机森林、🖊密集神经网络和卷积神经网络、🖊交叉验证的岭回归、🖊深度学习dropout概率、🖊K均值聚类及层次聚类、🖊主成分分析及示例、🖊马尔可夫决策过程、🖊Q学习、🖊生成对抗网络。🎯Python神经网络实现:🖊贝叶斯线性回归、🖊分类决策树、🖊回归决策树、🖊K-最近邻、🖊K-均值聚类、🖊线性回归、🖊逻辑回归和多项式逻辑回归、🖊感知器、🖊主成分分析、🖊具有一个隐藏层的简单神经网络、🖊Softmax 回归、🖊支持向量机。
  3. 动态模型:🎯Julia 时间分量 / 因随机变量:🖊追捕模型轨迹、🖊弹簧和质量动态平衡微分方程、🖊确定性动态系统传染病轨迹、🖊随机分量马尔可夫链、🖊马尔科夫链计算猫和老鼠生存机率、🖊马尔科夫链模拟随机性传染病、🖊先到先得离散队列事件模拟、🖊干扰因素下追捕模型轨迹、🖊卡尔曼滤波、🖊杜布-吉莱斯皮算法评估动态网络稳定性。

🍇Python对比Julia模拟性能

大型仿真系统不应该是一个所有事情都在一个地方完成的整体程序。将核心模拟与可视化或数据分析分开是有意义的。显然,模拟系统需要与可视化进行通信,例如使用输出数据文件离线或使用网络流在线。

该模拟是一个简单的空间捕食者-猎物关系模拟。 所有动物,无论是捕食者还是猎物,都被建模为代理。 面向对象编程非常适合这个小例子。 每个代理都是一个对象,我们有不同类型的代理。

Python模拟

我们在 Agent() 类中定义代理的通用行为。 update() 方法负责计算代理的新位置。整个模拟非常简单,但表现出相当复杂的行为。

class Agent():def __init__(self, x=None, y=None, world_width=0, world_height=0):super().__init__()self.vmax = 2.0self.world_width = world_widthself.world_height = world_heightself.x = x if x else random.randint(0, self.world_width)self.y = y if y else random.randint(0, self.world_height)self.dx = 0self.dy = 0self.is_alive = Trueself.target = Noneself.age = 0self.energy = 0def update(self, food=()):self.age = self.age + 1if self.vmax == 0:returnif self.target and not self.target.is_alive:self.target = Noneif self.target:squared_dist = (self.x - self.target.x) ** 2 + (self.y - self.target.y) ** 2if squared_dist < 400:self.target.is_alive = Falseself.energy = self.energy + 1if self.target:fx += 0.1*(self.target.x - self.x)fy += 0.1*(self.target.y - self.y)self.dx = self.dx + 0.05 * fxself.dy = self.dy + 0.05 * fyvelocity = math.sqrt(self.dx ** 2 + self.dy ** 2)if velocity > self.vmax:self.dx = (self.dx / velocity) * (self.vmax)self.dy = (self.dy / velocity) * (self.vmax)self.x = self.x + self.dxself.y = self.y + self.dyself.x = max(self.x, 0)self.x = min(self.x, self.world_width)self.y = max(self.y, 0)self.y = min(self.y, self.world_height)

一旦我们决定测量程序的速度,我们就必须定义将如何准确地做到这一点。乍一看,这似乎是一项微不足道的任务。只需运行该程序并测量需要多长时间。我们的模拟最初由捕食者、猎物和植物组成。 他们每个人都有一个随机位置。 使用固定值来为随机数生成器提供种子是已知的技术。 这保证了如果您运行同一个程序两次,结果将是相同的。

如果您用两种不同的语言编写程序,可能会存在细微的差异。 例如,在像我们这里使用的模拟这样的情况下,舍入误差可能会产生影响。 一种语言可能使用不同的方法进行算术或使用不同的内部符号和浮点数精度。

即使起点完全相同,结果也可能完全不同,因此运行时间也可能完全不同。一种可能的方法是使用随机值(例如当前时间)为随机数生成器提供种子。然后运行实验几次并使用平均运行时间。

Julia模拟

%%julia
Base.@kwdef mutable struct Agentvmax::Float64 = 2.5world_width::Int = 10world_height::Int = 10x::Int = rand(0:world_width)y::Int = rand(0:world_height)dx::Float64 = 0.0dy::Float64 = 0.0is_alive::Bool = truetarget::Union{Nothing, Agent} = nothingage::Int = 0energy::Int = 0
endPredator(; kwargs...) = Agent(; vmax = 2.5, kwargs...)
Prey(; kwargs...) = Agent(; vmax = 2.0, kwargs...)
Plant(; kwargs...) = Agent(; vmax = 0.0, kwargs...)
%%julia
function update!(self, food)self.age = self.age + 1if self.vmax == 0.0returnendif self.target !== nothing && !self.target.is_aliveself.target = nothingendif self.target !== nothingsquared_dist = (self.x - self.target.x) ^ 2 + (self.y - self.target.y) ^ 2if squared_dist < 400self.target.is_alive = falseself.energy = self.energy + 1endelsemin_dist = 9999999min_agent = nothingfor a in foodif a !== self && a.is_alivesq_dist = (self.x - a.x) ^ 2 + (self.y - a.y) ^ 2if sq_dist < min_distmin_dist = sq_distmin_agent = aendendendif min_dist < 100000self.target = min_agentendendfx = 0.0fy = 0.0if self.target !== nothingfx += 0.1 * (self.target.x - self.x)fy += 0.1 * (self.target.y - self.y)endself.dx = self.dx + 0.05 * fxself.dy = self.dy + 0.05 * fyvelocity = sqrt(self.dx ^ 2 + self.dy ^ 2)if velocity > self.vmaxself.dx = (self.dx / velocity) * (self.vmax)self.dy = (self.dy / velocity) * (self.vmax)endself.x = self.x + Int(round(self.dx))self.y = self.y + Int(round(self.dy))self.x = max(self.x, 0)self.x = min(self.x, self.world_width)self.y = max(self.y, 0)self.y = min(self.y, self.world_height)
end

参阅:亚图跨际

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

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

相关文章

从零实现一个扫雷游戏

今天来简单的实现一下一个扫雷游戏。 这里就需要大家有基础的c语言知识了。 头文件&#xff1a; #pragma once #include <stdio.h>#include <stdlib.h>#include <time.h>#define ROW 9#define COL 9#define ROWS ROW2#define COLS COL2#define EASY_COUNT…

Linux基本指令(1)

目录 ls指令&#xff1a; pwd命令&#xff1a; cd指令&#xff1a; touch指令&#xff1a; mkdir指令&#xff1a; rmdir指令&&rm指令&#xff1a; man指令&#xff1a; cp指令&#xff1a; ls指令&#xff1a; 语法&#xff1a;ls [选项][目录或者文件] 作用…

突破传统WAF的瓶颈·WAAP平台将是未来发展的必然趋势

近年来&#xff0c;基础组件相继爆出严重的高危漏洞&#xff0c;层出不穷的“核弹级”0-day漏洞事件不断破圈&#xff0c;Web应用已成攻击者首要目标&#xff0c;让整个泛IT行业都难堪其扰&#xff0c;疲于应对。根据Gartner调查显示&#xff0c;信息安全攻击有75%都是发生在We…

如何在生产环境中部署您的Python项目:一步步指南

引言 简介&#xff1a;为什么要了解部署&#xff1f; 在软件开发的生命周期中&#xff0c;部署是一个至关重要的环节。它涉及将开发完成的应用程序从开发环境移植到生产环境&#xff0c;使其可以为用户提供服务。部署不仅是软件开发过程的延伸&#xff0c;更是确保应用程序高…

【C++庖丁解牛】C++11---统一的列表初始化 | auto | decltype | nullptr | STL中一些变化

&#x1f341;你好&#xff0c;我是 RO-BERRY &#x1f4d7; 致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 &#x1f384;感谢你的陪伴与支持 &#xff0c;故事既有了开头&#xff0c;就要画上一个完美的句号&#xff0c;让我们一起加油 目录 1. C11简介2. 统一的列表…

【Docker】Linux开放2735端口实现远程访问Docker

【Docker】Linux开放2735端口实现远程访问Docker 大家好 我是寸铁&#x1f44a; 总结了一篇【Docker】Linux开放2735端口实现远程访问Docker ✨ 喜欢的小伙伴可以点点关注 &#x1f49d; 前言 今天需要远程操作Linux服务器的docker&#xff0c;这时就需要开放出docker的端口给我…

建筑企业都在用的工程项目管理系统!企智汇工程项目管理系统

在当今竞争激烈的建筑市场中&#xff0c;工程项目管理的重要性不言而喻。为了提高工程项目质量、降低成本、加快进度&#xff0c;越来越多的建筑企业开始运用工程项目管理系统。建筑企业都在用的工程项目管理系统是企智汇工程项目管理系统。 企智汇工程项目管理系统具备全面的…

axios的封装理解和基本使用

axios的配置 ruoyi的前端对axios进行了封装&#xff0c;让我们发get请求或者是post请求更加方便了。 ruoyi对axios的封装在下面文件中&#xff1a;打开文件&#xff0c;可以看到它有三个显眼的方法&#xff0c;分别是request拦截器、response拦截器和通用下载方法。ruoYi接口地…

L2-2 病毒溯源 坑点

病毒容易发生变异。某种病毒可以通过突变产生若干变异的毒株&#xff0c;而这些变异的病毒又可能被诱发突变产生第二代变异&#xff0c;如此继续不断变化。 现给定一些病毒之间的变异关系&#xff0c;要求你找出其中最长的一条变异链。 在此假设给出的变异都是由突变引起的&a…

Linux_CentOS7/8系统 - 关闭图形界面新增用户机制手册

Linux_CentOS7/8系统 - 关闭图形界面新增用户机制手册 在系统完成图形界面安装后重新启动后第一次登入&#xff0c;在图形界面会有新增用户页面&#xff0c;那如果取消关闭可以按以下操作&#xff1a; CTRLALTF2 root账号登录 yum remove gnome-initial-setup -y init 3 init …

【优质书籍推荐】《Effective Java》是人工智能的基石

大家好&#xff0c;我是爱编程的喵喵。双985硕士毕业&#xff0c;现担任全栈工程师一职&#xff0c;热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。…

Mybatis-plus动态数据源

由于服务没有做微服务部署&#xff0c;需要在后台管理系统访问其他服务的库&#xff0c;所以需要用到动态数据源切换 引入依赖 mybatis-plus动态数据源依赖 <dependency><groupId>com.baomidou</groupId><artifactId>dynamic-datasource-spring-boot…

PLSQL的下载与安装

个人介绍 hello hello~ &#xff0c;这里是 code袁~&#x1f496;&#x1f496; &#xff0c;欢迎大家点赞&#x1f973;&#x1f973;关注&#x1f4a5;&#x1f4a5;收藏&#x1f339;&#x1f339;&#x1f339; &#x1f981;作者简介&#xff1a;一名喜欢分享和记录学习的…

Blender3.6下载地址

点击下载 Blender3.6下载地址 提取码 lywj

Java面试:MySQL面试题汇总

1.说一下 MySQL 执行一条查询语句的内部执行过程&#xff1f; 答&#xff1a;MySQL 执行一条查询的流程如下&#xff1a; 客户端先通过连接器连接到 MySQL 服务器&#xff1b;连接器权限验证通过之后&#xff0c;先查询是否有查询缓存&#xff0c;如果有缓存&#xff08;之前…

音频调试(2)

前言&#xff1a; 大家好&#xff0c;今天继续分享记录一下最近的音频调试心得&#xff01;同时这个过程中&#xff0c;也有朋友过来交流音频的问题&#xff0c;通过交流&#xff0c;也是学习到了新东西&#xff01; 视频和音频复合推流&#xff1a; 在上一篇文章里面有提到fdk…

1688商品评论接口技术全解析:掌握电商评论管理的关键,助力销量飙升!

1688商品评论接口技术解析 随着电商行业的飞速发展&#xff0c;商品评论成为了消费者购物决策的重要依据。作为商家&#xff0c;如何有效地获取、管理并展示商品评论&#xff0c;对于提升用户体验、增加销售至关重要。1688作为国内领先的B2B电商平台&#xff0c;其商品评论接口…

claude3国内注册

claude3国内注册 Claude 3 作为大型语言模型的强大之处在于其先进的算法设计和大规模训练数据的应用&#xff0c;能够执行复杂和多样化的任务。以下是 Claude 3 主要的强项&#xff1a; 接近人类的理解能力&#xff1a;Claude 3 能够更加深入地理解文本的含义&#xff0c;包括…

ubuntu安装轨迹精度评估工具evo

一、安装evo pip install evo --upgrade --no-binary evo --user 1.1 安装scipy时间超时 解决方法&#xff1a;pip 指定源 pip install scipy -i https://mirrors.aliyun.com/pypi/simple 2.2 matplotlib 版本冲突 seaborn 0.13.0 has requirement matplotlib!3.6.1,>3.3…

如何清除Magento Cache

本周有一个客户&#xff0c;购买Hostease的虚拟主机&#xff0c;询问我们的在线客服&#xff0c;如何清除Magento的Cache。我们为用户提供教程&#xff0c;用户很快完成了设置。在此&#xff0c;我们分享这个操作教程&#xff0c;希望可以对您有帮助。 缓存是存储以供以后使用的…