QuTiP: Resolving inconsistent Qobj shapes
This was previously explored in QuTiP TypeError: Incompatible Qobj shapes with tensor product but I'm not sure about the answer there.
Suppose I define A = tensor(qeye(2), qeye(2))
and B = qeye(4)
, I cannot multiply them because the object shapes are inconsistent.
However, the matrices are of the same dimension and I would like to "flatten" A
to allow it to be multiplied by B
. If I have a combination of seperable operators and non-seperable ones, how do I use them together? In other words, B
cannot be simplified further so what should I do to A
to allow them to be multiplied?
EDIT: The clunky looking Qobj(A.data.toarray()) works but I'll leave this open in case someone has a better idea or understands why QuTiP does this.
python qutip
add a comment |
This was previously explored in QuTiP TypeError: Incompatible Qobj shapes with tensor product but I'm not sure about the answer there.
Suppose I define A = tensor(qeye(2), qeye(2))
and B = qeye(4)
, I cannot multiply them because the object shapes are inconsistent.
However, the matrices are of the same dimension and I would like to "flatten" A
to allow it to be multiplied by B
. If I have a combination of seperable operators and non-seperable ones, how do I use them together? In other words, B
cannot be simplified further so what should I do to A
to allow them to be multiplied?
EDIT: The clunky looking Qobj(A.data.toarray()) works but I'll leave this open in case someone has a better idea or understands why QuTiP does this.
python qutip
add a comment |
This was previously explored in QuTiP TypeError: Incompatible Qobj shapes with tensor product but I'm not sure about the answer there.
Suppose I define A = tensor(qeye(2), qeye(2))
and B = qeye(4)
, I cannot multiply them because the object shapes are inconsistent.
However, the matrices are of the same dimension and I would like to "flatten" A
to allow it to be multiplied by B
. If I have a combination of seperable operators and non-seperable ones, how do I use them together? In other words, B
cannot be simplified further so what should I do to A
to allow them to be multiplied?
EDIT: The clunky looking Qobj(A.data.toarray()) works but I'll leave this open in case someone has a better idea or understands why QuTiP does this.
python qutip
This was previously explored in QuTiP TypeError: Incompatible Qobj shapes with tensor product but I'm not sure about the answer there.
Suppose I define A = tensor(qeye(2), qeye(2))
and B = qeye(4)
, I cannot multiply them because the object shapes are inconsistent.
However, the matrices are of the same dimension and I would like to "flatten" A
to allow it to be multiplied by B
. If I have a combination of seperable operators and non-seperable ones, how do I use them together? In other words, B
cannot be simplified further so what should I do to A
to allow them to be multiplied?
EDIT: The clunky looking Qobj(A.data.toarray()) works but I'll leave this open in case someone has a better idea or understands why QuTiP does this.
python qutip
python qutip
edited Nov 13 '18 at 0:27
user1936752
asked Nov 12 '18 at 19:06
user1936752user1936752
231312
231312
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
Yes using Qobj.data
you get the matrix representing the state or operator.
Hence A.data * B.data
allows you to multiply them together. Once you've done that you can enclose it in Qobj(A.data * B.data)
to make it a quantum object.
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53268561%2fqutip-resolving-inconsistent-qobj-shapes%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
Yes using Qobj.data
you get the matrix representing the state or operator.
Hence A.data * B.data
allows you to multiply them together. Once you've done that you can enclose it in Qobj(A.data * B.data)
to make it a quantum object.
add a comment |
Yes using Qobj.data
you get the matrix representing the state or operator.
Hence A.data * B.data
allows you to multiply them together. Once you've done that you can enclose it in Qobj(A.data * B.data)
to make it a quantum object.
add a comment |
Yes using Qobj.data
you get the matrix representing the state or operator.
Hence A.data * B.data
allows you to multiply them together. Once you've done that you can enclose it in Qobj(A.data * B.data)
to make it a quantum object.
Yes using Qobj.data
you get the matrix representing the state or operator.
Hence A.data * B.data
allows you to multiply them together. Once you've done that you can enclose it in Qobj(A.data * B.data)
to make it a quantum object.
edited Nov 14 '18 at 11:58
answered Nov 13 '18 at 19:12
TurbotantenTurbotanten
1978
1978
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53268561%2fqutip-resolving-inconsistent-qobj-shapes%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown