简洁表达数学公式的语法建议

2024-02-23

我正在 C++ 中开发功能域特定的嵌入式语言,以尽可能简洁、准确地将公式转换为工作代码。

我在评论中发布了一个原型,大约有两百行长。

现在我的语言看起来像这样(嗯,实际上看起来像这样):

// implies two nested loops j=0:N, i=0,j
(range(i) < j < N)[T(i,j) = (T(i,j) - T(j,i))/e(i+j)];

// implies summation over above expression
sum(range(i) < j < N))[(T(i,j) - T(j,i))/e(i+j)];

我正在寻找可能的语法改进/扩展,或者只是尽可能清晰、精确地表达数学公式的不同想法(用任何语言,而不仅仅是 C++)。

您能否给我一些与我的问题相关的语法示例,这些示例可以用您选择的语言来完成,这些示例认为有用。特别是,如果您对如何翻译上述代码段有一些想法,我将很高兴听到它们。

谢谢。

只是为了澄清并给出一个实际的公式,我的短期目标是表达以下内容

简洁地表达其中的值<>已经计算为 4 维数组。


如果您要为从头开始的世界(我从您的 MP2 方程中猜测)编写此内容,您希望使其非常容易且清晰地表达尽可能接近数学定义的事物。

一方面,我不会有复杂的range功能。让它定义一个循环,但如果您想要嵌套循环,请同时指定它们:

所以而不是

(range(i) < j < N)[T(i,j) = (T(i,j) - T(j,i))/e(i+j)];

use

loop(j,0,N)[loop(i,0,j)[T(i,j) = (T(i,j) - T(j,i))/e(i+j)]]

对于像 sum 和 Product 这样的东西,让语法“继承”它是一个循环的事实。

所以而不是

sum(range(i) < j < N))[(T(i,j) - T(j,i))/e(i+j)];

use

sum(j,0,n)[loop(i,0,j)[(T(i,j) - T(j,i))/e(i+j)]]

或者如果您需要双倍金额

sum(j,0,n)[sum(i,0,j)[(T(i,j) - T(j,i))/e(i+j)]]

由于看起来您正在尝试表示量子力学运算符,因此请尝试使您的语言结构尽可能与运算符在 1-1 的基础上匹配。这样就很容易翻译(并且清楚正在翻译的内容)。

编辑添加

既然你正在研究量子化学,那么它就相当简单(至少就语法而言)。您定义的运算符始终处理其右侧的内容,然后您唯一需要的其他东西是括号来对运算符停止的位置进行分组。

爱因斯坦表示法很有趣,您无需指定索引或界限,并且由于约定而隐含它们,但这并不能形成清晰的代码,而且更难以思考。

对于总和,即使隐含了界限,它们也总是很容易根据上下文计算出来,因此您应该始终让人们指定它们。

总和(i,0,n)总和(j,0,i)总和(a,-j,j)总和(b,-i,i)......

由于每个运算符都向右工作,因此其变量是已知的,因此 j 可以知道 i,a 可以知道 i 和 j,b 可以知道 i、j 和 a。

根据我与量子化学家的经验(我也是其中之一!),他们不喜欢与他们编写的内容有很大差异的复杂语法。他们很乐意将双倍和三倍和以及积分分成单数集合,因为无论如何这些都只是简写。

对称性也不会那么难。它只是交换和加法或乘法的集合。我会做一些指定操作的操作,其中包含相同且可以交换的元素列表:

c2v(sigma_x,a,b)a+b

这说明在 c2v 操作下 a 和 b 可以被认为是相同的粒子。这意味着任何带有 a 和 b 的方程(例如后面的​​ a+b)都应该转换为 c2v 变换的线性组合。 sigma_x 是您想要应用于函数 (a+b) 的 c2v 中的运算。如果我没记错的话,那就是 1/sqrt(2)((a+b)+(b+a))。但我这里没有对称性书,所以这可能是错误的。

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

