有没有办法重新格式化方程以从公式中获取未知变量?

2023-11-30

我正在制作一个应用程序,我想在其中使用数学和物理的公式/方程。我在每个公式中都包含了一个计算器部分,以便用户能够插入他的值并获得方程的结果。问题是,我需要为每个未知变量重新格式化方程,是否有脚本,或者至少有某种算法能够做到这一点?

我正在使用 MathJax 反应本机模块来显示表达式和 javascripteval函数来评估它们。 我找到了 algebra.js 插件,但它似乎不包含我需要的任何东西,与 github 上的“nerdamer”js 插件相同。

我用这个函数来评估方程,variable_finding是方程“左侧”的变量,代码的其余部分负责“右侧”

calculateSolution = (variable_finding) => {
  equation = this.state.input_equation
  vars = []

  for (let i = 0; i < this.state.variables.length; i++) {
    if (this.state.variables[i].variable !=
      variable_finding.variable) {
      vars.push([
        this.state.variables[i].variable,
        '£' + this.state.variables[i].variable + '£',
        this.state.variables[i].value
      ])
    }
  }

  for (let i = 0; i < vars.length; i++) {
    equation = equation.replace(vars[i][1], vars[i][2]);
  }

  this.setState({
    solution: equation,
  })
}

我想找到一些解决方案/函数,以便我能够输入带有变量的方程,然后选择一个变量,该函数将创建一个新方程,以便所选变量将位于方程的左侧其余的将在右侧。


求解给定变量的方程是一个非常复杂的问题。
您正在寻找的本质上是CAS对于 JavaScript。

如果您不介意在服务器上求解方程,您可以使用免费提供的 CAS 之一(单击here获取列表)
例如,在 MATLAB 中您可以使用solve(eq, var)求解特定变量。

就纯 javascript 实现而言,您可以使用coffeequate:

let equation = CQ("E = m*(c**2)");

let solutions = equation.solve("c");
for(let solution of solutions)
  console.log("c =", solution.toString());
<script src="https://unpkg.com/[email protected]/coffeequate.min.js"></script>

但请注意coffeequate不能解所有类型的方程。

你也可以摆脱你的eval通过使用它toFunction:

let expression = CQ("a + b**c");
let fn = expression.toFunction("a", "b", "c");
console.log("1 + 2**3 =", fn(1, 2, 3).toString()); // 9
console.log("3 + 2**1 =", fn(3, 2, 1).toString()); // 5
<script src="https://unpkg.com/[email protected]/coffeequate.min.js"></script>

此外,您还可以用它来简化/扩展方程,如果您需要该功能:

let eqStr = "(x + y)*(x - y)";
let equation = CQ(eqStr);
console.log(eqStr, "===", equation.simplify().toString());
<script src="https://unpkg.com/[email protected]/coffeequate.min.js"></script>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

