问题标签 [symbolic-computation]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - SymPy,如何执行精确的符号表示(Rational Issue)?
所以我打算写一个关于数学的网络应用程序,我需要将用户输入转换为 SymPy 表达式而不修改它(简化),例如。所以我想像这个例子一样取消这种行为。
但我已经设法在其他类型的表示中做到了。
还有没有办法告诉 SymPy不应该评估所有表示?
matlab - Matlab求解函数:如何将可变大小的解转换为矩阵形式?
我目前正在研究 Matlab 函数。
我正在尝试处理可变大小的符号矩阵。我需要以Xres
某种方式迭代解决方案向量以获得问题的所有解决方案。问题在于 line xres(i)=Xres(i)
,Xres(i)
返回一个结构,我实际上需要调用xres(i)=Xres.X%d%d
它%d=i
才能工作。我不知道如何编码。
如果我可以跳过所有这些并以某种方式将解决方案直接保存到矩阵中,则更好的解决方案是。类似于以下内容:
我对这个问题的工作,丑陋的解决方案。
请给我看一个更好的;eval(sprintf())
是一个丑陋的解决方法。
matlab - 当我使用 subs 为常数赋值以及直接应用数字时,Matlab 符号求解器给出不同的解决方案
我的问题如下(与车辆的运动有关):我在 Matlab 中使用 dsolve 来求解一个关于 jerk 的微分方程(这是加速度的导数),然后我对解进行三次积分以获得加速度,速度和位置。我在每个积分中添加必要的积分常数。
然后为了计算所有常数(总共 6 个),我使用求解和 6 个方程,这些方程与初始位置、速度、加速度和加加速度等有关。所以现在我对每个常数都有一个符号表达式。
为了给这些常量赋予数值,我使用了两种方法。一种是使用 double(vpa(subs(symb_expression,{ ABC}, {no1,no2,no3}))) ,它工作正常但速度很慢。为了让它更快,我考虑采用符号表达式并使用函数使其成为“正常”计算。[例如,如果符号表达式是 C1=a+b*exp(v1/v2),我只需复制并将此粘贴到一个函数中,该函数将 a、b、v1 和 v2 作为输入并返回 C1。] 然而我的表情很长。
问题是第一种方法我得到了我想要的,而第二种方法在接近模拟结束时变得疯狂。(在第一部分,即时间 < 14 的情况下,它们完全相同,尽管无法看到,因为错误情况下的最终值非常大,并迫使图形以不同的方式缩放)。这个问题可以在左上图和右下图看到(考虑其他无关的)。
我认为这与精度有关,并尝试增加数字值,但并没有解决问题。
任何想法都会受到欢迎!
matlab - Matlab不会在另一个符号函数中替换一个符号函数
我有一个依赖于 r 的符号函数,称为 u(r)。我从 u 中的微分方程得到这个函数。
否则,我有另一个符号函数,称为 sigma_r,它是 u 和 u 导数的函数。
当我显示 sigma 时,它显示为 u(r) 和 D(u)(r) 的函数。
u(r) 是 r 和 2 积分常数 C1 和 C2 的函数。
我想将 sigma_r 表示为 r、C1 和 C2 的函数。
我尝试 sigma_r = subs(sigma_r,u(r)) 但似乎 Matlab 无法替换它并且无法计算 u 导数。
这是脚本
以下是 Matlab 在命令窗口中显示的内容:
如您所见,sigma_r 的表达式仍然包含 u。
谢谢您的帮助,
尼达尔·科赫拉德
algorithm - 使用 symfun/subsindex 的 MATLAB 错误
我在使用dsolve
符号函数时遇到问题。我收到一条错误消息:
“使用 symfun/subsindex 时出错(第 121 行)
索引值必须是正整数、逻辑或符号变量。VK3 中的错误(第 9 行)
[F(n), G(n), H(n)] = dsolve(diff(F) == F2, diff(G) == G2,..."
这是我的代码。这对某些人来说可能看起来很愚蠢,但我对 Matlab 的经验相对较少。如果有人能告诉我哪里出错了,我将不胜感激。
matlab - 使用 Matlab 求解符号不等式时出错
我是 Matlab 的新手。我正在尝试使用solve
:
但Matlab返回:
警告:2 个变量中的 5 个方程。
在 C:\Program
Files\MATLAB\R2012a\toolbox\symbolic\symbolic\symengine.p>symengine 在 54在 mupadengine.mupadengine>mupadengine.evalin 在 97
在 mupadengine.mupadengine>mupadengine.feval 在 150
在 160 处求解
警告:找不到明确的解决方案。> 在 169 处求解
逗号分隔的列表扩展具有非单元格数组的单元格语法。
sym/subsref 中的错误(第 1575 行)
[inds{k},refs{k}] = privformat(inds{k});
谁能告诉我如何解决这个错误?
substitution - 替换时如何告诉maple零的导数为零?
我正在尝试subs
在枫树中使用 0 替换较长公式中的导数:
看来,如果formula
只涉及u(r)
我所期望的这个作品的一阶导数。例如,
But if formula
involves second derivatives I get a diff(0,r)
in the result that won't go away even when using simplify
:
(My actual formula
is quite long involving first and second derivatives of two variables. I know that all derivatives with respect to a certain variable are 0 and I'd like to remove them).
octave - 符号包和 Octave 仅适用于超级简单的任务。我做错什么了吗?
我已经安装(在 Windows 机器上(Win7 64 位)):
- python 3.5.0 和 sympy 0.7.6.1
- 八度音程 4.0.0.0 和符号 2.2.2
当我尝试使用多个操作员做任何事情时,这就是我得到的:
怎么了?
matlab - 如何在 MATLAB 中编写符号求和(符号表达式)?
我有两个月的 MATLAB 学术许可证,在这个版本中不支持 Simulink。
我的问题是我想在 MATLAB 中编写一个符号表达式,而调试器显示我可能需要 Simulink 的一些功能。我想要转换为 MATLAB 支持的格式(不使用 Simulink 工具)的代码部分如下:
如何才能做到这一点?
matlab - 在 MATLAB 中替换符号导数
我有一个看起来像这样的符号函数
我想用它的一阶导数替换 y 的所有导数实例,即
其中dy
已经定义为
结果如下:
它代替一阶导数,但不代替高级导数。我想要的是这个h^5
词有(h^5*diff(dy(x), x, x, x)
。有没有办法做到这一点?
我目前的方法非常老套,涉及将 sym 转换为字符串,用 替换一阶导数dy
,然后转换回 sym 并评估以将系列中每个项的顺序减少一个,但它必须是递归的,因为在每个的阶段衍生物dy
然后被包含的东西替换diff(y, ...)
。我希望有一种更清洁的方法来处理这个问题。