# How create a mps like (|up\>+|Dn\>)\_1(|up\>-|Dn\>)\_2|up\>+|Dn\>)\_3(|up\>-|Dn\>)\_4....

**URL:** <https://itensor.discourse.group/t/how-create-a-mps-like-up-dn-1-up-dn-2-up-dn-3-up-dn-4/849>\
**Category:** ITensor C++ Questions\
**Tags:** mps\
**Created:** [May 11, 2023, 1:17am UTC](https://itensor.discourse.group/t/how-create-a-mps-like-up-dn-1-up-dn-2-up-dn-3-up-dn-4/849 "2023-05-11T01:17:27Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![Jren](https://avatars.discourse-cdn.com/v4/letter/j/ecccb3/32.png) [@Jren](https://itensor.discourse.group/u/Jren)\
**Post date:** [May 11, 2023, 1:17am UTC](https://itensor.discourse.group/t/how-create-a-mps-like-up-dn-1-up-dn-2-up-dn-3-up-dn-4/849/1 "2023-05-11T01:17:28Z")

</div>

Dear evergone，

I need to generate a state in the form MPS. The state is

(|up\>+|dn\>)\_1 (|up\>-|dn\>)\_2 (|up\>+|dn\>)\_3 (|up\>-|dn\>)\_4....(|up\>+|dn\>)\_{N-1} (|up\>-|dn\>)\_N.

Looking forward to your reply  
Thanks

---

<div class="post-metadata">

**Author:** ![ryanlevy](https://yyz2.discourse-cdn.com/free1/user_avatar/itensor.discourse.group/ryanlevy/32/150_2.png) [@ryanlevy](https://itensor.discourse.group/u/ryanlevy)\
**Post date:** [May 11, 2023, 11:30am UTC](https://itensor.discourse.group/t/how-create-a-mps-like-up-dn-1-up-dn-2-up-dn-3-up-dn-4/849/2 "2023-05-11T11:30:51Z")

</div>

The [Hadamard gate](https://en.wikipedia.org/wiki/Quantum_logic_gate#Hadamard_gate) (or matrix) acting on up or down will do this for you  
 H|\uparrow\rangle = 1/\sqrt{2} (|\uparrow\rangle +|\downarrow\rangle) \\ H|\downarrow\rangle = 1/\sqrt{2} (|\uparrow\rangle -|\downarrow\rangle)  
So start with the antiferromagnetic |\uparrow\downarrow\uparrow\dots\uparrow\downarrow\rangle state as an MPS, then apply the single site itensor/gate to each site. This isn’t built in to the C++ version, so you’ll need to make the `op` yourself (It’s built in to the [Julia version](https://itensor.github.io/ITensors.jl/stable/IncludedSiteTypes.html)))

You can also just write out the tensors directly if thats easier, this is a MPS with bond dimension of 1

---

<div class="post-metadata">

**Author:** ![Jren](https://avatars.discourse-cdn.com/v4/letter/j/ecccb3/32.png) [@Jren](https://itensor.discourse.group/u/Jren)\
**Post date:** [May 19, 2023, 7:02am UTC](https://itensor.discourse.group/t/how-create-a-mps-like-up-dn-1-up-dn-2-up-dn-3-up-dn-4/849/3 "2023-05-19T07:02:27Z")

</div>

Thanks.  
I solved this problem，for Spin-1 chain

auto psiz4 = MPS(sites);  
for(int i=1; i\<=N; i++){  
if(i%2==1 ){  
auto si = sites(i);  
auto wf = ITensor(si);  
wf.set(si(1), 1./sqrt(2));  
wf.set(si(2), 0.0) ;  
wf.set(si(3), 1./sqrt(2));  
psiz4.setA(i,wf);  
}  
else  
{  
auto si = sites(i);  
auto wf = ITensor(si);  
wf.set(si(1), 1./sqrt(2));  
wf.set(si(2), 0.0) ;  
wf.set(si(3), -1./sqrt(2));  
psiz4.setA(i,wf);}  
}

---

<div class="post-metadata">

**Author:** ![ryanlevy](https://yyz2.discourse-cdn.com/free1/user_avatar/itensor.discourse.group/ryanlevy/32/150_2.png) [@ryanlevy](https://itensor.discourse.group/u/ryanlevy)\
**Post date:** [May 19, 2023, 7:46pm UTC](https://itensor.discourse.group/t/how-create-a-mps-like-up-dn-1-up-dn-2-up-dn-3-up-dn-4/849/4 "2023-05-19T19:46:17Z")

</div>

Great! Just a small thing, be careful since the MPS you created has no link indices, so certain algorithms may not work as expected (e.g. `inner(psiz4,H,psiz4)` will error but DMRG seems to work)

---

<div class="post-metadata">

**Author:** ![miles](https://yyz2.discourse-cdn.com/free1/user_avatar/itensor.discourse.group/miles/32/6_2.png) [@miles](https://itensor.discourse.group/u/miles)\
**Post date:** [May 19, 2023, 9:26pm UTC](https://itensor.discourse.group/t/how-create-a-mps-like-up-dn-1-up-dn-2-up-dn-3-up-dn-4/849/5 "2023-05-19T21:26:42Z")

</div>

Good point, Ryan.

Jie, as a workaround in case you have any issues related to the lack of link indices, you can just call:  
`orthogonalize!(psi,1)`  
on your MPS `psi` and that ought to put the link indices in for you.

---

<div class="post-metadata">

**Author:** ![Jren](https://avatars.discourse-cdn.com/v4/letter/j/ecccb3/32.png) [@Jren](https://itensor.discourse.group/u/Jren)\
**Post date:** [May 20, 2023, 9:12am UTC](https://itensor.discourse.group/t/how-create-a-mps-like-up-dn-1-up-dn-2-up-dn-3-up-dn-4/849/6 "2023-05-20T09:12:52Z")

</div>

I use function Apply,inner(psiz4,Apply(H,psiz4)). Yours is better.