简洁表达数学公式的语法建议 的相关文章

  • 迭代变量并查找特定类型实例的技术

    我想迭代进程中内存中的变量 通过插件动态加载 并查找特定类型的实例 以前我可以找到特定类型 或内存中的所有类型 我可以创建类型的实例 我可以获取作为不同类型的字段包含的实例 但我无论如何都不知道只是 搜索 特定类型的实例 一种方法是使用 W
  • 我的线程图像生成应用程序如何将其数据传输到 GUI?

    Mandelbrot 生成器的缓慢多精度实现 线程化 使用 POSIX 线程 Gtk 图形用户界面 我有点失落了 这是我第一次尝试编写线程程序 我实际上并没有尝试转换它的单线程版本 只是尝试实现基本框架 到目前为止它是如何工作的简要描述 M
  • C#动态支持吗?

    看完之后这个帖子 https stackoverflow com questions 2674906 when should one use dynamic keyword in c sharp 4 0k和链接 我还有 2 个问题 问题 1
  • 向 ExpandoObject 添加方法时,“关键字 'this' 在静态属性、静态方法或静态字段初始值设定项中无效”

    我尝试向 ExpandoObject 添加一个动态方法 该方法将返回属性 动态添加 给它 但它总是给我错误 我在这里做错了什么吗 using System using System Collections Generic using Sys
  • 构造函数中显式关键字的使用

    我试图了解 C 中显式关键字的用法 并查看了这个问题C 中的explicit关键字是什么意思 https stackoverflow com questions 121162 但是 那里列出的示例 实际上是前两个答案 对于用法并不是很清楚
  • 访问者和模板化虚拟方法

    在一个典型的实现中Visitor模式 该类必须考虑基类的所有变体 后代 在许多情况下 访问者中的相同方法内容应用于不同的方法 在这种情况下 模板化的虚拟方法是理想的选择 但目前这是不允许的 那么 模板化方法可以用来解析父类的虚方法吗 鉴于
  • IronPython:没有名为 json 的模块

    我安装了 IronPython 我的 python 文件如下所示 import sys print sys version import json 运行它的代码 var p Python CreateEngine var scope p C
  • 如何识别 WPF 文本框中的 ValidationError 工具提示位置

    我添加了一个箭头来指示工具提示中的文本框 当文本框远离屏幕边缘时 这非常有效 但是当它靠近屏幕边缘时 工具提示位置发生变化 箭头显示在左侧 Here is the Image Correct as expected since TextBo
  • Qt 创建布局并动态添加小部件到布局

    我正在尝试在 MainWindow 类中动态创建布局 我有四个框架 它们是用网格布局对象放置的 每个框架都包含一个自定义的 ClockWidget 我希望 ClockWidget 对象在调整主窗口大小时相应地调整大小 因此我需要将它们添加到
  • 在非活动联合成员上使用“std::addressof”是否定义明确[重复]

    这个问题在这里已经有答案了 下面的代码是尝试实现constexpr的版本offsetof在 C 11 中 它可以在 gcc 7 2 0 和 clang 5 0 0 中编译 这取决于申请std addressof工会非活跃成员的成员 这是明确
  • 生产代码中的 LRU 实现

    我有一些 C 代码 需要使用 LRU 技术实现缓存替换 目前我知道两种实现LRU缓存替换的方法 每次访问缓存数据时使用时间戳 最后比较替换时的时间戳 使用缓存项的堆栈 如果最近访问过它们 则将它们移动到顶部 因此最后底部将包含 LRU 候选
  • 列出所有 k 元组,其条目总和为 n,忽略旋转

    有没有一种有效的算法来查找所有序列k总和为的非负整数n 同时避免旋转 如果可能的话 完全避免 顺序很重要 但对于我正在解决的问题来说 轮换是多余的 例如 与k 3 和n 3 我想要得到一个如下所示的列表 3 0 0 2 1 0 2 0 1
  • 将构建日期放入“关于”框中

    我有一个带有 关于 框的 C WinForms 应用程序 我使用以下方法将版本号放入 关于 框中 FileVersionInfo GetVersionInfo Assembly GetExecutingAssembly Location F
  • 将代码拆分为标头/源文件

    我从 Asio 的示例页面中获取了以下代码 class tcp connection public boost enable shared from this
  • 是否可以有一个 out ParameterExpression?

    我想定义一个 Lambda 表达式out范围 有可能做到吗 下面是我尝试过的 C Net 4 0 控制台应用程序的代码片段 正如您在 procedure25 中看到的 我可以使用 lambda 表达式来定义具有输出参数的委托 但是 当我想使
  • 当前的 x86 架构是否支持非临时加载(来自“正常”内存)?

    我知道有关此主题的多个问题 但是 我没有看到任何明确的答案或任何基准测量 因此 我创建了一个处理两个整数数组的简单程序 第一个数组a非常大 64 MB 第二个数组b很小 无法放入 L1 缓存 程序迭代a并将其元素添加到相应的元素中b在模块化
  • 结构体指针的动态数组

    我必须使用以下代码块来完成学校作业 严格不进行任何修改 typedef struct char firstName char lastName int id float mark pStudentRecord pStudentRecord
  • 什么是 __declspec 以及何时需要使用它?

    我见过这样的例子 declspec在我正在阅读的代码中 它是什么 我什么时候需要使用这个构造 这是 Microsoft 对 C 语言的特定扩展 它允许您使用存储类信息来赋予类型或函数属性 文档 declspec C https learn
  • 运算符“==”不能应用于“int”和“string”类型的操作数

    我正在编写一个程序 我想到了一个数字 然后计算机猜测了它 我一边尝试一边测试它 但我不断收到不应该出现的错误 错误是主题标题 我使用 Int Parse 来转换我的字符串 但我不知道为什么会收到错误 我知道它说 不能与整数一起使用 但我在网
  • 使用 CSharpCodeProvider 类编译 C# 7.3 的 C# 编译器版本是什么?

    我想使用 Microsoft CSharp CSharpCodeProvider 类来编译 C 7 3 代码 编译器版本在 IDictionary 中指定 在创建新的 CSharpCodeProvider 时将其作为输入 例如 Compil

