Wolfram mathematica 在mathematica中,如何将结果放入表格或数组中?

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++,

嗨 我有一个数字列表,例如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++, 
  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}
原则上,答案不是唯一的——可能有几个不同的长度相同的最长递增子序列