How is the Jacobian matrix computed in finite difference problems?
$begingroup$
I have come across many papers which reference the Jacobian when solving certain finite difference inverse problems. And I have seen many articles and textbooks which discuss the mathematical properties of the Jacobian in an abstract sense. I have also seen examples for calculating the Jacobian when the functions are known and analytic.
But, amidst all this, I still have no idea how to sit down at my computer and compute a Jacobian for real data and non-analytic functions.
For example, I have some predicted data vector, $mathbf{f}$ and some model vector, $mathbf{m}$.
The Jacobian is defined as:
$$mathbf{J}_{ij} = frac{partial f_i}{partial m_j} $$
But how can this actually be computed?
Note, I have come across many answers that say that you can compute them using finite differences (for example, see this answer here). In this case, we can say:
$$mathbf{F}(mathbf{m}) = f_1(mathbf{m})mathbf{i}+f_2(mathbf{m})mathbf{j}+f_3(mathbf{m})mathbf{k}+...$$
and so the Jacobian is defined via finite difference with some model perturbation:
$$mathbf{J}_{ij} = frac{f_i(m_j+Delta m)-f_i(m_j)}{Delta m}$$
However, this method requires me to solve $mathbf{F}(mathbf{m})$ for every predicted function for every model perturbation. My particular problem involves thousands of predicted points and millions of model parameters and each function evaluation takes minutes to hours. It is not feasible to use the method suggested.
Any explanation or resources are appreciated.
derivatives pde mathematical-modeling jacobian inverse-problems
$endgroup$
add a comment |
$begingroup$
I have come across many papers which reference the Jacobian when solving certain finite difference inverse problems. And I have seen many articles and textbooks which discuss the mathematical properties of the Jacobian in an abstract sense. I have also seen examples for calculating the Jacobian when the functions are known and analytic.
But, amidst all this, I still have no idea how to sit down at my computer and compute a Jacobian for real data and non-analytic functions.
For example, I have some predicted data vector, $mathbf{f}$ and some model vector, $mathbf{m}$.
The Jacobian is defined as:
$$mathbf{J}_{ij} = frac{partial f_i}{partial m_j} $$
But how can this actually be computed?
Note, I have come across many answers that say that you can compute them using finite differences (for example, see this answer here). In this case, we can say:
$$mathbf{F}(mathbf{m}) = f_1(mathbf{m})mathbf{i}+f_2(mathbf{m})mathbf{j}+f_3(mathbf{m})mathbf{k}+...$$
and so the Jacobian is defined via finite difference with some model perturbation:
$$mathbf{J}_{ij} = frac{f_i(m_j+Delta m)-f_i(m_j)}{Delta m}$$
However, this method requires me to solve $mathbf{F}(mathbf{m})$ for every predicted function for every model perturbation. My particular problem involves thousands of predicted points and millions of model parameters and each function evaluation takes minutes to hours. It is not feasible to use the method suggested.
Any explanation or resources are appreciated.
derivatives pde mathematical-modeling jacobian inverse-problems
$endgroup$
$begingroup$
Assuming everything else is being done by finite differences (so the data are on a grid rather than an unstructured mesh), the derivatives are usually themselves evaluated by finite differences.
$endgroup$
– Ian
Dec 6 '18 at 19:50
$begingroup$
I have updated the answer to clarify why doing many function calls for different finite difference perturbation will not work (at least the way I am understanding it)
$endgroup$
– Darcy
Dec 6 '18 at 19:58
$begingroup$
If $J$ has a million entries or more and each function evaluation takes a minute then most likely a method dependent on the Jacobian is not the right fit for your problem. You might say what you're trying to learn about $mathbf{F}$ so that we might send you in the right direction.
$endgroup$
– Ian
Dec 6 '18 at 22:11
add a comment |
$begingroup$
I have come across many papers which reference the Jacobian when solving certain finite difference inverse problems. And I have seen many articles and textbooks which discuss the mathematical properties of the Jacobian in an abstract sense. I have also seen examples for calculating the Jacobian when the functions are known and analytic.
But, amidst all this, I still have no idea how to sit down at my computer and compute a Jacobian for real data and non-analytic functions.
For example, I have some predicted data vector, $mathbf{f}$ and some model vector, $mathbf{m}$.
The Jacobian is defined as:
$$mathbf{J}_{ij} = frac{partial f_i}{partial m_j} $$
But how can this actually be computed?
Note, I have come across many answers that say that you can compute them using finite differences (for example, see this answer here). In this case, we can say:
$$mathbf{F}(mathbf{m}) = f_1(mathbf{m})mathbf{i}+f_2(mathbf{m})mathbf{j}+f_3(mathbf{m})mathbf{k}+...$$
and so the Jacobian is defined via finite difference with some model perturbation:
$$mathbf{J}_{ij} = frac{f_i(m_j+Delta m)-f_i(m_j)}{Delta m}$$
However, this method requires me to solve $mathbf{F}(mathbf{m})$ for every predicted function for every model perturbation. My particular problem involves thousands of predicted points and millions of model parameters and each function evaluation takes minutes to hours. It is not feasible to use the method suggested.
Any explanation or resources are appreciated.
derivatives pde mathematical-modeling jacobian inverse-problems
$endgroup$
I have come across many papers which reference the Jacobian when solving certain finite difference inverse problems. And I have seen many articles and textbooks which discuss the mathematical properties of the Jacobian in an abstract sense. I have also seen examples for calculating the Jacobian when the functions are known and analytic.
But, amidst all this, I still have no idea how to sit down at my computer and compute a Jacobian for real data and non-analytic functions.
For example, I have some predicted data vector, $mathbf{f}$ and some model vector, $mathbf{m}$.
The Jacobian is defined as:
$$mathbf{J}_{ij} = frac{partial f_i}{partial m_j} $$
But how can this actually be computed?
Note, I have come across many answers that say that you can compute them using finite differences (for example, see this answer here). In this case, we can say:
$$mathbf{F}(mathbf{m}) = f_1(mathbf{m})mathbf{i}+f_2(mathbf{m})mathbf{j}+f_3(mathbf{m})mathbf{k}+...$$
and so the Jacobian is defined via finite difference with some model perturbation:
$$mathbf{J}_{ij} = frac{f_i(m_j+Delta m)-f_i(m_j)}{Delta m}$$
However, this method requires me to solve $mathbf{F}(mathbf{m})$ for every predicted function for every model perturbation. My particular problem involves thousands of predicted points and millions of model parameters and each function evaluation takes minutes to hours. It is not feasible to use the method suggested.
Any explanation or resources are appreciated.
derivatives pde mathematical-modeling jacobian inverse-problems
derivatives pde mathematical-modeling jacobian inverse-problems
edited Dec 6 '18 at 19:58
Darcy
asked Dec 6 '18 at 19:46
DarcyDarcy
254311
254311
$begingroup$
Assuming everything else is being done by finite differences (so the data are on a grid rather than an unstructured mesh), the derivatives are usually themselves evaluated by finite differences.
$endgroup$
– Ian
Dec 6 '18 at 19:50
$begingroup$
I have updated the answer to clarify why doing many function calls for different finite difference perturbation will not work (at least the way I am understanding it)
$endgroup$
– Darcy
Dec 6 '18 at 19:58
$begingroup$
If $J$ has a million entries or more and each function evaluation takes a minute then most likely a method dependent on the Jacobian is not the right fit for your problem. You might say what you're trying to learn about $mathbf{F}$ so that we might send you in the right direction.
$endgroup$
– Ian
Dec 6 '18 at 22:11
add a comment |
$begingroup$
Assuming everything else is being done by finite differences (so the data are on a grid rather than an unstructured mesh), the derivatives are usually themselves evaluated by finite differences.
$endgroup$
– Ian
Dec 6 '18 at 19:50
$begingroup$
I have updated the answer to clarify why doing many function calls for different finite difference perturbation will not work (at least the way I am understanding it)
$endgroup$
– Darcy
Dec 6 '18 at 19:58
$begingroup$
If $J$ has a million entries or more and each function evaluation takes a minute then most likely a method dependent on the Jacobian is not the right fit for your problem. You might say what you're trying to learn about $mathbf{F}$ so that we might send you in the right direction.
$endgroup$
– Ian
Dec 6 '18 at 22:11
$begingroup$
Assuming everything else is being done by finite differences (so the data are on a grid rather than an unstructured mesh), the derivatives are usually themselves evaluated by finite differences.
$endgroup$
– Ian
Dec 6 '18 at 19:50
$begingroup$
Assuming everything else is being done by finite differences (so the data are on a grid rather than an unstructured mesh), the derivatives are usually themselves evaluated by finite differences.
$endgroup$
– Ian
Dec 6 '18 at 19:50
$begingroup$
I have updated the answer to clarify why doing many function calls for different finite difference perturbation will not work (at least the way I am understanding it)
$endgroup$
– Darcy
Dec 6 '18 at 19:58
$begingroup$
I have updated the answer to clarify why doing many function calls for different finite difference perturbation will not work (at least the way I am understanding it)
$endgroup$
– Darcy
Dec 6 '18 at 19:58
$begingroup$
If $J$ has a million entries or more and each function evaluation takes a minute then most likely a method dependent on the Jacobian is not the right fit for your problem. You might say what you're trying to learn about $mathbf{F}$ so that we might send you in the right direction.
$endgroup$
– Ian
Dec 6 '18 at 22:11
$begingroup$
If $J$ has a million entries or more and each function evaluation takes a minute then most likely a method dependent on the Jacobian is not the right fit for your problem. You might say what you're trying to learn about $mathbf{F}$ so that we might send you in the right direction.
$endgroup$
– Ian
Dec 6 '18 at 22:11
add a comment |
0
active
oldest
votes
Your Answer
StackExchange.ifUsing("editor", function () {
return StackExchange.using("mathjaxEditing", function () {
StackExchange.MarkdownEditor.creationCallbacks.add(function (editor, postfix) {
StackExchange.mathjaxEditing.prepareWmdForMathJax(editor, postfix, [["$", "$"], ["\\(","\\)"]]);
});
});
}, "mathjax-editing");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "69"
};
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
},
noCode: 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%2fmath.stackexchange.com%2fquestions%2f3028953%2fhow-is-the-jacobian-matrix-computed-in-finite-difference-problems%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
0
active
oldest
votes
0
active
oldest
votes
active
oldest
votes
active
oldest
votes
Thanks for contributing an answer to Mathematics Stack Exchange!
- 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.
Use MathJax to format equations. MathJax reference.
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%2fmath.stackexchange.com%2fquestions%2f3028953%2fhow-is-the-jacobian-matrix-computed-in-finite-difference-problems%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
$begingroup$
Assuming everything else is being done by finite differences (so the data are on a grid rather than an unstructured mesh), the derivatives are usually themselves evaluated by finite differences.
$endgroup$
– Ian
Dec 6 '18 at 19:50
$begingroup$
I have updated the answer to clarify why doing many function calls for different finite difference perturbation will not work (at least the way I am understanding it)
$endgroup$
– Darcy
Dec 6 '18 at 19:58
$begingroup$
If $J$ has a million entries or more and each function evaluation takes a minute then most likely a method dependent on the Jacobian is not the right fit for your problem. You might say what you're trying to learn about $mathbf{F}$ so that we might send you in the right direction.
$endgroup$
– Ian
Dec 6 '18 at 22:11