# How to decompose a 4th order tensor

16 views (last 30 days)
Derek Cooper on 3 Feb 2021
Edited: Derek Cooper on 4 Feb 2021
Hello
Is there any matlab function to decompose a 4th order tensor?

Christine Tobler on 3 Feb 2021
The value of K1111 is overwritten with the next value in every loop iteration - is this your intention, or did you maybe mean to add them up? That is, for example,
K1111 = K1111 + inv(J) * F(a,A) * F(b,B) * K(A,B,K,D) * F(K,K) * F(d,D);
I'm also getting the impression you're using the same variable name K for both the iterator in the for-loop and the tensor K you're operating on. The formula you wrote up was using F(c, C) instead of F(K, K) in the code.
##### 2 CommentsShowHide 1 older comment
Christine Tobler on 3 Feb 2021
But your code is using K(A, B, K, D), not K(A, B, C, D). Can you confirm if this is correct? I don't think the code matches up with the definition you've written above, but I'm not sure which of the two fits what you want to compute.

Derek Cooper on 3 Feb 2021
Edited: Derek Cooper on 3 Feb 2021
Sorry you are right, it should be K(A,B,C,D), and is components of D. so maybe its appropriate to write it as D(A,B,C,D).
##### 2 CommentsShowHide 1 older comment
Derek Cooper on 3 Feb 2021
D is a 3x3 matrix, not a 4 dimentional array. The reason why ABCD is used is because if K1111 is sought, then the value of D(1,1) should be taken since K1111 belongs to the same position as D(1,1)