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.

 Accepted Answer

Matt J
Matt J on 1 Jan 2018
Edited: Matt J on 1 Jan 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 Comments

BeeTiaw
BeeTiaw on 1 Jan 2018
Edited: BeeTiaw on 1 Jan 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 on 1 Jan 2018
Edited: Matt J on 1 Jan 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 on 2 Jan 2018
Edited: Jan on 4 Jan 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 on 2 Jan 2018
Edited: Matt J on 2 Jan 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.
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?
Why iteratively when you can do it analytically?
BeeTiaw
BeeTiaw on 16 Feb 2018
Edited: BeeTiaw on 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 on 16 Feb 2018
Edited: BeeTiaw on 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).
@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?

Sign in to comment.

More Answers (0)

Asked:

on 1 Jan 2018

Commented:

Jan
on 25 Apr 2019

Community Treasure Hunt

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

Start Hunting!