24小时热门版块排行榜    

查看: 692  |  回复: 3
【悬赏金币】回答本帖问题,作者chenye1717将赠送您 18 个金币

chenye1717

新虫 (初入文坛)

[求助] 【请教/求助】Mathematica中如何加速这个常规的三维For Loop语句? 已有1人参与

mathematica中如何加速这个常规的三维for loop语句?

for[i = 1, i <= 1000, i++,
for[j = 1, j <= 1000, j++,
for[k = 1, k <= 1000, k++,
if[x[]^2 + y[[j]]^2 + z[[k]]^2 >= r^2,
funval[[i, j, k]]=
g[x[], y[[j]], z[[k]]], funval[[i, j, k]]= 0.0]]];

我的目标是将有一个在三维空间内(在球体外部,x[]^2 + y[[j]]^2 + z[[k]]^2 >= r^2)构造table (名为funval)存储g函数的离散值。因为g函数比较复杂,所以导致计算速度很慢。
尝试过outer[g, x[], y[[j]], z[[k]]],效果不好,而且好像不能加入“位于球体外”这个限制条件。
请问有加速的方法吗?谢谢大家。
回复此楼

» 猜你喜欢

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zyh700600

金虫 (小有名气)

【答案】应助回帖

感谢参与,应助指数 +1
if[x[]^2 + y[[j]]^2 + z[[k]]^2 >= r^2,
g[x[], y[[j]], z[[k]]

将:
x[]
改为:
x[]
2楼2022-09-10 09:47:41
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zyh700600

金虫 (小有名气)

【答案】应助回帖

引用回帖:
2楼: Originally posted by zyh700600 at 2022-09-10 09:47:41
if[x[]^2 + y[]^2 + z[]^2 &gt;= r^2,
g[x[], y[], z[]

将:
x[]
改为:
x[]

CODE:
if[x[]^2 + y[[j]]^2 + z[[k]]^2 >= r^2,
g[x[], y[[j]], z[[k]]

将:
x[]
改为:
x[[i]]

3楼2022-09-10 09:49:05
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zyh700600

金虫 (小有名气)

【答案】应助回帖

如果找不到加速的方法,可考虑分块计算或试用使用其它软件。
4楼2022-09-13 10:09:10
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 chenye1717 的主题更新
不应助 确定回帖应助 (注意:应助才可能被奖励,但不允许灌水,必须填写15个字符以上)
信息提示
请填处理意见