Simpy简介:python仿真模拟库-03/5

一、说明

        在过去的两篇文章中,我们了解了 simpy 的基础知识、声明变量和处理表达式。值得注意的例子包括评估导数和积分。现在,让我们继续使用函数。

二、SymPy — 函数类

        SymPy 包包含 sympy.core.function 模块中的 Function 类。该类作为各种数学函数的基础,也充当未定义函数类的构造函数。

以下类别的函数继承自 Function 类 -

  • 复数函数
  • 三角函数
  • 整数函数
  • 组合函数
  • 其他杂项功能

三、复数函数

        这组函数在sympy.functions.elementary.complexes模块中定义。

  • re -- 该函数返回表达式的实部  
from sympy import * 
re(5+3*I)
Output:
5
re(I)
Output:
0
  • Im  --表达式的虚部
im(5+3*I)
Output:
3
im(I)
Output:
1
  • sign --表达式的符号

        他的函数返回表达式的复数符号。

        对于真实的表达,符号将是 -

  • 1 如果表达式为正
  • 如果表达式等于 0,则为 0
  • 如果表达式为负数,则为 -1

        如果表达式是虚数,则返回的符号为 -

  • I 如果 im(表达式) 为正
  • -I 如果 im(表达式) 为负数
sign(1.55), sign(-1), sign(S.Zero)
Output:
(1, -1, 0)
sign (-3*I), sign(I*2)
Output:
(-I, I)
  • Abs

        该函数计算复数的大小,测量复平面上从原点 (0,0) 到点 (a, b) 的距离。它是 abs() 函数的扩展,允许符号输入。

Abs(2+3*I)
Output:
√13
  • conjugate --  共轭

        该函数返回复数的共轭。为了找到复共轭,我们改变虚部的符号。

conjugate(4+7*I)
Output:
4 - 7i

四、三角函数(Trigonometric functions

        SymPy 提供三角函数的定义,如正弦、余弦、正切及其反函数(asin、acos、atan),以计算以弧度表示的角度值。

sin(pi/2), cos(pi/4), tan(pi/6)
Output:
(1, sqrt(2)/2, sqrt(3)/3)
asin(1), acos(sqrt(2)/2), atan(sqrt(3)/3)
Output:
(pi/2, pi/4, pi/6)

五、整数函数

这是一组函数,旨在对整数执行各种操作。

  •         天花板Ceiling

        这是一个单变量函数,提供大于或等于其输入的最小整数值。处理复数时,向上运算分别应用于实部和虚部。

ceiling(pi), ceiling(Rational(20,3)), ceiling(2.6+3.3*I)
Output:
(4, 7, 3 + 4*I)

        地面floor

此函数提供小于或等于输入参数的最大整数的整数值。处理复数时,此函数独立确定实部和虚部的下限值。

floor(pi), floor(Rational(100,6)), floor(6.3-5.9*I)
Output:
(3, 16, 6 - 6*I)

        压裂frac

        该函数表示 x 的小数部分。

frac(3.99), frac(Rational(10,3)), frac(10)
Output:
(0.990000000000000, 1/3, 0)

六、组合函数

        组合学处理与有限或离散系统中的选择、排列和操作元素相关的数学问题。

        阶乘

        阶乘在组合数学中起着至关重要的作用,它决定了 n 个对象的排列。记为𝑥!并用作非负整数阶乘的实现。对于负整数,阶乘结果为复无穷大。

x=Symbol('x') 
factorial(x)
Output:
x!
factorial(5)
Output:
120
factorial(-1)
Output:
∞∽

七、二项式binomial

        该函数表示我们可以从 n 个元素的集合中选择 k 个元素的方式数。

x,y=symbols('x y') 
binomial(x,y)
Output:
(x/y)
binomial(4,2)
Output:
6
Rows of Pascal's triangle can be generated with the binomial function.
for i in range(5): print ([binomial(i,j) for j in range(i+1)])
Output:
[1]
[  1, 1  ] 
[1, 2, 1]
[1, 3, 3, 1]
[1, 4, 6, 4, 1]

斐波那契

        斐波那契数列以 F0=0 和 F1=1 开始,后续的每一项都通过添加前面的两项来确定 (Fn=Fn−1+Fn−2)。

[fibonacci(x) for x in range(10)]
Output:
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]

tribonacci
        Tribonacci 数形成一个整数序列,从 F0=0、F1=1、F2=1 开始,后续的每一项都是前面三项的和 (Fn=Fn-1+Fn-2+Fn-3) 。

