天道酬勤,学无止境

symbolic-computation

subs(sinc(K), K, 0) 其中 K 是符号将返回 NaN。 不应该是1吗?(subs(sinc(K), K, 0) where K is symbol will return NaN. Shouldn't it be 1?)

问题 MATLAB sinc(0)将按原样返回 1。 但是用零值替换的某个符号K sinc(K)将返回NaN. 以下代码说明了上述内容: sinc(0) % calculate sinc of 0, this will return 1 K = sym('K'); % define symbol K % try to substitute value 0 for K in sinc(K), this will return NaN subs(sinc(K), K, 0) 我可以在符号情况下强制sinc返回 1(事先不知道K的值)吗? MATLAB Version: 8.0.0.783 (R2012b) Symbolic Math Toolbox Version 5.9 (R2012b) 回答1 您正在潜水0/0 ,即NaN通过直接替换sin(pi*K)/(K*pi) 。 这就是sinc为避免这种情况而实际采取的措施。 i = find(x==0); x(i) = 1; y = sin(pi*x)./(pi*x); y(i) = 1; 您可以通过向您的值添加一个小的正则化器来获得相同的效果: subs(sinc(K), K, 0+eps) ans = 1

2021-09-12 09:12:46    分类:技术分享    matlab   symbolic-computation

subs(sinc(K), K, 0) where K is symbol will return NaN. Shouldn't it be 1?

MATLAB sinc(0) will return 1 as it should. But sinc(K) of some symbol K for which a value of zero is substituted will return NaN. The following code illustrates the above: sinc(0) % calculate sinc of 0, this will return 1 K = sym('K'); % define symbol K % try to substitute value 0 for K in sinc(K), this will return NaN subs(sinc(K), K, 0) Can I force sinc to return 1 in the symbolic case (without knowing the value of K in advance)? MATLAB Version: 8.0.0.783 (R2012b) Symbolic Math Toolbox Version 5.9 (R2012b)

2021-08-31 21:59:32    分类:问答    matlab   symbolic-computation

如何在 Visual Studio 2010 上安装 Symbolic C++?(How do you install Symbolic C++ on Visual Studio 2010?)

问题 我有 Symbolic C++(可以与 V 集成的版本,没有关于如何安装它的文档。我从这个网站得到它,它有它如何工作的例子: http://issc.uj.ac.za/symbolic/symbolic.html 有没有人知道如何安装它以与我在 Visual Studio 中的项目一起使用? 回答1 也许是一个迟到的答案,但可能对其他人仍然有用。 对于 *nix 系统: 有两个版本: [1] Tarball that do not need to be installed in your system: http://issc.uj.ac.za/symbolic/sources/SymbolicC++3-3.35.tar.gz [2] Library, intended to be installed in your system: http://issc.uj.ac.za/symbolic/sources/SymbolicC++3-3.35-ac.tar.gz Y 选择了图书馆。 现在,提取 tarball,然后从 README 文件中提取: This project attempts to extract the parts of SymbolicC++ that can be compiled as part of a library and so create the

2021-08-31 10:59:07    分类:技术分享    c++   visual-studio-2010   installation   symbolic-math   symbolic-computation

How do you install Symbolic C++ on Visual Studio 2010?

I have Symbolic C++ (the version that can integrate with V, there is no documentation on how to install it. I got it from this website and it has examples of how it work: http://issc.uj.ac.za/symbolic/symbolic.html Does anyone have any idea on how to install this to use with my projects in Visual Studio?

2021-08-31 02:00:39    分类:问答    c++   visual-studio-2010   installation   symbolic-math   symbolic-computation

Ryacas 的符号矩阵乘法(symbolic matrix multiplication by Ryacas)

问题 我在适用于 Ryacas 符号计算的Sym类中定义了两个矩阵mat1和mat2 : library(Ryacas) x <- Sym("x") mat1 <- List( List(x, 2), List(x^3, x)) 和 mat2 <- List( List(x, x), List(3, 6 * x)) 现在的问题是如何通过 Ryacas 包对这两个矩阵进行符号乘法? 先感谢您。 回答1 试试这个: > mat1 * mat2 expression(list(list(x^2 + 6, x^2 + 12 * x), list(x^4 + 3 * x, x^4 + 6 * x^2)))

2021-08-30 02:31:56    分类:技术分享    r   matrix   symbolic-computation   yacas

重载三元 ?: 运算符,或在包含的文件中更改为 if{}else{}(Overload ternary ?: operator, or change to if{}else{} in included files)

问题 研究项目在这里。 在我的 C++ 库中,我包含了 C 文件: #include "aprogram.c" 我通过重载(几乎)所有运算符来象征性地执行它。 我必须能够检测(condition) ? this : that (condition) ? this : that和提取condition , this和that在我的符号执行库中使用。 但是,SO 1、SO 2 和 SO 3 等已经帮助我意识到?:不能重载。 有什么办法可以强行超载?:反正? 我可以将包含的 C 文件中的所有?:语句更改为 ifelse 语句而不实际更改文件吗? 回答1 根据 C++ 标准,您不得重载 ?: 您能做的最好的事情是使用 C 宏(但这可能会导致可怕的代码)。 回答2 宏在 1970 年代被添加到 C 编译器中以简化编译器设计。 宏由“C 预处理器”处理。 不幸的是,这个预处理器很幼稚,只做文本替换。 生成的代码通常不必要地复杂,难以查看(使用 –E 或 –P 编译选项)并且难以调试。 现在你应该使用编译器来处理你的所有代码(预处理器通常仅限于 #includes 和条件编译)。 不幸的是,Bjarne Stroustrup 决定不允许你重载 ?: 三元——不是出于任何深层次的技术原因,而是因为它是唯一的三级运算符,他觉得修改编译器的努力是不合理的。

2021-08-12 08:04:18    分类:技术分享    c++   include   operator-overloading   ternary-operator   symbolic-computation

Overload ternary ?: operator, or change to if{}else{} in included files

Research project here. In my C++ library, I am including C files: #include "aprogram.c" which I execute symbolically by overloading (almost) all operators. I have to be able to detect (condition) ? this : that and extract condition, this and that for usage in my symbolic execution library. However, SO 1, SO 2 and SO 3 amongst others already helped me realise that ?: cannot be overloaded. Is there any way for me to forcibly overload ?: anyways? Can I change all ?: statements in my included C file into ifelse-statements without actually changing the file?

2021-07-03 17:18:31    分类:问答    c++   include   operator-overloading   ternary-operator   symbolic-computation

symbolic matrix multiplication by Ryacas

I define two matrices mat1 and mat2 in Sym class which is suitable for Ryacas symbolic computation: library(Ryacas) x <- Sym("x") mat1 <- List( List(x, 2), List(x^3, x)) and mat2 <- List( List(x, x), List(3, 6 * x)) now the question is how I can have the symbolic multiplication of these two matrices by Ryacas package? Thank you in advance.

2021-06-26 05:23:30    分类:问答    r   matrix   symbolic-computation   yacas

Matlab求解函数的问题?(Issue with Matlab solve function?)

问题 以下命令 syms x real; f = @(x) log(x^2)*exp(-1/(x^2)); fp(x) = diff(f(x),x); fpp(x) = diff(fp(x),x); 和 solve(fpp(x)>0,x,'Real',true) 返回结果 解决([0.0 < (8.0*exp(-1.0/x^2))/x^4 - (2.0*exp(-1.0/x^2))/x^2 - (6.0*log(x^2) *exp(-1.0/x^2))/x^4 + (4.0*log(x^2)*exp(-1.0/x^2))/x^6], [x == RD_NINF..RD_INF ]) 这不是我所期望的。 第一个问题:是否可以强制Matlab的solve返回所有解的集合? (这与这个问题有关。)此外,当我尝试解方程时 solve(fpp(x)==0,x,'Real',true) 返回 年 = -1.5056100417680902125994180096313 我不满意,因为没有返回所有解决方案(它们大约是从 WolframAlpha 获得的 -1.5056、1.5056、-0.5663 和 0.5663)。 我知道带有一些初步猜测的vpasolve可以处理这个问题。 但是,我不知道我通常如何找到初始猜测值来获得所有解决方案,这是我的第二个问题。 欢迎其他解决这些问题的解决方案或建议。

2021-06-12 03:12:52    分类:技术分享    matlab   solver   symbolic-math   symbolic-computation

C++中的符号计算(symbolic computation in C++)

问题 我需要在 C++ 中进行分析集成。 例如,我应该整合这样的表达式: exp[I(xy)] , I是一个虚数。 我怎样才能在 C++ 中做到这一点? 我试过 GiNaC,但它只能对多项式进行积分。 我也尝试过 SymbolicC++。 它可以集成sine 、 cosine或exp(x)和ln(x)等ln(x) ,但它不是很强大。 例如,它不能对x*ln(x)进行积分,而x*ln(x)可以通过使用 Mathematica 或分部积分很容易获得。 是否有任何其他工具或库可以进行符号计算,例如 C++ 中的分析集成? 回答1 如果您需要进行符号集成,那么您可能不会比在 mathematica 或 maxima 中运行它更快——它们已经用(类似)C++ 编写了。 因此,除非您的方程有一个非常具体的公式,您可以以 Mathematica 或 Maxima 无法利用的方式加以利用,否则您可能不走运——至少您不会从现成的图书馆。 如果您需要进行数值求解,您可能有理由编写自己的代码来提高速度。 (我知道我是为生成偏微分方程的数值解而做的)。 回答2 我所知道的其他进行符号计算的 C++ 库是 SymEngine (https://github.com/symengine/symengine) 食人鱼 (https://github.com/bluescarni/piranha)

2021-06-03 03:03:23    分类:技术分享    c++   symbolic-computation