有没有办法重新格式化方程以从公式中获取未知变量? 的相关文章

  • 检测对给定 JavaScript 事件的支持?

    我有兴趣使用 JavaScript hashchange 事件来监视 URL 片段标识符的更改 我知道非常简单的历史 http code google com p reallysimplehistory 以及用于此目的的 jQuery 插件
  • 将所有 BigDecimal 运算设置为特定精度?

    我的Java程序以高精度计算为中心 需要精确到至少120位小数 因此 程序中所有非整数都将由 BigDecimal 表示 显然 我需要指定 BigDecimal 的舍入精度 以避免无限小数表达式等 目前 我发现必须在 BigDecimal
  • 如何在单页应用程序中使用 #-URL?

    本文 http danwebb net 2011 5 28 it is about the hashbangs提出了一个非常令人信服的论点 因为 URL 是长期存在的 它们被添加书签并传递 所以它们应该是有意义的 并且使用哈希进行真正的路由
  • Javascript 无法正确排序 DECIMAL 数字

    我有一些代码可以按字母顺序对名称进行排序 我遇到的问题是它处理小数的方式 它对名称进行排序 如下所示 我宁愿它按数字递增 DOG 1 0510 DOG 1 1031 DOG 11 1792 DOG 12 0920 DOG 12 1170 D
  • “move(-1)”作为 AngularJS 表达式有什么问题吗?

    我收到此错误 parse ueoe Unexpected end of expression move 从这段代码来看
  • 在each() 和forEach() 中使用break 和 continue

    如果我们不能使用 break 和 continue 关键字 我不确定我是否理解函数式循环 映射的价值 我可以做这个 collections users models forEach function item index can t use
  • 竞争性编码 - 以最低成本清除所有级别:未通过所有测试用例

    当我遇到这个问题时 我正在一个竞争性编码网站上解决问题 问题指出 游戏中有 N 个关卡和 M 种可用武器 等级编号从 0 到 N 1 武器编号从 0 到 M 1 您可以按任意顺序清除这些级别 在每个关卡中 需要这些 M 武器的某些子集才能通
  • 在Javascript中将RGB数组转换为RGBA数组的快速方法

    我正在使用的模拟器在内部存储 RGB 值的一维帧缓冲区 但是 HTML5 画布在调用 putImageData 时使用 RGBA 值 为了显示帧缓冲区 我当前循环遍历 RGB 数组并以某种方式创建一个新的 RGBA 数组与此类似 https
  • 预加载 javascript 和 css 文件

    我目前正在开发一个移动网站 该网站大量使用图像 CSS 和 JavaScript 例如 它使用未压缩的 150KB 的库 我为图像构建了一个预加载器 效果相当好 function loadImages images var sum 0 fo
  • Moment.js 动态更新时间(以秒为单位)

    我试图显示时钟 that 每秒更新一次 e g 2015 年 1 月 5 日 12 05 01 它似乎对我来说工作得很好 对于相同的代码 并且只有 moment min js 指向v2 11 0 看看代码 来源 MilkyWayJoe va
  • 使用淘汰赛动态显示/隐藏元素

    我有一个表 有四列 即代码 名称 数量和价格 其中 我想动态更改数量列的内容 元素 通常 它应该显示其中显示数量的元素 当用户单击元素时 我想显示该元素 以便用户可以编辑数量 我正在尝试按照 示例2 来实现淘汰赛文档链接 http knoc
  • UpdatePanel 启动脚本未执行

    我正在编写一个在 SharePoint 网站中使用的 ASP NET Web 部件 并尝试使用 UpdatePanel 来呈现查询结果 我想使用 JQuery 插件来修改从异步回发返回的表 但我无法让启动脚本在异步更新上执行 我发现这个帖子
  • 如何将OpenLayers多边形坐标转换为纬度和经度?

    我正在使用开放层 https openlayers org en latest examples draw freehand html绘制多边形并保存坐标的技术 这是我的代码 var raster new ol layer Tile sou
  • JavaScript/jQuery - “$ 未定义 - $function()”错误

    我正在尝试运行 JavaScript jQuery 函数并且Firebug http en wikipedia org wiki Firebug 28software 29得到错误 is not defined function JavaS
  • Math.Sin、Math.Cos 和 Math.Tan 精度以及正确显示它们的方法

    我正在用 C 编写一个计算器 textBoxResult是一个文本框 我在其中显示数字 recount是以度为单位获取角度并以弧度为单位返回的函数 我的角度是从texBoxInput public double recount int nu
  • 如何在使用类型分散时将箭头添加到行尾

    如何在 y 不等于 0 且系列类型以线宽 2 分散的情况下正确地将箭头添加到行的每一端 在这里我可以看到箭头已添加但未正确添加 请看这个 部分工作小提琴 http jsfiddle net vnYCX 这是我的 JS 最初的原型是由 sta
  • Dojo“正在加载”消息

    我是 Dojo 新手 所以我需要一些帮助 我的一些链接需要一段时间 当用户单击时 页面开始加载需要几秒钟 我想添加一条 正在加载 消息 我可以用 旧时尚方式 来做 但我想学习新的 更简单 更智能的 Dojo 方式 具体如何工作现在并不重要
  • 如何在react.js中将/n替换为换行符?

    我正在尝试更换每一个 n to a br tag in ReactJS In my note note对象有一个包含多个的字符串 n in it 示例注释 注释 test ntest ntest 我尝试过的ReactJS note note
  • javascript从字符串创建不区分大小写的正则表达式

    我试图通过以不区分大小写的方式将输入与正则表达式匹配来进行验证 正则表达式作为对象上的字符串从服务中下来 我可能会得到类似的东西 regex ane 我可以执行以下操作 var rx new RegExp object regex The
  • 使用 javascript 从亚马逊 URL 中抓取 ASIN

    假设我有一个像这样的亚马逊产品 URL http www amazon com Kindle Wireless Reading Display Generation dp B0015T963C ref amb link 86123711 2

