Solving overdetermined system by QR decomposition Announcing the arrival of Valued Associate #679: Cesar Manara Planned maintenance scheduled April 17/18, 2019 at 00:00UTC (8:00pm US/Eastern)What does QR decomposition have to do with least squares method?Check Whether an Overdetermined Linear Equation System is Consistent: General Approach?Is the least squares solution to an overdetermined system a triangle center?Solving a feasible system of linear equations using Linear ProgrammingProving unique solution exists for a system of equationsSolve an overdetermined system of linear equationsSolving overdetermined linear system with $3$ equations in $2$ unknownsOverdetermined System Ax=bSolving a system by using Cholesky Decomposition $(LDL^T)$Solving $Ax = b$ using least squares (minimize $||Ax -b||_2$)How to do Given's rotation for $3×2$ matrix? (QR decomposition)
How to answer "Have you ever been terminated?"
Output the ŋarâþ crîþ alphabet song without using (m)any letters
What does this icon in iOS Stardew Valley mean?
How to find out what spells would be useless to a blind NPC spellcaster?
Short Story with Cinderella as a Voo-doo Witch
Is it true that "carbohydrates are of no use for the basal metabolic need"?
Why aren't air breathing engines used as small first stages
51k Euros annually for a family of 4 in Berlin: Is it enough?
What is the logic behind the Maharil's explanation of why we don't say שעשה ניסים on Pesach?
What's the purpose of writing one's academic biography in the third person?
What is the meaning of the new sigil in Game of Thrones Season 8 intro?
How to react to hostile behavior from a senior developer?
Why do we bend a book to keep it straight?
Using audio cues to encourage good posture
How do pianists reach extremely loud dynamics?
How to call a function with default parameter through a pointer to function that is the return of another function?
When were vectors invented?
Why did the Falcon Heavy center core fall off the ASDS OCISLY barge?
How to find all the available tools in mac terminal?
Do I really need recursive chmod to restrict access to a folder?
How do I keep my slimes from escaping their pens?
The logistics of corpse disposal
Why didn't this character "real die" when they blew their stack out in Altered Carbon?
Apollo command module space walk?
Solving overdetermined system by QR decomposition
Announcing the arrival of Valued Associate #679: Cesar Manara
Planned maintenance scheduled April 17/18, 2019 at 00:00UTC (8:00pm US/Eastern)What does QR decomposition have to do with least squares method?Check Whether an Overdetermined Linear Equation System is Consistent: General Approach?Is the least squares solution to an overdetermined system a triangle center?Solving a feasible system of linear equations using Linear ProgrammingProving unique solution exists for a system of equationsSolve an overdetermined system of linear equationsSolving overdetermined linear system with $3$ equations in $2$ unknownsOverdetermined System Ax=bSolving a system by using Cholesky Decomposition $(LDL^T)$Solving $Ax = b$ using least squares (minimize $||Ax -b||_2$)How to do Given's rotation for $3×2$ matrix? (QR decomposition)
$begingroup$
I need to solve $Ax=b$ in lots of ways using QR decomposition.
$$A = beginbmatrix
1 & 1 \
-1 & 1 \
1 & 2
endbmatrix, b = beginbmatrix
1 \
0 \
1
endbmatrix$$
This is an overdetermined system. That is, it has more equations than needed for a unique solution.
I need to find $min ||Ax-b||$. How should I solve it using QR?
I know that QR can be used to reduce the problem to
$$Vert Ax - b Vert = Vert QRx - b Vert = Vert Rx - Q^-1b Vert.$$
but what do I do after this?
linear-algebra numerical-methods numerical-linear-algebra
$endgroup$
add a comment |
$begingroup$
I need to solve $Ax=b$ in lots of ways using QR decomposition.
$$A = beginbmatrix
1 & 1 \
-1 & 1 \
1 & 2
endbmatrix, b = beginbmatrix
1 \
0 \
1
endbmatrix$$
This is an overdetermined system. That is, it has more equations than needed for a unique solution.
I need to find $min ||Ax-b||$. How should I solve it using QR?
I know that QR can be used to reduce the problem to
$$Vert Ax - b Vert = Vert QRx - b Vert = Vert Rx - Q^-1b Vert.$$
but what do I do after this?
linear-algebra numerical-methods numerical-linear-algebra
$endgroup$
add a comment |
$begingroup$
I need to solve $Ax=b$ in lots of ways using QR decomposition.
$$A = beginbmatrix
1 & 1 \
-1 & 1 \
1 & 2
endbmatrix, b = beginbmatrix
1 \
0 \
1
endbmatrix$$
This is an overdetermined system. That is, it has more equations than needed for a unique solution.
I need to find $min ||Ax-b||$. How should I solve it using QR?
I know that QR can be used to reduce the problem to
$$Vert Ax - b Vert = Vert QRx - b Vert = Vert Rx - Q^-1b Vert.$$
but what do I do after this?
linear-algebra numerical-methods numerical-linear-algebra
$endgroup$
I need to solve $Ax=b$ in lots of ways using QR decomposition.
$$A = beginbmatrix
1 & 1 \
-1 & 1 \
1 & 2
endbmatrix, b = beginbmatrix
1 \
0 \
1
endbmatrix$$
This is an overdetermined system. That is, it has more equations than needed for a unique solution.
I need to find $min ||Ax-b||$. How should I solve it using QR?
I know that QR can be used to reduce the problem to
$$Vert Ax - b Vert = Vert QRx - b Vert = Vert Rx - Q^-1b Vert.$$
but what do I do after this?
linear-algebra numerical-methods numerical-linear-algebra
linear-algebra numerical-methods numerical-linear-algebra
asked Apr 12 at 15:37
Guerlando OCsGuerlando OCs
16321856
16321856
add a comment |
add a comment |
2 Answers
2
active
oldest
votes
$begingroup$
The most straightforward way I know is to pass through the normal equations:
$$A^T A x = A^T b$$
and substitute in the $QR$ decomposition of $A$ (with the convention $Q in mathbbR^m times n,R in mathbbR^n times n$). Thus you get
$$R^T Q^T Q R x = R^T Q^T b.$$
But $Q^T Q=I_n$. (Note that in this convention $Q$ isn't an orthogonal matrix, so $Q Q^T neq I_m$, but this doesn't matter here.) Thus:
$$R^T R x = R^T Q^T b.$$
If $A$ has linearly independent columns (as is usually the case with overdetermined systems), then $R^T$ is injective, so by multiplying both sides by the left inverse of $R^T$ you get
$$Rx=Q^T b.$$
This system is now easy to solve numerically.
For numerical purposes it's important that the removal of $Q^T Q$ and $R^T$ from the problem is done analytically, and in particular $A^T A$ is never constructed numerically.
$endgroup$
1
$begingroup$
Is there any reason to make this so convoluted? From $Ax=b$ you have $QRx=b$, multiply by $Q^T$ on the left.
$endgroup$
– Martin Argerami
Apr 12 at 15:45
$begingroup$
@MartinArgerami Because actually the least squares solution usually does not satisfy $Ax=b$. This simple perspective only shows you that this approach gives you a solution when a solution exists. Now you could argue directly that multiplying both sides by $Q^T$ furnishes an equation whose solution is the least squares solution. (Such an argument would resemble the usual geometric argument for deriving the normal equations.) This would make a good alternative answer to mine.
$endgroup$
– Ian
Apr 12 at 15:46
add a comment |
$begingroup$
Note that $Rx$ has the form
$$Rx = beginbmatrix y_1 \ y_2 \ 0endbmatrix $$
, so if $$ Q^-1b = beginbmatrix z_1 \ z_2 \ z_3endbmatrix$$
then $|| Rx - Q^-1b||$ will be minimal for $y_1 = z_1$, $y_2=z_2$. This set of equation is no longer overdetermined.
Using matrix notation, if tou write $R = beginbmatrix R_1 \ 0endbmatrix$ and intoduce $P=beginbmatrix1 & 0 & 0 \ 0 & 1& 0endbmatrix$, then you have
$$ R_1x = PQ^-1b$$
$$ x = (R_1)^-1PQ^-1b$$
$endgroup$
1
$begingroup$
The key trick in this answer is that by the orthogonality, $| Ax - b | = | Rx - Q^T b |$.
$endgroup$
– Ian
Apr 12 at 20:34
$begingroup$
@Ian, That's something that OP has alredy obtained on his own (since $Q$ is orthogonal, $Q^-1=Q^T$).
$endgroup$
– Adam Latosiński
Apr 13 at 11:14
add a comment |
Your Answer
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%2f3185239%2fsolving-overdetermined-system-by-qr-decomposition%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
$begingroup$
The most straightforward way I know is to pass through the normal equations:
$$A^T A x = A^T b$$
and substitute in the $QR$ decomposition of $A$ (with the convention $Q in mathbbR^m times n,R in mathbbR^n times n$). Thus you get
$$R^T Q^T Q R x = R^T Q^T b.$$
But $Q^T Q=I_n$. (Note that in this convention $Q$ isn't an orthogonal matrix, so $Q Q^T neq I_m$, but this doesn't matter here.) Thus:
$$R^T R x = R^T Q^T b.$$
If $A$ has linearly independent columns (as is usually the case with overdetermined systems), then $R^T$ is injective, so by multiplying both sides by the left inverse of $R^T$ you get
$$Rx=Q^T b.$$
This system is now easy to solve numerically.
For numerical purposes it's important that the removal of $Q^T Q$ and $R^T$ from the problem is done analytically, and in particular $A^T A$ is never constructed numerically.
$endgroup$
1
$begingroup$
Is there any reason to make this so convoluted? From $Ax=b$ you have $QRx=b$, multiply by $Q^T$ on the left.
$endgroup$
– Martin Argerami
Apr 12 at 15:45
$begingroup$
@MartinArgerami Because actually the least squares solution usually does not satisfy $Ax=b$. This simple perspective only shows you that this approach gives you a solution when a solution exists. Now you could argue directly that multiplying both sides by $Q^T$ furnishes an equation whose solution is the least squares solution. (Such an argument would resemble the usual geometric argument for deriving the normal equations.) This would make a good alternative answer to mine.
$endgroup$
– Ian
Apr 12 at 15:46
add a comment |
$begingroup$
The most straightforward way I know is to pass through the normal equations:
$$A^T A x = A^T b$$
and substitute in the $QR$ decomposition of $A$ (with the convention $Q in mathbbR^m times n,R in mathbbR^n times n$). Thus you get
$$R^T Q^T Q R x = R^T Q^T b.$$
But $Q^T Q=I_n$. (Note that in this convention $Q$ isn't an orthogonal matrix, so $Q Q^T neq I_m$, but this doesn't matter here.) Thus:
$$R^T R x = R^T Q^T b.$$
If $A$ has linearly independent columns (as is usually the case with overdetermined systems), then $R^T$ is injective, so by multiplying both sides by the left inverse of $R^T$ you get
$$Rx=Q^T b.$$
This system is now easy to solve numerically.
For numerical purposes it's important that the removal of $Q^T Q$ and $R^T$ from the problem is done analytically, and in particular $A^T A$ is never constructed numerically.
$endgroup$
1
$begingroup$
Is there any reason to make this so convoluted? From $Ax=b$ you have $QRx=b$, multiply by $Q^T$ on the left.
$endgroup$
– Martin Argerami
Apr 12 at 15:45
$begingroup$
@MartinArgerami Because actually the least squares solution usually does not satisfy $Ax=b$. This simple perspective only shows you that this approach gives you a solution when a solution exists. Now you could argue directly that multiplying both sides by $Q^T$ furnishes an equation whose solution is the least squares solution. (Such an argument would resemble the usual geometric argument for deriving the normal equations.) This would make a good alternative answer to mine.
$endgroup$
– Ian
Apr 12 at 15:46
add a comment |
$begingroup$
The most straightforward way I know is to pass through the normal equations:
$$A^T A x = A^T b$$
and substitute in the $QR$ decomposition of $A$ (with the convention $Q in mathbbR^m times n,R in mathbbR^n times n$). Thus you get
$$R^T Q^T Q R x = R^T Q^T b.$$
But $Q^T Q=I_n$. (Note that in this convention $Q$ isn't an orthogonal matrix, so $Q Q^T neq I_m$, but this doesn't matter here.) Thus:
$$R^T R x = R^T Q^T b.$$
If $A$ has linearly independent columns (as is usually the case with overdetermined systems), then $R^T$ is injective, so by multiplying both sides by the left inverse of $R^T$ you get
$$Rx=Q^T b.$$
This system is now easy to solve numerically.
For numerical purposes it's important that the removal of $Q^T Q$ and $R^T$ from the problem is done analytically, and in particular $A^T A$ is never constructed numerically.
$endgroup$
The most straightforward way I know is to pass through the normal equations:
$$A^T A x = A^T b$$
and substitute in the $QR$ decomposition of $A$ (with the convention $Q in mathbbR^m times n,R in mathbbR^n times n$). Thus you get
$$R^T Q^T Q R x = R^T Q^T b.$$
But $Q^T Q=I_n$. (Note that in this convention $Q$ isn't an orthogonal matrix, so $Q Q^T neq I_m$, but this doesn't matter here.) Thus:
$$R^T R x = R^T Q^T b.$$
If $A$ has linearly independent columns (as is usually the case with overdetermined systems), then $R^T$ is injective, so by multiplying both sides by the left inverse of $R^T$ you get
$$Rx=Q^T b.$$
This system is now easy to solve numerically.
For numerical purposes it's important that the removal of $Q^T Q$ and $R^T$ from the problem is done analytically, and in particular $A^T A$ is never constructed numerically.
edited Apr 12 at 19:46
answered Apr 12 at 15:44
IanIan
69.2k25393
69.2k25393
1
$begingroup$
Is there any reason to make this so convoluted? From $Ax=b$ you have $QRx=b$, multiply by $Q^T$ on the left.
$endgroup$
– Martin Argerami
Apr 12 at 15:45
$begingroup$
@MartinArgerami Because actually the least squares solution usually does not satisfy $Ax=b$. This simple perspective only shows you that this approach gives you a solution when a solution exists. Now you could argue directly that multiplying both sides by $Q^T$ furnishes an equation whose solution is the least squares solution. (Such an argument would resemble the usual geometric argument for deriving the normal equations.) This would make a good alternative answer to mine.
$endgroup$
– Ian
Apr 12 at 15:46
add a comment |
1
$begingroup$
Is there any reason to make this so convoluted? From $Ax=b$ you have $QRx=b$, multiply by $Q^T$ on the left.
$endgroup$
– Martin Argerami
Apr 12 at 15:45
$begingroup$
@MartinArgerami Because actually the least squares solution usually does not satisfy $Ax=b$. This simple perspective only shows you that this approach gives you a solution when a solution exists. Now you could argue directly that multiplying both sides by $Q^T$ furnishes an equation whose solution is the least squares solution. (Such an argument would resemble the usual geometric argument for deriving the normal equations.) This would make a good alternative answer to mine.
$endgroup$
– Ian
Apr 12 at 15:46
1
1
$begingroup$
Is there any reason to make this so convoluted? From $Ax=b$ you have $QRx=b$, multiply by $Q^T$ on the left.
$endgroup$
– Martin Argerami
Apr 12 at 15:45
$begingroup$
Is there any reason to make this so convoluted? From $Ax=b$ you have $QRx=b$, multiply by $Q^T$ on the left.
$endgroup$
– Martin Argerami
Apr 12 at 15:45
$begingroup$
@MartinArgerami Because actually the least squares solution usually does not satisfy $Ax=b$. This simple perspective only shows you that this approach gives you a solution when a solution exists. Now you could argue directly that multiplying both sides by $Q^T$ furnishes an equation whose solution is the least squares solution. (Such an argument would resemble the usual geometric argument for deriving the normal equations.) This would make a good alternative answer to mine.
$endgroup$
– Ian
Apr 12 at 15:46
$begingroup$
@MartinArgerami Because actually the least squares solution usually does not satisfy $Ax=b$. This simple perspective only shows you that this approach gives you a solution when a solution exists. Now you could argue directly that multiplying both sides by $Q^T$ furnishes an equation whose solution is the least squares solution. (Such an argument would resemble the usual geometric argument for deriving the normal equations.) This would make a good alternative answer to mine.
$endgroup$
– Ian
Apr 12 at 15:46
add a comment |
$begingroup$
Note that $Rx$ has the form
$$Rx = beginbmatrix y_1 \ y_2 \ 0endbmatrix $$
, so if $$ Q^-1b = beginbmatrix z_1 \ z_2 \ z_3endbmatrix$$
then $|| Rx - Q^-1b||$ will be minimal for $y_1 = z_1$, $y_2=z_2$. This set of equation is no longer overdetermined.
Using matrix notation, if tou write $R = beginbmatrix R_1 \ 0endbmatrix$ and intoduce $P=beginbmatrix1 & 0 & 0 \ 0 & 1& 0endbmatrix$, then you have
$$ R_1x = PQ^-1b$$
$$ x = (R_1)^-1PQ^-1b$$
$endgroup$
1
$begingroup$
The key trick in this answer is that by the orthogonality, $| Ax - b | = | Rx - Q^T b |$.
$endgroup$
– Ian
Apr 12 at 20:34
$begingroup$
@Ian, That's something that OP has alredy obtained on his own (since $Q$ is orthogonal, $Q^-1=Q^T$).
$endgroup$
– Adam Latosiński
Apr 13 at 11:14
add a comment |
$begingroup$
Note that $Rx$ has the form
$$Rx = beginbmatrix y_1 \ y_2 \ 0endbmatrix $$
, so if $$ Q^-1b = beginbmatrix z_1 \ z_2 \ z_3endbmatrix$$
then $|| Rx - Q^-1b||$ will be minimal for $y_1 = z_1$, $y_2=z_2$. This set of equation is no longer overdetermined.
Using matrix notation, if tou write $R = beginbmatrix R_1 \ 0endbmatrix$ and intoduce $P=beginbmatrix1 & 0 & 0 \ 0 & 1& 0endbmatrix$, then you have
$$ R_1x = PQ^-1b$$
$$ x = (R_1)^-1PQ^-1b$$
$endgroup$
1
$begingroup$
The key trick in this answer is that by the orthogonality, $| Ax - b | = | Rx - Q^T b |$.
$endgroup$
– Ian
Apr 12 at 20:34
$begingroup$
@Ian, That's something that OP has alredy obtained on his own (since $Q$ is orthogonal, $Q^-1=Q^T$).
$endgroup$
– Adam Latosiński
Apr 13 at 11:14
add a comment |
$begingroup$
Note that $Rx$ has the form
$$Rx = beginbmatrix y_1 \ y_2 \ 0endbmatrix $$
, so if $$ Q^-1b = beginbmatrix z_1 \ z_2 \ z_3endbmatrix$$
then $|| Rx - Q^-1b||$ will be minimal for $y_1 = z_1$, $y_2=z_2$. This set of equation is no longer overdetermined.
Using matrix notation, if tou write $R = beginbmatrix R_1 \ 0endbmatrix$ and intoduce $P=beginbmatrix1 & 0 & 0 \ 0 & 1& 0endbmatrix$, then you have
$$ R_1x = PQ^-1b$$
$$ x = (R_1)^-1PQ^-1b$$
$endgroup$
Note that $Rx$ has the form
$$Rx = beginbmatrix y_1 \ y_2 \ 0endbmatrix $$
, so if $$ Q^-1b = beginbmatrix z_1 \ z_2 \ z_3endbmatrix$$
then $|| Rx - Q^-1b||$ will be minimal for $y_1 = z_1$, $y_2=z_2$. This set of equation is no longer overdetermined.
Using matrix notation, if tou write $R = beginbmatrix R_1 \ 0endbmatrix$ and intoduce $P=beginbmatrix1 & 0 & 0 \ 0 & 1& 0endbmatrix$, then you have
$$ R_1x = PQ^-1b$$
$$ x = (R_1)^-1PQ^-1b$$
answered Apr 12 at 15:56
Adam LatosińskiAdam Latosiński
7408
7408
1
$begingroup$
The key trick in this answer is that by the orthogonality, $| Ax - b | = | Rx - Q^T b |$.
$endgroup$
– Ian
Apr 12 at 20:34
$begingroup$
@Ian, That's something that OP has alredy obtained on his own (since $Q$ is orthogonal, $Q^-1=Q^T$).
$endgroup$
– Adam Latosiński
Apr 13 at 11:14
add a comment |
1
$begingroup$
The key trick in this answer is that by the orthogonality, $| Ax - b | = | Rx - Q^T b |$.
$endgroup$
– Ian
Apr 12 at 20:34
$begingroup$
@Ian, That's something that OP has alredy obtained on his own (since $Q$ is orthogonal, $Q^-1=Q^T$).
$endgroup$
– Adam Latosiński
Apr 13 at 11:14
1
1
$begingroup$
The key trick in this answer is that by the orthogonality, $| Ax - b | = | Rx - Q^T b |$.
$endgroup$
– Ian
Apr 12 at 20:34
$begingroup$
The key trick in this answer is that by the orthogonality, $| Ax - b | = | Rx - Q^T b |$.
$endgroup$
– Ian
Apr 12 at 20:34
$begingroup$
@Ian, That's something that OP has alredy obtained on his own (since $Q$ is orthogonal, $Q^-1=Q^T$).
$endgroup$
– Adam Latosiński
Apr 13 at 11:14
$begingroup$
@Ian, That's something that OP has alredy obtained on his own (since $Q$ is orthogonal, $Q^-1=Q^T$).
$endgroup$
– Adam Latosiński
Apr 13 at 11:14
add a comment |
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%2f3185239%2fsolving-overdetermined-system-by-qr-decomposition%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