Wolfram mathematica 在mathematica中,如何将结果放入表格或数组中?
嗨 我有一个数字列表,例如k_1,k_2,…k_n,f是一个函数。 现在我在数字列表上应用f,我需要这些数字,使f增加,即Wolfram mathematica 在mathematica中,如何将结果放入表格或数组中?,wolfram-mathematica,Wolfram Mathematica,嗨 我有一个数字列表,例如k_1,k_2,…k_n,f是一个函数。 现在我在数字列表上应用f,我需要这些数字,使f增加,即 f(k_i)>f(k_j) for any i>j . 我可以在不同的行中获得结果编号k_I,但我需要在一个表中使用逗号或其他东西分隔结果,并计算结果的数量 例如: k = Table[k1, k2, k3, k4, k5, k6, k7, k8, k9, k10]; count = 0; i=1; For[j = i, j <= 10, j++,
f(k_i)>f(k_j) for any i>j .
我可以在不同的行中获得结果编号k_I,但我需要在一个表中使用逗号或其他东西分隔结果,并计算结果的数量
例如:
k = Table[k1, k2, k3, k4, k5, k6, k7, k8, k9, k10];
count = 0;
i=1;
For[j = i, j <= 10, j++,
If[f[k[[j]]] - f[k[[i]]] > 0, i = j; Print["k", i];
count = count + 1]];
Print["count= ", count]
但我需要把结果放在一起:
{k2,k3,k5,k9}
count=4
有什么想法吗
谢谢您不必打印,您可以将附加到,即
list={};[列表,5]的附录
开始学习函数式编程方法可能是件好事,因为Mathematica有一些工具可以使它变得高效,您上面的代码可能是这样的
pairs = Partition[list, 2, 1];
increasingPairs = Select[pairs, f[First[#]] < f[Last[#]] &];
Last /@ increasingPairs
pairs=Partition[list,2,1];
increasingPairs=选择[pairs,f[First[#]]
您可以执行附加到
,而不是打印
list={};[列表,5]的附录
开始学习函数式编程方法可能是件好事,因为Mathematica有一些工具可以使它变得高效,您上面的代码可能是这样的
pairs = Partition[list, 2, 1];
increasingPairs = Select[pairs, f[First[#]] < f[Last[#]] &];
Last /@ increasingPairs
pairs=Partition[list,2,1];
increasingPairs=选择[pairs,f[First[#]]
您似乎想要最长的递增子序列。我所知道的在Mathematica中获得它的最简单和最有效的方法是:
lis[f_, vals_List] := LongestCommonSequence[#, Sort[#]] &[Map[f, vals]];
例如:
In[8]:= lis[# &, {5, 3, 6, 1, 5, 7}]
Out[8]= {5, 6, 7}
原则上,答案不是唯一的-可能有几个不同的长度相同的最长递增子序列。您似乎想要最长递增子序列。我所知道的在Mathematica中获得它的最简单和最有效的方法是:
lis[f_, vals_List] := LongestCommonSequence[#, Sort[#]] &[Map[f, vals]];
例如:
In[8]:= lis[# &, {5, 3, 6, 1, 5, 7}]
Out[8]= {5, 6, 7}
原则上,答案不是唯一的——可能有几个不同的长度相同的最长递增子序列