python 正弦和余弦精度

2024-05-09

如何提高Python正弦和余弦精度?例如,我想使用以下代码(只需计算随机复向量 x 的 y = cos(acos(x)) ):

import numpy as np
N = 100000
x = np.zeros(N)+1j*np.zeros(N)
for k in range(0,N):
    x[k] = np.random.normal(0,500)+1j*np.random.normal(0,500)    
y = np.cos(np.arccos(x))

m= np.max(np.abs(x))

print np.max(np.abs(x-y)/m)

y必须相等x。但我的差异大约是1E-9。我觉得太大了。例如matlab返回小于1E-15对于相同的测试。有什么方法可以提高python的精度吗?谢谢!


在阅读本文之前:这可能不是正确的答案,因为它效率极低,但如果您需要额外的精度,这可能是最好的解决方案。

您可以使用Decimal类,您可以在其中使用所需的任何精度进行计算(它使用字符串对象而不是整数进行计算)。

>>> from decimal import *
>>> getcontext().prec = 30
>>> Decimal(1) / Decimal(7)
Decimal('0.142857142857142857142857142857')

但问题是您必须实现自己的三角函数。幸运的是 python 网站提供了示例:

https://docs.python.org/3/library/decimal.html#recipes https://docs.python.org/3/library/decimal.html#recipes

def cos(x):
    """Return the cosine of x as measured in radians.

    The Taylor series approximation works best for a small value of x.
    For larger values, first compute x = x % (2 * pi).

    >>> print(cos(Decimal('0.5')))
    0.8775825618903727161162815826
    >>> print(cos(0.5))
    0.87758256189
    >>> print(cos(0.5+0j))
    (0.87758256189+0j)

    """
    getcontext().prec += 2
    i, lasts, s, fact, num, sign = 0, 0, 1, 1, 1, 1
    while s != lasts:
        lasts = s
        i += 2
        fact *= i * (i-1)
        num *= x * x
        sign *= -1
        s += num / fact * sign
    getcontext().prec -= 2
    return +s

