matlab for嵌套优化,matlab – 嵌套循环优化

我真的很难在MATLAB上优化微积分代码.

这是获得非线性材料的材料特性所需的大量计算.

此计算需要超过2.4亿步.

它本身相当简单,因为它包含大量的金额.

唯一的问题是数字存储在各种数组和列表中,这有点令人困惑.

这是原始代码:

Tensor=zeros(3,3,3,3);

for m=1:3

for n=1:3

for o=1:3

for p=1:3

for x=1:16

for y=1:16

for z=1:16

for i=1:3

for j=1:3

for k=1:3

for l=1:3

for r=1:3

for s=1:3

sum=sum+(1/(8*(pi()^2))*P{x,y,z}(i,m)*P{x,y,z}(j,n)*P{x,y,z}(k,o)*P{x,y,z}(l,p)*(TensorC(i,j,k,l)-TensorC0(i,j,r,s))*TensorA(r,s,k,l)*sin(omega(x))*p_omega(x)*p_phi(y)*p_beta(z);

end

end

end

end

end

end

end

end

end

Tensor(m,n,o,p)=sum;

end

end

end

end

P {x,y,z}(i,m)是基础公式的变化(对于其他公式相同):i和m确定公式的类型,并且使用x,y和z变量计算结果.

求和中的所有其他数字都是在数组和张量中拾取的实数.

我试图从最后一个for循环中提取尽可能多的变量,以便尽快计算它们减少操作次数:

Tensor=zeros(3,3,3,3);

CO1=1/(8*(pi()^2));

for m=1:3

for n=1:3

for o=1:3

for p=1:3

sum=C0_tensor(m,n,o,p);

for x=1:16

CO7=sin(omega(x));

CO8=p_omega(x);

for y=1:16

CO9=p_phi(y);

for z=1:16

CO10=p_beta(z);

for i=1:3

CO2=P{x,y,z}(i,m);

for j=1:3

CO3=P{x,y,z}(j,n);

for k=1:3

CO4=P{x,y,z}(k,o);

for l=1:3

CO5=P{x,y,z}(l,p);

CO6=TensorC(i,j,k,l);

for r=1:3

for s=1:3

CO11=TensorC0(i,j,r,s);

CO12=TensorA(r,s,k,l);

sum=sum+CO1*CO2*CO3*CO4*CO5*(CO6-CO11)*CO12*CO7*CO8*CO9*CO10;

end

end

end

end

end

end

end

end

end

Tensor(m,n,o,p)=sum;

end

end

end

end

但是,计算时间太长了.

我没有看到任何并行化或矢量化计算的方法……

从一个数组或一个矩阵中检索一个特定值的操作似乎非常慢……

你认为我应该构建一个包含所有值的巨大张量而不是使用倍数吗?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值