0

我有一个二次方程生成 2 个解 x1,x2,每个解再次生成两个新解。这一直持续到无穷大。

我尝试实现这一点的方法是使用带有向量 r=[x1,x2] 作为输入参数的例程。并使用并行 for 循环计算下一个 2。

不幸的是,循环只继续执行 r[] 的第一个解决方案。

代码如下所示:

r=[1,2];
axyz=fileopen("myfile","w");
test(r)={
 parfor(i=1,2,r[i],c,
  if(c<>1,filewrite(axyz,c); 
   test([x1(c),x2(c)]))
 );
}

test(r);
IF语句是为了防止在统一时保存解决方案。文件写入不是必需的,可以用打印代替。

问题:是否可以确保第二个解决方案也被处理?使函数扩展为生成所有解决方案的无限解决方案树。

4

1 回答 1

0

使用parfor不会达到你想要的。我建议使用深度优先搜索。您的代码不完整(缺少 x1、x2 的定义),因此以下内容未经测试 - 旨在显示必要的更改。

r=[1,2];
axyz=fileopen("myfile","w");
test(r,level)={
for(i=1,2,my(c=r[i]);
   if(c<>1,if(level==0, filewrite(axyz,c),
   test([x1(c),x2(c)], level-1))
 );
}
for(level=0, oo, test(r, level));
于 2019-01-23T20:16:11.850 回答