请注意,这会影响程序的执行时间,因为使用字符串计算显然比使用浮点数慢得多。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python 正弦和余弦精度 的相关文章

  • 从 asyncio 子进程获取实时输出

    我正在尝试使用 Python asyncio 子进程来启动交互式 SSH 会话并自动输入密码 实际用例并不重要 但它有助于说明我的问题 这是我的代码 proc await asyncio create subprocess exec ssh
  • Pandas ParserError:标记数据时出错。 C 错误:字符串内有 EOF

    我的数据超过 400 000 行 运行此代码时 f pd read csv filename error bad lines False 我收到以下错误 pandas errors ParserError Error tokenizing
  • 使用 pyppeteer 与 asyncio 关联来抓取内容

    我用 python 结合编写了一个脚本pyppeteer随着asyncio从其登陆页面抓取不同帖子的链接 并最终通过跟踪通向其内页的 url 来获取每个帖子的标题 我这里解析的内容不是动态的 但是 我利用了pyppeteer and asy
  • 使用python编辑html,但是lxml将漂亮的html实体转换为奇怪的编码

    我正在尝试使用 python 带有 pyquery 和 lxml 来更改和清理一些 html Eg html div p It 146 s a spicy meatball p div lxml html clean 函数 clean ht
  • 将 numpy 数组及其大小写入二进制文件

    我需要将 2D numpy 数组写入文件 包括其尺寸 以便我可以从 C 程序中读取它并创建相应的数组 我编写了一些简单的代码来保存数组 并且可以从 C 读取它 但是如果我尝试先写入数组的大小 它总是会给我一个错误 这是我的简单 python
  • FastAPI UploadFile 与 Flask 相比慢

    我创建了一个端点 如下所示 app post report upload def create upload files files UploadFile File try with open files filename wb as wf
  • matlab 中的 for 或 while 循环

    我刚刚开始在编程课的 matlab 中使用 for 循环 基本的东西对我来说很好 但是我被要求 使用循环创建一个 3 x 5 矩阵 其中每个元素的值是其行号其列号除以行号和列号之和的幂 例如元素 2 3 的值为 2 3 2 3 1 6 那么
  • 关于具有自定义损失的 3 输出 ANN 的加权

    我正在尝试定义一个自定义损失函数 它在回归模型中接收 3 个输出变量 def custom loss y true y pred y true c K cast y true float32 Shape batch size 3 y pre
  • Python 模块 BeautifulSoup 提取锚点 href

    我正在使用 BeautifulSoup 模块通过以下方式从 html 选择所有 href def extract links html soup BeautifulSoup html anchors soup findAll a print
  • python os.fork 使用相同的 python 解释器吗?

    据我所知 Python 中的线程使用相同的 Python 解释器实例 我的问题是与创建的流程相同os fork 或者每个进程创建的os fork有自己的翻译吗 每当你 fork 时 整个 Python 进程都会在内存中复制 包括Python
  • 使用 Popen 打开进程并获取 PID

    我正在开发一个漂亮的小功能 def startProcess name path Starts a process in the background and writes a PID file returns integer pid Ch
  • 在添加数据之前使用 Python gdata 清除工作表中的行

    我有一个 Google 电子表格 我使用 python 脚本和 gdata 库填充值 如果我多次运行脚本 它会将新行附加到工作表中 我希望脚本在填充之前首先清除行中的所有数据 这样每次运行时我都会有一组新的数据脚本 我尝试过使用 Updat
  • 类型错误:无法连接“str”和“int”对象有人可以帮助新手使用他们的代码吗?

    感谢任何帮助 还有任何重大缺陷或您在格式或基本方面看到的任何重大缺陷 请指出 谢谢 day raw input How many days locations raw input Where to days str day location
  • numpy 向量化而不是 for 循环

    我用 Python 写了一些代码 运行良好 但速度很慢 我认为是由于 for 循环 我希望可以使用 numpy 命令加速以下操作 让我定义目标 假设我有一个 2D numpy 数组all CMs尺寸row x col 例如考虑一个6x11数
  • 哈希 freezeset 与排序元组

    在 Python 中 给定一组可比较的 可散列的元素s 散列是否更好frozenset s or tuple sorted s 这取决于你在做什么 创建一个更快frozenset 比排序tuple but frozenset占用的内存比tu
  • Python:如何“杀死”类实例/对象?

    我希望 Roach 类在达到一定量的 饥饿 时 死亡 但我不知道如何删除该实例 我的术语可能有误 但我的意思是 窗户上有大量 蟑螂 我希望特定的蟑螂完全消失 我会向您展示代码 但它很长 我将蟑螂类添加到策划者类蟑螂种群列表中 一般来说 每个
  • 从函数在 python 3 中创建全局变量

    我想知道为什么在函数结束后我无法访问变量 variable for raw data 代码是这样的 def htmlfrom Website URL import urllib request response urllib request
  • Docker Python 脚本找不到文件

    我已经成功构建了一个 Docker 容器 并将应用程序的文件复制到 Dockerfile 中的容器中 但是 我正在尝试执行引用输入文件 在 Docker 构建期间复制到容器中 的 Python 脚本 我似乎无法弄清楚为什么我的脚本告诉我它无
  • 基于 Web 请求在 Airflow 上运行作业

    我想知道是否可以在通过 HTTP 收到请求时执行气流任务 我对 Airflow 的调度部分不感兴趣 我只是想用它来代替芹菜 因此 示例操作如下所示 用户提交一份表格 请求某些报告 后端接收请求并向用户发送请求已收到的通知 然后后端使用 Ai
  • 如何在 MATLAB 中为 4 个子图创建一个通用图例?

    如何在 MATLAB 中为 4 个子图创建一个通用图例 如下所示 又快又脏 hSub subplot 3 1 1 plot 1 1 1 1 1 1 1 1 hLegend legend hello i am legend subplot 3