随机推荐

  • pandas groupby 在具有聚合的列上[重复]

    这个问题在这里已经有答案了 我有一个像这样的数据框 userId category count A cat 24 B dog 26 A cat 32 C bird 21 D lion 6 D cat 32 C bird 22 我想要的结果是
  • .def 文件 C/C++ DLL

    我不明白将 def 文件与 DLL 一起使用的意义 看起来它取代了在 DLL 代码中使用显式导出的需要 即显式 declspec dllexport 但是在不使用这些文件时我无法生成 lib 文件 这会在稍后使用 DLL 时产生链接器问题
  • 为什么python线程数一开始是2?

    import threading print threading activeCount 输出 2 当这段代码保存到文件并运行时 既然是主线程怎么可能是2呢 当我们运行 foo py 文件时 除了主线程之外 Python 是否默认运行另一个
  • 在 Scala 中,为什么模式匹配没有选取 NaN?

    我的方法如下 def myMethod myDouble Double Double myDouble match case Double NaN gt case gt IntelliJ 调试器显示 NaN 但这在我的模式匹配中没有被识别出
  • Mathematica 中的“upvalue”是什么意思以及何时使用它们?

    To me g f g x h x 只是详细地等价于f g x h x 你能举一个你必须使用的例子吗 实际上 g f g x h x 不等于f g x h x 后者将定义与f while and 和它的 将定义与g 这是一个至关重要的区别
  • 如何以及何时使用 Html 编码

    我最近了解到 我不应该将 html 编码数据存储在数据库中 但我应该对用户屏幕上显示的数据进行 html 编码 没什么大不了的 我必须修复我的数据库记录并进行一些代码更改 但我的问题是 什么时候应该使用 html 编码 什么时候不应该使用
  • Spring Batch 和 Spring Integration 的集成问题 - “没有为端点定义轮询器”异常

    我经历了Spring 集成指南 http docs spring io spring integration reference html sftp html和例子在这里 https github com spring projects s
  • PHP exec() 不适用于 ffmpeg

    我尝试在 PHP 中运行以下命令 在 Ubuntu 上
  • Entity Framework Core 2.2:禁用特定实体的迁移

    我正在尝试在已创建数据库的现有系统上构建一个 aspnetcore 应用程序 并且我将在其上添加一些表 我对数据库进行了逆向工程 将现有表作为实体添加到我的应用程序中 并且我编写了自己的实体 稍后将添加这些实体 最后 所有实体都添加到单个
  • JQuery Mobile:聚焦输入文本不尊重 z-index,出现在其他所有内容之上

    我有一个带有 jQ uery Mobile 的 Android Phonegap 应用程序 在 HTC Desire 上 如果输入框获得焦点 则无论上面有哪些元素 它始终会转到前面 您是否尝试应用CSS属性 webkit transform
  • iOS - UISlider 的自定义图像

    我想为 UISlider 轨道使用图像 我不希望拇指的左边有一种颜色 右边有另一种颜色 我只想要一张横跨整个赛道的静态图像 可能的 要将图像设置到滑块 您可以使用设置最小轨迹图像 设置最大轨迹图像方法 根据您的要求 将两者设置为同一图像 i
  • 适用于打字稿的编辑器和调试器

    我正在开发一个nodejs 项目 其中所有代码都是用打字稿编写的 它遵循微服务模式 每个微服务都是一个独立的项目 因此需要同时打开和调试许多项目 我尝试了 webstorm 和 Visual Studio 使用 NTVS 但对它们都不满意
  • PYQT5画线[重复]

    这个问题在这里已经有答案了 def init self super init self title Main menu self left 80 self top 80 self width 1500 self height 1000 se
  • Oracle XML:跳过不存在的节点

    我在将 xml 数据插入到 oracle 表中时遇到问题 这是我的 xml
  • 简单的 Kafka Consumer 未收到消息

    我是 Kafka 的新手 正在运行一个简单的 Kafka 消费者 生产者示例 如上所示Kafka消费者 https kafka apache org 0102 javadoc index html org apache kafka clie
  • 生成随机确定性有限自动机的算法是什么?

    DFA 必须具有以下四个属性 DFA 有 N 个节点 每个节点有 2 个传出转换 每个节点都可以从其他每个节点访问 从所有可能性中以完全一致的随机性选择 DFA 这是我到目前为止所拥有的 从 N 个节点的集合开始 选择一个尚未选择的节点 将
  • 使用委托和 Lambda 的奇怪行为

    作为在我正在开发的库中引入惰性格式化评估的一种方法 我定义了委托 public delegate string MessageFormatterDelegate string message params object arguments
  • 什么是Android UiThread(UI线程)

    有人可以向我解释一下 UI 线程到底是什么吗 在developer android com上它提到了runOnUiThread函数 公共最终无效runOnUiThread 可运行操作 从以下版本开始 API 级别 1 在 UI 线程上运行指
  • 如何让 NHibernate 停止使用 nvarchar(4000) 来插入参数字符串?

    我需要优化由域实体上的保存 插入查询 生成的查询 我已经使用 Fluent NHibernate 配置了 NHibernate 以下是 NHibernate 在插入用户对投票的响应期间生成的查询 exec sp executesql N I
  • 简洁表达数学公式的语法建议

    我正在 C 中开发功能域特定的嵌入式语言 以尽可能简洁 准确地将公式转换为工作代码 我在评论中发布了一个原型 大约有两百行长 现在我的语言看起来像这样 嗯 实际上看起来像这样 implies two nested loops j 0 N i