tribonacci(5, Symbol('x'))
Output:
x^8+3x^5+3x^2
[tribonacci(x) for x in range(10)]
Output:
[0, 1, 1, 2, 4, 7, 13, 24, 44, 81]

八、杂项功能

        以下是一些常用功能的汇总:

  1. Min:此函数提供列表中的最小值。它被命名为“Min”是为了防止与内置函数“min”发生冲突。
  2. Max:当您需要列表中的最大值时,“Max”函数可以满足您的需求,旨在避免与内置“max”函数发生冲突。
  3. root:“root”函数用于获取给定数字 x 的 n 次方根。
  4. sqrt:如果您对数字的主平方根感兴趣,可以使用“sqrt”函数。
  5. cbrt:“cbrt”函数计算数字的主立方根,这是 x++Rational(1,3) 的便捷快捷方式。

        现在,让我们看一些示例,说明这些杂项函数的用法及其相应的结果。

Min(pi,E)
Output:
e
Max(5, Rational(11,2))
Output:
11/2
root(7,Rational(1,2))
Output:
49
sqrt(2)
Output:
√2
cbrt(1000)
Output:
10

九、SymPy — 四元数

        在数学领域,四元数系统是比复数更广泛的框架。在每个四元数实体中,存在四个标量变量,包含一个真实维度和三个虚构维度。

        四元数由以下表达式表示:

q = a + bi + cj + dk

        在此表达式中,“a”、“b”、“c”和“d”都是实数值,而“i”、“j”和“k”表示四元数单位。值得注意的是,这些单位满足以下关系:i² = j² = k² = ijk。

        四元数类可以在 sympy.algebras.quaternion 模块中找到。

from sympy.algebras.quaternion import Quaternion 
q=Quaternion(2,3,1,4) 
q
Output:
2+3i+1j+4k

        四元数用于纯数学,也用于应用数学、计算机图形学、计算机视觉等。

from sympy import * 
x=Symbol('x') 
q1=Quaternion(x**2, x**3, x)
q1
Output:
x^2+x^3i+xj+0k

        四元数对象也可以有虚数系数

q2=Quaternion(2,(3+2*I), x**2, 3.5*I) 
q2
Output:
2+(3+2i)i+x2j+3.5ik

十、添加 add()

        Quaternion 类中提供的此方法执行两个 Quaternion 对象的加法。

q1=Quaternion(1,2,3,4) 
q2=Quaternion(4,3,2,1) 
q1.add(q2)
Output:
5+5i+5j+5k

可以在四元数对象中添加数字或符号。

q1+2
Output:
3+2i+3j+4k
q1+x
Output:
(x+1)+2i+3j+4k

十一、乘法mul()

        此方法执行两个四元数对象的乘法。

q1=Quaternion(1,2,1,2) 
q2=Quaternion(2,4,3,1) 
q1.mul(q2)
Output:
(−11)+3i+11j+7k

十二、逆inverse()

        此方法返回四元数对象的逆。

q1.inverse()
Output:
1/10+(−1/5)i+(−1/10)j+(−1/5)k

十三、pow()

        此方法返回四元数对象的幂。

q1.pow(2)
Output:
(−8)+4i+2j+4k

十四、指数exp()

        此方法计算四元数对象的指数,即 eq

q=Quaternion(1,2,4,3) 
q.exp()

十五、SymPy — 求解器 Solvers

        由于Python的符号=和==作为赋值运算符和相等运算符具有特定含义,因此它们不适合表达符号方程。为了创建符号方程,SymPy 提供了 Eq() 函数作为专用工具。

from sympy import * 
x,y=symbols('x y') 
Eq(x,y)
Output:
x = y
Since x=y is possible if and only if x-y=0, above equation can be written as −
Eq(x-y,0)
Output:
x − y = 0

        SymPy 中的求解器模块提供了 soveset() 函数,其原型如下 -

solveset(equation, variable, domain)

        默认情况下,域为 S.Complexes。使用solvet()函数,我们可以求解代数方程如下 -

solveset(Eq(x**2-9,0), x)
Output:
{−3, 3}
solveset(Eq(x**2-3*x, -2),x)
Output:
{1,2}

        Solveset 的输出是解的有限集。如果没有解决方案,则返回 EmptySet

solveset(exp(x),x)
Output:
∅