随机推荐

  • 如何从 C 函数创建 shell 命令

    想知道如何获取一组 C 函数并将它们转换为 shell bash 命令 假设我有一组简单的 C 函数 int fn1 some C code for function 1 int fn2 some C code for function 2
  • Gson.toString() 给出错误“IllegalArgumentException:多个名为 mPaint 的 JSON 字段”

    我想将自定义对象转换为字符串并保存在 SharedPreferences 中 这是我的最终目标 我尝试了下面的行但失败了 String matchString gson toJson userMatches Logcat 10 11 15
  • SQL选择符号||是什么意思意思是?

    什么是 在 SQL 中做什么 SELECT a b AS letter 表示字符串连接 不幸的是 字符串连接不能在所有 sql 方言之间完全移植 ANSI SQL 中缀运算符 mysql concat 可变参数函数 caution 表示 逻
  • 转换索引“排名”中的点列表

    假设我有一份锦标赛的积分列表 points 0 12 9 我想要对玩家进行排名 所以预期的输出是 1 2 0 因为索引 1 排名第一 其次是索引 2 最后是索引 0 我的想法是用一个for来遍历所有的数字 得到最大的值 找到最大值的索引 然
  • GitHub Actions:如何缓存测试容器的 Docker 映像?

    我使用 Testcontainers 在 GitHub Actions 中执行一些测试 Testcontainers 提取我的测试中使用的图像 不幸的是 每次构建时都会再次提取图像 如何在 GitHub Actions 中缓存图像 GitH
  • iOS UITableViewCellAccessoryCheckmark 在每次滚动时可见

    我有一个列表 我将其用作复选框 我已启用或禁用选择行上的复选标记 但是当我滚动列表时 它会在每 10 行之后标记行 void tableView UITableView tableView didSelectRowAtIndexPath N
  • 使用 get/post 的免费云数据存储? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我知道还有其他类似的键 值存储http openkeyval org http openkeyval o
  • MySQL 和 PHP:多关键字搜索

    我有一个包含逗号分隔关键字的字符串 例如 keywords keyword1 keyword2 keyword3 我的表架构 名为tbl address是这样的 简化的 id INT 11 PRIMARY KEY AUTO INCREMEN
  • 你能克隆一个闭包吗?

    A FnMut由于显而易见的原因 闭包无法被克隆 但是Fn闭包具有不可变的范围 有没有办法创建一个 重复 Fn关闭 尝试克隆它会导致 error E0599 no method named clone found for type std
  • 在 django 中创建“历史”类型模型的最佳方法是什么?

    我想为我的 Django 应用程序创建一个类似于 Django 管理员的 最近操作 的功能 以便存储其他模型的历史信息 例如 假设我有两个模型 分别称为 Book 和 Author 我想要第三个模型来存储信息 例如由谁以及何时对模型中的给定
  • 找不到 RecyclerView 类 android.support.v7.recyclerview.R$styleable

    我在我的应用程序上使用 RecyclerView 但在运行时应用程序崩溃并且我的 logcat 读取 java lang RuntimeException Unable to start activity ComponentInfo com
  • 使用 Javascript 获取 Mobile Safari 中选定的文本

    因此 我正在开发一个小书签 对于我来说 使用 循环 获取用户选择的内容是理想的选择 window getSelection 和 document getSelection 都是我可以调用的函数 但是它们始终返回空字符串 我相信问题在于 当您
  • 为什么C++标准库中没有线程池? [复制]

    这个问题在这里已经有答案了 自 C 11 以来 C 中并行 并发编程工具的数量激增 线程 异步函数 并行算法 协程 但是流行的并行编程模式又如何呢 线程池 https en wikipedia org wiki Thread pool 据我
  • PHP:__toString() 和 json_encode() 不能很好地协同工作

    我遇到了一个奇怪的问题 我不知道如何解决它 我有几个类 它们都是 JSON 对象的 PHP 实现 这是问题的说明 class A protected a public function construct this gt a array n
  • 以编程方式启用/禁用广播接收器

    我们有一个可以扫描蓝牙设备的应用程序 负责扫描的代码应仅在启用蓝牙时运行 此外 我们希望随时禁用 启用此功能 我们选择实现一个注册BluetoothAdapter ACTION STATE CHANGED广播的BroadcastReceiv
  • 将 CSV 文件读入 Java 作为数据库表

    我发现了很多关于使用 Java 读取 CSV 的帖子 并且他们所指向的 API 在读取 CSV 文件时都采用了面向行的方法 就像 当你得到一行时 获取每一列的值 我希望有一个更高级别的 API 比如在 Perl 中 DBI 允许您在 CSV
  • socket.io 服务器的 Node.js 客户端

    我有一个正在运行的 socket io 服务器和一个带有 socket io js 客户端的匹配网页 一切正常 但是 我想知道是否可以在另一台机器上运行一个单独的 node js 应用程序 该应用程序将充当客户端并连接到提到的 socket
  • Python Tornado 中的异常处理

    我正在尝试处理发生的异常AsyncClient fetch这样 from tornado httpclient import AsyncHTTPClient from tornado httpclient import HTTPReques
  • 如何将 Angular 材质拖放与虚拟滚动集成?

    我正在尝试将 Angular 材质的虚拟滚动与拖放集成在一起 但由于某种原因 当我尝试实现此功能时 它会恢复项目 而当我尝试拖放元素时 它不起作用 这是代码摘要
  • python 正弦和余弦精度

    如何提高Python正弦和余弦精度 例如 我想使用以下代码 只需计算随机复向量 x 的 y cos acos x import numpy as np N 100000 x np zeros N 1j np zeros N for k in