我写了一个试图找到Amicable Pairs的程序.这需要找到数字的适当除数的总和.
这是我目前的sumOfDivisors()方法:
int sumOfDivisors(int n)
{
int sum = 1;
int bound = (int) sqrt(n);
for(int i = 2; i <= 1 + bound; i++)
{
if (n % i == 0)
sum = sum + i + n / i;
}
return sum;
}
Run Code Online (Sandbox Code Playgroud)
所以我需要做很多因子分解,这开始成为我应用程序的真正瓶颈.我在MAPLE中输入了一个巨大的数字,它将它快速地考虑在内.
什么是更快的分解算法?
我有离散的规则网格a,b点及其对应的c值,我进一步插值以获得平滑的曲线.现在从插值数据,我还想创建一个曲线拟合的多项式方程.如何在多项式中拟合三维图?
我试着在MATLAB中这样做.我在MATLAB(r2010a)中使用了Surface拟合工具箱来曲线拟合三维数据.但是,如何在MATLAB/MAPLE或任何其他软件中找到适合一组数据的公式以获得最佳效果.有什么建议?最有用的还有一些真实的代码示例,可以在Web上查看PDF文件等.
这只是我数据的一小部分.
a = [ 0.001 .. 0.011];
b = [1, .. 10];
c = [ -.304860225, .. .379710865];
Run Code Online (Sandbox Code Playgroud)
提前致谢.
在尝试解决符号数学问题后,我得到了一个大约17000个字符的表达式.我正在使用Matlab的符号工具箱,但我对任何建议(Mathematica,无论如何)都持开放态度.
出于显而易见的原因,我不会将表达式直接复制粘贴到问题中.这是一个链接.
运行Matlab命令simplify和simple,甚至企图collect没有改善的情况(有些我们更糟糕).
但我想知道,我不关心是否使用时间参数逐步评估表达式.就像是:
z1 = a^2*y1;
%Now the expression can be simplified by using z1 as alias!
z1+z1^2 ....
Run Code Online (Sandbox Code Playgroud)
是否有一种自动方法可以通过时间变量逐步简化这种方法?此外,您可以想到的任何其他方法都是合理的.
我需要将Maple中的动画导入我的LaTeX/Beamer演示文稿中.我以GIF格式保存文件.但后来我在将该文件转换为PNG时遇到了问题.我得到的只是一个静态PNG文件,无法继续(((在LaTeX中,完整的代码是什么?)
是否有算法检查给定(可能是非线性)函数f是否始终为正?
我目前的想法是找到函数的根源(使用newton-raphson算法或类似的技术,参见http://en.wikipedia.org/wiki/Root-finding_algorithm)并检查衍生物或找到最小值f,但它们似乎不是这个问题的最佳解决方案,根查找算法也有很多收敛问题.
例如,在Maple中,函数验证可以做到这一点,但我需要在我自己的程序中实现它.Maple帮助验证:http://www.maplesoft.com/support/help/Maple/view.aspx? path = verify/function_shells Maple示例:assume(x,'real'); 验证(x ^ 2 + 1,0,'greater_than'); - >返回true,因为对于每个x我们都有x ^ 2 + 1> 0
[编辑]问题的一些背景:函数$ f $是电路的右手微分非线性模型.非线性电路可以通过应用修改的节点分析(MNA)建模为一组常微分方程,为简单起见,我们只考虑具有1维的系统,因此$ x'= f(x)$其中$ f $描述电路,例如$ f $可以是$ f(x)= 10x - 100x ^ 2 + 200x ^ 3 - 300x ^ 4 + 100x ^ 5 $(非线性隧道二极管的模型)或$ f = 10 - 2sin (4x)+ 3x $(约瑟夫森交界处的模型).
$ x $是有界的,$ f $仅在R $的区间$ [a,b] \中定义.$ f $是连续的.我也可以假设$ f $是Lipschitz,Lipschitz常数L> 0,但我不想,除非我必须.
我有一个大矩阵,n!xn !,我需要采取决定因素.对于n的每个排列,我都联想到了
矩阵是向量处的多项式的评估矩阵(被认为是点).因此,矩阵的sigma,tau入口(由置换索引)是在tau的向量处评估的sigma的多项式.
示例:对于n=3,如果第ith个多项式是(x1 - 4)(x3 - 5)(x4 - 4)(x6 - 1)并且第jth个是(2,2,1,3,5,2),那么(i,j)矩阵的第th个条目将是(2 - 4)(1 - 5)(3 - 4)(2 - 1) = -8.这里n=3,所以点在R^(3!) = R^6,多项式有3!=6变量.
我的目标是确定矩阵是否是非奇异的.
我现在的方法是:
point采用置换并输出向量poly采用置换并输出多项式nextPerm以字典顺序给出下一个排列我的代码的删节伪代码版本是这样的:
B := [];
P := [];
w := [1,2,...,n];
while w <> NULL do
B := B append poly(w);
P := …Run Code Online (Sandbox Code Playgroud) 我想知道是否有办法在Octave/matlab中进行模式匹配?我知道Maple 10有命令这样做但不确定我需要在Octave/Matlab中做什么.因此,如果一个数字是12341234123412341234模式匹配将是1234.我试图找到重复生成整个字符串的最短模式.
请注意:数字(仅使用数字)不会这么简单.另外,我不会提前知道这个模式(这就是我想要找到的).请参阅下面的Maple 10示例,该示例显示模式未提前知道,但命令找到模式.
Maple 10模式匹配示例:
ns:=convert(12341234123412341234,string);
ns := "12341234123412341234"
StringTools:-PrimitiveRoot(ns);
"1234"
Run Code Online (Sandbox Code Playgroud)
我如何在Octave/Matlab中执行此操作?Ps:我正在使用Octave 3.8.1
Maple表达式(例如,x ^ 3 + x*y)可以转换为Matlab
with(CodeGeneration):
Matlab(x^3+x*y);
Run Code Online (Sandbox Code Playgroud)
然而,在Matlab中,有两种产品:A*B和A.*B.上面的方法将给出x ^ 3 + x*y.有没有方便的方法来获得结果x.^ 3 + x.*y?
在Mathematica中,几乎所有命令都自动在列表上进行线程化(或映射).
在Maple中,如何确定哪个命令自动作用于列表或集合的条目?
例如:
y+p*x=2*sqrt(x*y);
r:=[solve(%,y)];
Run Code Online (Sandbox Code Playgroud)
这给出了两个条目的列表(解决方案)
#r := [-p*x+(2*(1+sqrt(1-p)))*x, -p*x+(2*(1-sqrt(1-p)))*x]
Run Code Online (Sandbox Code Playgroud)
现在我发现collect自动映射每个列表条目
collect(r,x);
# [(-p+2+2*sqrt(1-p))*x, (-p+2-2*sqrt(1-p))*x]
Run Code Online (Sandbox Code Playgroud)
但是另一个命令没有(我刚刚选了这个)
MmaTranslator[Mma][LeafCount](r);
#37
Run Code Online (Sandbox Code Playgroud)
对于上面的内容,需要显式迭代列表或集合的条目.
map(MmaTranslator[Mma][LeafCount],r)
#[17, 19]
Run Code Online (Sandbox Code Playgroud)
在Maple中是否有一种方法可以找到哪个命令自动对列表的条目或除试验和错误之外的集合进行线程化?
Maple 2018.1
在Maple中,taylor(exp(x),x,2);返回1+ x + O(x 2)。如何在删除O(x 2)项的情况下自动将结果转换为相同的表达式?就是removeBigO(taylor(exp(x),x,2));要返回1 + x吗?”