Loops 网格计算并导出到CSV

Loops 网格计算并导出到CSV,loops,csv,maxima,Loops,Csv,Maxima,我有两组x[xmin,xmax]和y[ymin,ymax],我想执行一个从最小值到最大值的函数x和y。所以我想把一个函数应用于x和y的笛卡尔积。然后,我想将每个组合作为一行保存到CSV文件中。我已经尝试了一段时间的do循环,但最后还是有点纠结于如何创建列表。例如: for x: 1 thru 2 step 1 do for y: 1 thru 2 step 1 do print([x,y,find_root (exp(a*x) = y, a, 0, 1)]) 我会得到x和y的值以及所有组合

我有两组
x
[xmin,xmax]
y
[ymin,ymax]
,我想执行一个从最小值到最大值的函数
x
y
。所以我想把一个函数应用于
x
y
的笛卡尔积。然后,我想将每个组合作为一行保存到CSV文件中。我已经尝试了一段时间的
do
循环,但最后还是有点纠结于如何创建列表。例如:

for x: 1 thru 2 step 1 do 
for y: 1 thru 2 step 1 do 
print([x,y,find_root (exp(a*x) = y, a, 0, 1)])
我会得到
x
y
的值以及所有组合的函数,但我很难保存它并将其导出为CSV,因为我不知道如何创建带有
[[1,1,函数(1,1)],[1,2,函数(1,2)],[2,1,函数(2,1)],[2,2,函数(2,2)]的列表,我可以用
写入数据导出

或者,我想使用:

xlist:makelist(x,x,1,2,1);
ylist:makelist(y,y,1,2,1);
create_list([x,y,x^y],x,xlist,y,ylist);
在这种情况下,我不知道如何在createlist中包含该函数,也不知道如何使用map


我该怎么做,还是有更好的方法?

关于加快100万项列表的构建,如何只解一次方程,然后替换x和y的值?例如:

solve (exp(a*x) = y, a);
my_solution : rhs (first (%));
create_list ([x, y, ev (my_solution)], x, xlist, y, ylist);
此处
ev
使用其包含的变量(即
x
y
)的当前值对
my\u解决方案
进行评估

关于编写CSV文件,请尝试以下操作:

write_data (my_list, "my_output_file", 'comma);

我刚刚意识到createlist实际上接受函数。xlist:makelist(x,x,1,2,1);ylist:makelist(y,y,1,2,1);创建_列表([x,y,find_root(exp(a*x)=y,a,0,1)],x,xlist,y,ylist);但是假设x和y的笛卡尔积有一百万个组合,这可能需要一些时间