十六、线性方程

        我们必须使用 linsolve() 函数来求解线性方程。

例如,方程如下 -

xy=4

x+y=1

from sympy import * 
x,y=symbols('x y') 
linsolve([Eq(x-y,4),Eq( x + y ,1) ], (x, y))
Output:
{(5/2,−3/2)}

        linsolve() 函数还可以求解以矩阵形式表示的线性方程。

a,b=symbols('a b') 
a=Matrix([[1,-1],[1,1]]) 
b=Matrix([4,1]) 
linsolve([a,b], (x,y))
Output:
{(5/2,−3/2)}

十六、非线性方程

        为此,我们使用 nonlinsolve() 函数。这个例子的方程 -

a2+a=0 ab=0

a,b=symbols('a b') 
nonlinsolve([a**2 + a, a - b], [a, b])
Output:
{(−1,−1),(0,0)}

十七、微分方程

        首先,通过将 cls=Function 传递给符号函数来创建一个未定义的函数。要求解微分方程,请使用 dsolve。

x=Symbol('x') 
f=symbols('f', cls=Function) 
f(x)
Output:
f(x)
Here f(x) is an unevaluated function. Its derivative is as follows −
f(x).diff(x)
Output:
d/dxf(x)
We first create Eq object corresponding to following differential equation
eqn=Eq(f(x).diff(x)-f(x), sin(x)) 
eqn
Output:
−f(x)+d/dxf(x)=sin(x)
dsolve(eqn, f(x))

        所以就是这样。这些函数是重要的构建块,构成模拟复杂数学情况的重要组成部分。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

腾讯云优惠券介绍、领取方法及使用教程

腾讯云作为国内领先的云服务提供商,为了吸引更多的用户使用其产品,经常会推出各种优惠券活动。本文将详细介绍腾讯云的优惠券、领取方法和使用教程。 一、腾讯云优惠券介绍 腾讯云优惠券是腾讯云为了吸引用户使用其产品而推出的促销活动。用户可以通过领…

软件测试工程师,从6K到25k的测试之路养成,一路狂飙...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 1、技术方向 就技…

静态网页设计——滑板官网(HTML+CSS+JavaScript)(dw、sublime Text、webstorm、HBuilder X)

前言 声明:该文章只是做技术分享,若侵权请联系我删除。!! 感谢大佬的视频:https://www.bilibili.com/video/BV1Cw411u7hj/?vd_source5f425e0074a7f92921f53ab87712357b 源码:https://space.bilibili.com…

基于传统机器学习的项目开发过程——@挑大梁

1 场景分析 1.1 项目背景 描述开发项目模型的一系列情境和因素,包括问题、需求、机会、市场环境、竞争情况等 1.2. 解决问题 传统机器学习在解决实际问题中主要分为两类: 有监督学习:已知输入、输出之间的关系而进行的学习,从而…

statsmodels.tsa 笔记 detrend(去趋势)

1 基本使用方法 statsmodels.tsa.tsatools.detrend(x, order1, axis0) 2 参数说明 x数据。如果是二维数组,那么每一行或每一列将独立地去除趋势,但趋势的阶数是一样的。order趋势的多项式阶数。0 表示常数趋势(即没有趋势)&…

炫技作品!极好!独家原创!一种新型改进的蜣螂优化算法(CCCDBO)

炫技作品!,独家原创! 蜣螂优化算法DBO的含金量不用我多介绍了吧,这是和麻雀优化算法SSA同一个课题组出的算法,业内公认的比较好的算法,这个算法认可度很高! 一种新型改进蜣螂优化算法&#xf…

无法访问Bing网站 - 解决方案

问题 Bing官方网址:https://www.bing.com/ 电脑无法访问Bing网站,但手机等移动设备可以访问Bing网站,此时可尝试以下方案。 以下方案适用于各种系统,如Win/Linux系统。 解决方案 方案1 修改Bing网址为:https://www4…

RocketMq直接上手(火箭班)

Apache RocketMQ官方文档:https://rocketmq.apache.org/zh/docs/bestPractice/06FAQ/,这里面涵盖了所有的基本知识、各种搭建环境、基础代码测试…还有各种问题总结,很值得自主学习。 1.配置依赖:pom.xml文件 可以只截取maven仓库…

跟随鼠标3D倾斜