随机推荐

  • WPF 虚拟树视图中的滚动错误

    我在 WPF 中使用虚拟化树视图来显示具有大量子节点 5000 的 3 级深度层次结构
  • R - 使用查找表替换数据框中的值

    最近 我在尝试使用查找表替换数据框或矩阵中的特定值时遇到了一些麻烦 所以这代表要修改的original data V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 V11 V12 V13 V14 1 255 255 255 25
  • 在 Java 中关闭流

    为什么我们需要关闭 FileInputStream 以及一般的流 任何状况之下在我们离开该计划之前 否则会发生什么 如果程序在程序中显式关闭输入流之前停止 那么该流不是也会自动关闭吗 文件句柄是稀缺的 有限的资源 如果不正确清理它们 您可能
  • Azure Function cosmosDB 触发器托管标识不起作用

    我为 cosmosDB 触发器创建了一个独立的 Azure 函数 我正在使用 Microsoft Azure Functions Worker Extensions CosmosDB version 4 0 0 preview2 来使用托管
  • 更改图像大小 - PHP

    我最近创建了一个上传功能 但我不知道如何将宽度和高度更改为 75px 我尝试了通过 Google 找到的一个代码 但我刚刚收到此错误 Fatal error Class Imagick not found in C wamp www Leg
  • Java字段隐藏

    在以下场景中 class Person public int ID class Student extends Person public int ID 学生 隐藏人的ID字段 如果我们想在内存中表示以下内容 Student john ne
  • 使用 Jquery AJAX 提交 HTML 表单

    我正在尝试使用 AJAX 提交 HTML 表单这个例子 我的 HTML 代码
  • 在 Informix 中将 DATETIME 转换为 Unix 纪元

    我有一个日期时间列 SELECT mytime FROM mytable mytime 1 6 2013 10 41 41 PM 我想编写一条 SQL 语句 以 Unix 时间格式返回时间 自 Unix 纪元 01 01 1970 00 0
  • Masm汇编8086在数据字相加之间携带标志

    所以我有这个问题 我应该解决 我花了几个小时试图找出最好的方法来做到这一点 谷歌并没有多大帮助 问题是创建一个子例程 给定一个单词列表 然后将其添加到另一个成为输出的列表中 它基本上是一种处理大量数据的方法 我的代码适用于进位标志withi
  • ToLower函数在C中的实现

    我正在用 C 编写自己的 ToLower char str 实现 但是我在函数中遇到分段错误 我写的函数是 void ToLower char str while str 0 if str gt 65 str lt 90 It fails
  • 在 Objective-C++ 的 .h 文件中添加指向定义的 Objective-C 类的指针

    可以在 Objective C 中创建一个类 该类的字段是一个指向 Objective C 接口的指针 在 h文件 为了澄清一点 我创建了一个 Objective C 接口 Our platform independent class in
  • 此环境中不提供编译器。当执行 mvn clean package 时

    你好 当我在 cmd 上运行命令时 mvn清理包 我收到编译器错误 此环境中未提供编译器 也许您正在 JRE 而不是 JDK 上运行 But I checked out my PATH JAVA HOME and HOME M2 I als
  • 从 ARM 源代码交叉编译 Qt 4.7 时出现问题

    我正在尝试从源代码交叉编译 Qt 4 7 1 以下是我的设置的一些注释 我的预期输出是运行 Qt 应用程序所需的共享对象库 我的目标平台是 TI AM335x 处理器 采用 ARM Cortex A8 架构 我的开发平台是x86 64位Ub
  • 将电子表格导出到 mySQL 的 Google Apps 脚本在多个文件上执行

    Ahoy 我如何将所有 Google 电子表格的数据导出到 MySQL 我有导出脚本的基础知识 但是我所有的电子表格都有 1 500 多行 其中有 41 行 接下来我的问题是我可以在所有电子表格上执行这些脚本吗 一次电子表格文件 也许在一个
  • 音频识别和比较[关闭]

    Closed 这个问题需要多问focused 目前不接受答案 我正在做一个小组项目 我们正在开发一个程序 可以接收音频并将其与保存的音频文件进行比较 如果输入和保存的文件匹配则输出音频消息 我们想用某种 python 方法来比较音频文件 但
  • Mysql 最小值和最大值以及每个月对应的“日期”

    我有一个名为 rates 的表 它有两个字段 date 和 rate 我喜欢获取每个月的最小和最大速率值及其发生的日期 但我无法做到 选择日期 MIN 速率 AS minRate MAX 速率 AS maxRate MONTH 日期 AS
  • 与 Properties.Resources.image 的图像比较

    你能告诉我为什么下面的条件是错误的吗 List
  • 不调用抽象祖先的@PostConstruct

    我正在编写一个 JAX RS 库 不是应用程序 I have abstract class A PostConstruct private void constructed a not invoked Inject private Some
  • Laravel 加密在使用 Update 方法时无法加密到数据库

    您好 我想在用户创建或编辑数据时加密数据库中的某些字段 如果创建 加密起作用 但是当用户编辑数据时 保存在数据库中的值将是未加密的普通文本
  • 有没有办法重新格式化方程以从公式中获取未知变量?

    我正在制作一个应用程序 我想在其中使用数学和物理的公式 方程 我在每个公式中都包含了一个计算器部分 以便用户能够插入他的值并获得方程的结果 问题是 我需要为每个未知变量重新格式化方程 是否有脚本 或者至少有某种算法能够做到这一点 我正在使用