标签: symbolic-math

在matlab中使用阶乘函数时出错?

当试图计算这个序列时,我得到一个错误

syms n
limit(((-3)^n)/factorial(n),inf)
Run Code Online (Sandbox Code Playgroud)

使用阶乘的错误(第17行)N必须是非负整数的矩阵.错误(第9行)

你如何解决这个问题或者指定他们想要的矩阵?

math matlab symbolic-math factorial

1
推荐指数
1
解决办法
1699
查看次数

Sympy的订阅限制

我正在处理一些较长的方程式,但并不是很复杂,我想使用sympy来简化和“分解”它们。但是我遇到了一些问题。以下是一些最小示例的列表:

问题1:对称

from sympy import *
from __future__ import division
a = symbols('a')
b = symbols('b')
expr = 1/12*b + 1
expr.subs(1/12*b, a)
expr.subs(b*1/12, a)
Run Code Online (Sandbox Code Playgroud)

第一行给出了预期的结果(即a+1),而第二行则没有替代。

问题2:因式表达式

表达式的某些部分被分解了,当我扩展表达式时,它们被简化了,因此无法进行替换。例如

(((x+1)**2-x).expand()).subs(x**2+2*x, y+1)
Run Code Online (Sandbox Code Playgroud)

会给x^2+x+1,我正在寻找的是y+2-x

有办法解决这些问题吗?还是我应该使用其他符号数学工具?任何建议都欢迎。

python symbolic-math sympy substitution

1
推荐指数
1
解决办法
1070
查看次数

如何从符号表达式中提取所有数值到矩阵?

我在MATLAB中对符号多项式进行了部分分数分解,它给出了一个符号表达式,如下所示:

poly = -2i/(x - 1.0 - 1.7i) + 0.57i/(x - 1.0 + 1.1559i)
Run Code Online (Sandbox Code Playgroud)

如您所见,此符号表达式包含x变量和常量复数.如何从MATLAB中提取此表达式中的所有数值?不得丢失数字是真实的还是复杂的信息.

因此,对于给定的表达式poly,我将如何获得以下矩阵A:

A = [-2i, -1-1.7i; .57i, -1+1.1559i]

A =

     0 - 2i        -1 - 1.7i
     0 + 0.57i     -1 + 1.1559i
Run Code Online (Sandbox Code Playgroud)

还请注意,A应包含数字,而不是符号表达式poly.


我读了coeffs-function,但它要求输入是多项式.使用children-function我可以将符号表达式中的求和项除以符号表达式的向量,如下所示:

p = - 0.57735026918962576450914878050196i/(x - 1.0 - 1.7320508075688772935274463415059i) + 0.57735026918962576450914878050196i/(x - 1.0 + 1.7320508075688772935274463415059i);
terms = children(p)

terms = 
[ -0.57735026918962576450914878050196i/(x - 1.0 - 1.7320508075688772935274463415059i), 0.57735026918962576450914878050196i/(x - 1.0 + 1.7320508075688772935274463415059i)]
Run Code Online (Sandbox Code Playgroud)

matlab symbolic-math polynomials

1
推荐指数
1
解决办法
95
查看次数

为什么 cumsum 不适用于符号向量?

我写了一个涉及cumsum符号向量的小八度脚本,我希望它可以工作,但不幸的是,它没有。这是代码:

pkg load symbolic
n = 3;
syms q x
q = sym('q', [n 1]);
x = sym('x', [n 1]);
cumsum(q - x)
Run Code Online (Sandbox Code Playgroud)

我得到的不是预期的结果:

错误:cumsum:错误的类型参数“类”

为什么会发生这种情况?它可以与 Matlab Symbolic Toolbox 一起使用吗?(不幸的是,我没有它,所以我无法测试。)

symbolic-math octave cumsum

1
推荐指数
1
解决办法
87
查看次数

符号计算的反思语言

我正在寻找一种以该语言编写的程序语言.这是一种语言,其程序是该语言的主要(可能是唯一的)对象.

像自编程转换语言这样的东西,仅仅考虑到这种观点.

动机如下:

有一个程序P1意味着计算Real - > Real我希望有一个程序P2,它将采用P1并将其转换为P1的符号衍生物(或反衍生物).显然,P2可能无法对大多数输入做正确的工作.

有人可能将其视为与lambdas匹配的模式.但是一个非常方便的模式匹配.

reflection programming-languages symbolic-math computer-algebra-systems

0
推荐指数
1
解决办法
97
查看次数

带符号数学的矩阵给出了符号答案,而不是数字答案

考虑以下矩阵

Ja(t1, t2, t3, t4, t5, t6) =

[                                                                                                             (sin(t5)*(cos(t3)*cos(t4)*(cos(t1)*sin(t2) + cos(t2)*sin(t1)) - sin(t3)*sin(t4)*(cos(t1)*sin(t2) + cos(t2)*sin(t1))))/5 - sin(t1)/100 - (219*sin(t1)*sin(t2))/1000 - (19*cos(t3)*(cos(t1)*sin(t2) + cos(t2)*sin(t1)))/100 - (21*cos(t3)*cos(t4)*(cos(t1)*sin(t2) + cos(t2)*sin(t1)))/1000 + (21*sin(t3)*sin(t4)*(cos(t1)*sin(t2) + cos(t2)*sin(t1)))/1000, (219*cos(t1)*cos(t2))/1000 + (sin(t5)*(cos(t3)*cos(t4)*(cos(t1)*sin(t2) + cos(t2)*sin(t1)) - sin(t3)*sin(t4)*(cos(t1)*sin(t2) + cos(t2)*sin(t1))))/5 - (19*cos(t3)*(cos(t1)*sin(t2) + cos(t2)*sin(t1)))/100 - (21*cos(t3)*cos(t4)*(cos(t1)*sin(t2) + cos(t2)*sin(t1)))/1000 + (21*sin(t3)*sin(t4)*(cos(t1)*sin(t2) + cos(t2)*sin(t1)))/1000,                                                                                                             (sin(t5)*(cos(t3)*sin(t4)*(cos(t1)*cos(t2) - sin(t1)*sin(t2)) + cos(t4)*sin(t3)*(cos(t1)*cos(t2) - sin(t1)*sin(t2))))/5 - (19*sin(t3)*(cos(t1)*cos(t2) - sin(t1)*sin(t2)))/100 - (21*cos(t3)*sin(t4)*(cos(t1)*cos(t2) - sin(t1)*sin(t2)))/1000 - (21*cos(t4)*sin(t3)*(cos(t1)*cos(t2) - sin(t1)*sin(t2)))/1000,                                                                                 (sin(t5)*(cos(t3)*sin(t4)*(cos(t1)*cos(t2) - sin(t1)*sin(t2)) + cos(t4)*sin(t3)*(cos(t1)*cos(t2) - sin(t1)*sin(t2))))/5 - …
Run Code Online (Sandbox Code Playgroud)

math matlab matrix symbolic-math

0
推荐指数
1
解决办法
102
查看次数