创建一个vanilla-tilt.js文件将一下代码黏贴进去 export var VanillaTilt (function () {use strict;/*** Created by Sergiu Șandor (micku7zu) on 1/27/2017.* Original idea: https://github.com/gijsroge/tilt.js* MIT License.* Version 1.7.2*/class VanillaTilt {cons…

一道新能:周期底部,TOPCon“红利牛”IPO来了

2023年无疑是TOPCon技术路线正式登台的一年,而风口之下必有“黑马”的诞生,去年最后一个工作日递交招股书申请创业板上市的一道新能正是如此。 复盘发现,短短成立五年,一道新能在双碳红利期中,实现资产规模、营收规模…

OpenAI ChatGPT-4开发笔记2024-04:Chat之Tool之2:multiple functions

从程序员到ai Expert 1 定义参数和函数2 第一轮chatgpt3 第一轮结果和function定义全部加入prompt再喂给chatgpt4 大结局7 参考资料 上一篇解决了调用一个函数的问题。这一篇扩展为调用3个。n个自行脑补。 1 定义参数和函数 #1.设定目标 import json import openai#1.定义para…

CSS 弹幕按钮动画

<template><view class="content"><button class="btn-23"><text class="text">弹幕按钮</text><text class="marquee">弹幕按钮</text></button></view></template><…

IP地址定位技术筑牢网络安全防线

随着互联网技术的飞速发展&#xff0c;网络安全问题日益凸显&#xff0c;成为人们关注的焦点。如何有效防范和打击网络犯罪&#xff0c;维护国家安全和社会稳定&#xff0c;是摆在我们面前的一项紧迫任务。IP地址定位技术作为网络安全领域的一项重要技术&#xff0c;在防范和打…

阿里云 云数据库 Redis 版测评

1. 试用 地址&#xff1a;https://developer.aliyun.com/topic/freetier/database 点击试用 选择相应信息后点击立即试用&#xff0c;此处务必注意ECS和Redis需要在一个地域(可用区)&#xff0c;否则后续连接不方便。 2. 创建实例 购买后&#xff0c;进入控制台&#xff0c…

Pytorch从零开始实战16

Pytorch从零开始实战——ResNeXt-50算法的思考 本系列来源于365天深度学习训练营 原作者K同学 对于上次ResNeXt-50算法&#xff0c;我们同样有基于TensorFlow的实现。具体代码如下。 引入头文件 import numpy as np from tensorflow.keras.preprocessing.image import Ima…

字体图标操作步骤

网站 直接点击 进去后长这样&#xff0c;点免费的添加 保存下载 保存后解压 把fonts文件夹复制粘贴到我们自己项目 可以放在同images的路径下 引入 来源于 再style中粘贴 font-face {font-family: icomoon;src: url(fonts/icomoon.eot?jyg4cp);src: url(fonts/icomoo…

Java微服务系列之 ShardingSphere - ShardingSphere-JDBC

&#x1f339;作者主页&#xff1a;青花锁 &#x1f339;简介&#xff1a;Java领域优质创作者&#x1f3c6;、Java微服务架构公号作者&#x1f604; &#x1f339;简历模板、学习资料、面试题库、技术互助 &#x1f339;文末获取联系方式 &#x1f4dd; 系列专栏目录 [Java项…

使用Go语言通过API获取代理IP并使用获取到的代理IP

目录 前言 【步骤一&#xff1a;获取代理IP列表】 【步骤二&#xff1a;使用代理IP发送请求】 【完整代码】 【总结】 前言 在网络爬虫、数据抓取等场景中&#xff0c;经常需要使用代理IP来隐藏真实的IP地址&#xff0c;以及增加请求的稳定性和安全性。本文将介绍如何使用…

数据结构实验4:链表的基本操作

目录 一、实验目的 二、实验原理 1. 节点 2. 指针 3.链表的类型 3.1 单向链表 3.2 双向链表 3.3 单向循环链表 3.4 双向循环链表 4. 单链表的插入 4.1 头插法 4.2 尾插法 4.3 在指定位置插入元素 5. 单链表的删除 5.1 删除指定数值的节点 5.2 删除指定位置的节点 …

软件测试|Python Selenium 库安装使用指南

简介 Selenium 是一个用于自动化浏览器操作的强大工具&#xff0c;它可以模拟用户在浏览器中的行为&#xff0c;例如点击、填写表单、导航等。在本指南中&#xff0c;我们将详细介绍如何安装和使用 Python 的 Selenium 库。 安装 Selenium 库 使用以下命令可以通过 pip 安装…