Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wolfram mathematica 使数学过程自动化:我需要大量的结果,然后我得到一个_Wolfram Mathematica - Fatal编程技术网

Wolfram mathematica 使数学过程自动化:我需要大量的结果,然后我得到一个

Wolfram mathematica 使数学过程自动化:我需要大量的结果,然后我得到一个,wolfram-mathematica,Wolfram Mathematica,我有以下mathematica中的简单代码,这就是我想要的单个输出。但是我想要成百上千的。我该怎么办 Clear["Global`*"] k = 2; Put["phiout"]; Put["omegadiffout"]; Random[NormalDistribution[0, 0.1]]; For[i = 1, i < 31, rnd[i] = Random[NormalDistribution[0, 0.1]]; i++] Table[rnd[i], {i, 1, 30}

我有以下mathematica中的简单代码,这就是我想要的单个输出。但是我想要成百上千的。我该怎么办

Clear["Global`*"]


k = 2; Put["phiout"]; Put["omegadiffout"];

Random[NormalDistribution[0, 0.1]];

For[i = 1, i < 31,
 rnd[i] = Random[NormalDistribution[0, 0.1]]; i++]

Table[rnd[i], {i, 1, 30}]

For[i = 1, i < 30,
 rnddf[i] = rnd[i + 1] - rnd[i]; i++
 ]

diffomega = Table [rnddf[i], {i, 1, 29}];


Table[
  Table [rnddf[i], {i, 1, 29}], {j, 1, 100}];

PutAppend[Table[
  diffomega, {j, 1, 100}] , "diffomega"]


eqs0 = Table  [
   k*phi[i + 1] + k*phi[i - 1] - 2*k*phi[i] - rnddf[i] == 0, {i, 1, 
    28}];

eqs1 = eqs0 /. {phi[0] -> phi[30], phi[31] -> phi[1]};

Sum[phi[i], {i, 1, 29}];

eqs2 = Append[eqs1, - phi[1] - phi[27] - 3 phi[29] == 0];

eqs3 = eqs2 /. {phi[30] -> -Sum[phi[i], {i, 1, 29}]};

vars = Table  [phi[i], {i, 1, 29}];

eqs = NSolve[eqs3, vars];

PutAppend[diffomega, eqs , "phiout"]
清除[“全局”*]
k=2;放[“出去”];放[“欧米伽迪夫”];
随机[正态分布[0,0.1];
对于[i=1,i<31,
rnd[i]=随机[正态分布[0,0.1]];i++]
表[rnd[i],{i,1,30}]
对于[i=1,i<30,
rnddf[i]=rnd[i+1]-rnd[i];i++
]
diffomega=表[rnddf[i],{i,1,29}];
桌子[
表[rnddf[i],{i,1,29}],{j,1100}];
PutAppend[表格][
diffomega,{j,1100}],“diffomega”]
等式0=表[
k*phi[i+1]+k*phi[i-1]-2*k*phi[i]-rnddf[i]==0,{i,1,
28}];
等式1=等式0/。{phi[0]->phi[30],phi[31]->phi[1]};
和[phi[i],{i,1,29}];
等式2=附加[eqs1,-phi[1]-phi[27]-3 phi[29]==0];
等式3=等式2/。{phi[30]>-Sum[phi[i],{i,1,29}};
vars=表[phi[i],{i,1,29}];
方程=NSolve[eqs3,vars];
PutAppend[diffomega,等式,“phiout”]
这只将最后一个值放入文件“phiout”和“omegadiffout”。我需要几百个。对于每个随机生成,我需要一个输出


提前谢谢

保罗,你需要做的第一件事是整理你的Mathematica,这样你和我们就可以看到树木中的树木了。例如,您的第8条声明:

Table[
  Table [rnddf[i], {i, 1, 29}], {j, 1, 100}];
生成一个大表,但该表未指定给变量或以任何其他方式使用。似乎还有其他语句的结果也没有被使用

接下来,你应该放弃你的
For
循环,使用Mathematica习语——这些习语对于我们这些经常使用Mathematica的人来说更容易理解,更容易编写,而且可能也更有效。你的陈述

For[i = 1, i < 31,
 rnd[i] = Random[NormalDistribution[0, 0.1]]; i++]

Table[rnd[i], {i, 1, 30}]

For[i = 1, i < 30,
 rnddf[i] = rnd[i + 1] - rnd[i]; i++
 ]

diffomega = Table [rnddf[i], {i, 1, 29}];
永远记住,如果你在用Mathematica写循环,你可能会犯错误。您应该做的下一个更改是停止使用
Put
PutAppend
,直到您可以在内存中构建至少一个要编写的整个输出的小示例。然后使用
保存
导出
或其他高级I/O函数之一一次性将其写入文件


当您完成这项工作后,编辑您的代码并解释您正在尝试做什么,我和其他SOER将尝试进一步提供帮助。不幸的是,现在,你的代码太不数学了,我很难理解。

保罗,你需要做的第一件事是整理你的数学,这样你和我们可以看到树木中的树木。例如,您的第8条声明:

Table[
  Table [rnddf[i], {i, 1, 29}], {j, 1, 100}];
生成一个大表,但该表未指定给变量或以任何其他方式使用。似乎还有其他语句的结果也没有被使用

接下来,你应该放弃你的
For
循环,使用Mathematica习语——这些习语对于我们这些经常使用Mathematica的人来说更容易理解,更容易编写,而且可能也更有效。你的陈述

For[i = 1, i < 31,
 rnd[i] = Random[NormalDistribution[0, 0.1]]; i++]

Table[rnd[i], {i, 1, 30}]

For[i = 1, i < 30,
 rnddf[i] = rnd[i + 1] - rnd[i]; i++
 ]

diffomega = Table [rnddf[i], {i, 1, 29}];
永远记住,如果你在用Mathematica写循环,你可能会犯错误。您应该做的下一个更改是停止使用
Put
PutAppend
,直到您可以在内存中构建至少一个要编写的整个输出的小示例。然后使用
保存
导出
或其他高级I/O函数之一一次性将其写入文件


当您完成这项工作后,编辑您的代码并解释您正在尝试做什么,我和其他SOER将尝试进一步提供帮助。不幸的是,现在,您的代码太不数学了,我很难理解。

第三行是做什么的?另外,你能缩进环体吗?这很难理解。目前你似乎根本没有为“omegadiffout”写任何东西,尽管你正在为“diffomega”写100份
diffomega
。看起来您应该能够通过将相关部分包装在[…]的
循环中来重复代码-这不起作用吗?第三行做什么?另外,你能缩进环体吗?这很难理解。目前你似乎根本没有为“omegadiffout”写任何东西,尽管你正在为“diffomega”写100份
diffomega
。看起来您应该能够通过将相关部分包装在[…]的
循环中来重复代码-这不起作用吗?当您想要从随机分布中提取大量实数时,您甚至不需要
;只需使用第二个参数
RandomReal
。当您想从随机分布中提取大量real时,甚至不需要
;只需使用第二个参数
RandomReal