Solving system of equations

Hi expert,
May I ask your suggestion on how to solve the following matrix system,
where the component of the matrix A is complex numbers with the angle (theta) runs from 0 to 2*pi, and n = 9. The known value z = x + iy = re^ia, is also complex numbers as such, r = sqrt(x^2+y^2) and a = atan (y/x)
Suppose matrix z is as shown below,
z =
0 1.0148
0.1736 0.9848
0.3420 0.9397
0.5047 0.8742
0.6748 0.8042
0.8419 0.7065
0.9919 0.5727
1.1049 0.4022
1.1757 0.2073
1.1999 0
1.1757 -0.2073
1.1049 -0.4022
0.9919 -0.5727
0.8419 -0.7065
0.6748 -0.8042
0.5047 -0.8742
0.3420 -0.9397
0.1736 -0.9848
0 -1.0148
How do you solve the system of equations above i.e. to find the coefficient of matrix alpha. I tried using a simple matrix manipulation X = inv((tran(A)*A))*tran(A)*z, but I cannot get a reasonable result.
I would expect the solution i.e. components of matrix alpa to be a real numbers.

 Risposta accettata

Matt J
Matt J il 1 Gen 2018
Modificato: Matt J il 1 Gen 2018
What do the two columns of z mean? Is the 2nd column supposed to be the imaginary part of z? If so,
Z=complex(z(:,1),z(:,2));
X = A\Z

11 Commenti

BeeTiaw
BeeTiaw il 1 Gen 2018
Modificato: BeeTiaw il 1 Gen 2018
Hi Matt,
The column of z means the x and y component of the z = x + i*y i.e. z is a complex numbers.
I tried the same approach as you suggested, but somethow when I back calculate z from the (now) known A and matrix alpha, I could not get it even close to z.
In that, I expext the solution of X could gives a minimum error to z.
Matt J
Matt J il 1 Gen 2018
Modificato: Matt J il 1 Gen 2018
X is definitely the minimum least square fit of Z (assuming there are no other constraints that you haven't yet mentioned). It might be a bad fit, but it is the best fit, given your data.
Hi BeSet, this is John BG <mailto:jgb2012@sky.com jgb2012@sky.com>
to 'give a minimum error to z' you may want to consider
abs(z)
instead.
Matt J
why is this answer accepted if BeSet writes not yet agreeing with result?
Jan
Jan il 2 Gen 2018
Modificato: Jan il 4 Gen 2018
@John BG: After your many discussions about accepting answers, you should know, that only the OP can do this in the first week after asking. Therefore there is no reason to ask Matt J, why the OP BeSet has accepted the answer.
Matt J
Matt J il 2 Gen 2018
Modificato: Matt J il 2 Gen 2018
@John BG:
As Jan said, I have no control over the accept-status of the answer. It is conceivable, however, that the OP posted initial doubts about the answer, but later resolved them and accept-clicked.
BeeTiaw
BeeTiaw il 16 Feb 2018
Hi All,
Sorry for my delayed response. I mistakenly and did not realize that I have clicked "accept" earlier which apparently has caused confusion in this thread. Sorry. I have unchecked the "accept".
Back to my earlier post.
Suppose now I want to set the value of "alpha_0", i.e. the first component of the desired constants, equals 1, how do I solve the problem iteratively? Can we use the "fit" function within Matlab?
Matt J
Matt J il 16 Feb 2018
Why iteratively when you can do it analytically?
BeeTiaw
BeeTiaw il 16 Feb 2018
Modificato: BeeTiaw il 16 Feb 2018
Hi MattJ,
Thanks for your prompt response.
Because the first component must equal to 1, then I would expect the problem can only be solved iteratively? Isn't it?
Unless you know how to solve them analytically, I would be happy to use the method.
Below is the system that I want to solve (slightly modified from the original post)
Where the angle (theta) runs from 0 to 2*pi which has m divisions, and n = 9.
Notice that the value of the first component of the desired constants must equal 1.
The known value z = x + iy = re^ia, is also complex numbers as such, r = sqrt(x^2+y^2) and a = atan (y/x)
Suppose matrix z is as shown below,
z =
0 1.0148
0.1736 0.9848
0.3420 0.9397
0.5047 0.8742
0.6748 0.8042
0.8419 0.7065
0.9919 0.5727
1.1049 0.4022
1.1757 0.2073
1.1999 0
1.1757 -0.2073
1.1049 -0.4022
0.9919 -0.5727
0.8419 -0.7065
0.6748 -0.8042
0.5047 -0.8742
0.3420 -0.9397
0.1736 -0.9848
0 -1.0148
BeeTiaw
BeeTiaw il 16 Feb 2018
Modificato: BeeTiaw il 16 Feb 2018
I am trying to use the following function,
https://uk.mathworks.com/help/optim/ug/lsqlin.html#inputarg_C
but it seems that it only works for integer while my case involves complex number.
If the first value is 1, then this just leads to a mild modification of my initial proposal,
zc=complex(z(:,1),z(:,2));
alpha=A(:,2:end)\(zc-A(:,1))
This solves for the unknown alpha (alpha2,...,alphaN).
Jan
Jan il 25 Apr 2019
@BeeTiaw: Which code do you consider as correct? What does "it seems that I have not got the right answer" mean? Which answer from which code to which input is meant here?

Accedi per commentare.

Più risposte (0)

Richiesto:

il 1 Gen 2018

Commentato:

Jan
il 25 Apr 2019

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by