Create matrix from columns of variable (a)-for loop

Hi I want to create a matrix TA from the columns EE generated in the last loop. I can display the wanted columns "disp (EE)' but when adding the matrix want to create from these columns, an error occurred, noted that the vectors/columns EE has a variable (a)
You may ignore the lines of the code before the line start with C = [I;A;B]; for getting the question
I=ones(20,2);
for i=0:20
theta=(pi/40)*i;
r=2.5;x1=r*cos(theta);
y1=r*sin(theta);s=i+1;
I(s,:)=[x1,y1];
end
A=ones(20,2);
for k=1:20
r=(k-1)/10;
A(k,:)=[1,r];
end
m=1:-(1/47):0;
B=ones(length(m),2);
B(:,1)=m';B(:,2)=2;
C = [I;A;B];
%%find the complex variable matrix, ZC connjgate Z
Z=ones(length(C),1);
for v=1:length(C)
Z(v)=C(v,1)+1i*C(v,2);end
ZC=conj(Z);
F=ones(89,2);syms Fb;
for ii=1:89
if ii<22
F(ii,1)=0;F(ii,2)=0;
elseif ii<42
F(ii,1)=1; F(ii,2)=0;
else
F(ii,1)=(89-ii)/(89-42);F(ii,2)=0;
end
end
FF=F.*Fb;
zzc=Z-ZC;
QQ=ones(length(Z),21);SS=ones(length(Z),21);ss=0;
T1=ones(length(Z),21);T2=ones(length(Z),21);syms a
for K=-6:14
ss=ss+1;
QQ(:,ss)=Z.^(2*K-1)+ZC.^(2*K-1);
SS(:,ss)=(2*ss-1)*(Z.^(2*ss-2));
T1(:,ss)=Z.^(2*K-2);T2(:,ss)=ZC.^(2*K-2);
end
%multiplying the T1,T2 BY THE FCTOR
Q=QQ.';S=SS.';
TA=ones(89,21);TB=ones(89,21);
Tz=sqrt(Z.^2-a^2); Tzc=sqrt(ZC.^2-a^2);
for j=1:21
CC=Tz.*T1(:,j);DD=Tzc.*T2(:,j);EE=CC+DD;
TA(:,j)=EE;
end

2 Comments

You must specify the error and error line number.
Sorry missed that
Error The following error occurred converting from sym to double: DOUBLE cannot convert the input expression into a double array. If the input expression contains a symbolic variable, use VPA.
Error in filename (line 67)
TA(:,j)=EE;

Sign in to comment.

 Accepted Answer

syms a
so a is syms
Tz=sqrt(Z.^2-a^2); Tzc=sqrt(ZC.^2-a^2);
so Tz and Tzc are syms involving the unresolved variable a
CC=Tz.*T1(:,j);DD=Tzc.*T2(:,j);EE=CC+DD;
so CC and DD and EE all involve that unresolved variable a
TA=ones(89,21);
so TA can only store numeric values.
TA(:,j)=EE;
with TA only being able to store numeric values, the values in EE have to be converted from sym to numeric. But they cannot be converted, because they involve the unresolved symbolic variable a
Your EE entries are formulas, such as
(5209627982755595*(7990063086789097/36028797018963968 - a^2)^(1/2))/137438953472 + (5252908098854583*(6546788930781455/18014398509481984 - a^2)^(1/2))/4398046511104
You cannot store a formula in a numeric array.
You can use vpa() to convert the formulas from using rational numbers to using floating point numbers; for example vpa() of the above gives the result
1194.3730212020871022104984149337*(0.36341979041573407860354905096756 - 1.0*a^2)^(1/2) + 37905.032388193612860050052404404*(0.22176880017902014796682408359629 - 1.0*a^2)^(1/2)
but this is still a formula and would need a symbolic array to be stored into.

16 Comments

Wazy sky'S "Answer" moved here:
Thanks, Walter for your answer, new things I have learned
I redefine all the matrices/arrays as symbolic. I did not use vap(). I am generating numerous linear equations to be solved at the end using least squares method.
Do you think I did not miss an important thing and if this is the right way for my purposes
Thanks
Those equations are not linear equations: they have expressions of the form
sqrt(constant - x^2)
Hi
The equations are functions of 2 vectors of variables E, & G. The solution E, G will be in terms of the (a^?, you referred to as x in your comment) Thanks
Linear equations do not have squares of the variables. There are some quadratic solvers that can be good on equations containing the squares of variables (especially with no cross-terms of one variable multiplied by another). However, those solvers cannot deal with sqrt()
You will need to use nonlinear methods.
Hi Walter,
They are linear equations for the unknown coefficients E,G (the complete code presented here
https://au.mathworks.com/matlabcentral/answers/420881-solving-series-of-linear-equations-with-complex-variables in the procedure I have, they used the Least Squares method (minimizing the square of error for the unknown coefficients.
Will be appreciated if you guide me, suggest a solution method or a Matlab function that could suit these formulae.
Meanwhile, I am just hopping into different pages for different attempts. It is very good for learning, but with uncertain ends.
Thanks
They are non-linear equations with respect to the variables E, G, and a.
You cannot use a linear least squared approach for this -- not unless perhaps you are given one or more a values.
what about if the wanted solution for all the range of a from 0.25 to 1
Just putting on a constraint would not work. You would need to substitute a particular value of a to have a chance at the equations becoming linear.
*Update!! you are absolutely correct one value should be used for (a) and that is the solution change for different values!
the same procedure followed now. For the new case (different input- [C] IN THE CODE ABOVE), I know from the source I am following that the solution of the variables is a complex number, not a real. Now I am not getting a solution with different errors/warning (no explicit solution, or the solution is an empty array). I used to solve, and vpasolve for solving the linear equations.* I am really in a very critical situation now. Need your help all. Thanks
Hi I assumed values for (a, Fb), and used the least squares method, got the solution for the variables (E, G).
When I tried another value of (a), the solutions of (E, G) changed! this is not correct as the solutions should be the same for whatever the condition (Fb, a).
E, & G satisfies the defined boundary conditions (matrices [FF], [C]). --- I know for sure that the solution for the variables E, G is not a function of any variables such as (a, Fb).
The solution of (E, & G) are vectors of real numbers.
I tried defining the a, Fb as variables,
Matlab warning was: Cannot find explicit solution.?
What am I missing here! is it the math or understanding the problem I am solving itself
Sorry, I am not clear as to what your question is?
I am also unsure what your current code is.
Hi Walter Roberson,
The question is: what is the expected mistake in my code to get this warning:.
[*Warning*: Cannot find explicit solution. > In solve (line 316)] when using solve function;
when I use vpasolve function to solve the linear equation, I get [The solution is sym (0x1)] which seems no solution exists.
knowing that there is a solution exist for this problem (the source is a published work showing: the procedure, the equation, the solution results. I am writing the code regenerate the data).
in these equations to be solved we know the solution of the variables is a complex number. the number of Linear equations = the number of variables. the functions used in Matlab are solve/vpasolve
my current code is
circle_pts=zeros(37,2);a=0.5; beta=45;
for j=0:36
theta=(pi/36)*j;
r=0.25;
x1=r*cos(theta);
y1=r*sin(theta);
circle_pts(j+1,:)=[x1,y1];
end
% Right-Side RS;x0=b/cos(pi/2-beta);x0=b/cos(pi/2-beta);b=1;
b=1;
x0=b/cos(deg2rad(90-beta));
h=2; RS=h-b*tan(deg2rad(90-beta));
de_RS=RS/20;RS_pts=zeros(20,2);
for jj=0:19
x_RS=x0+jj*de_RS*cos(deg2rad(beta));
y_RS=jj*de_RS*sin(deg2rad(beta));
RS_pts(jj+1,:)=[x_RS,y_RS];
end
% Top-side TS_pts 58-78,23 De=2b/22;x1=RS*cos(90-beta)+xO, y1=RS*sin(beata)
TS=2; % TS the top side length
De_TS=2/20;TS_pts=zeros(21,2);% corner point frpm RS included.
for k=0:20
X_TS=x0+RS*cos(deg2rad(beta))-k*De_TS*cos(deg2rad(90-beta));
Y_TS=RS*sin(deg2rad(beta))+k*De_TS*sin(deg2rad(90-beta));
TS_pts(k+1,:)=[X_TS,Y_TS];
end
% left side LS=H-RS, h=.5*H;h=2; Angle=beta,
LS=2*(h)-RS;
LS_pts=zeros(20,2);
De_LS=LS/20;
for kk=1:20
X_LS=TS_pts(21,1)-kk*De_LS*cos(deg2rad(beta));
Y_LS=TS_pts(21,2)-kk*De_LS*sin(deg2rad(beta));
LS_pts(kk,:)=[X_LS, Y_LS];
end
% geometry coordinates
pt_1=[x0,0];
pt_2=[x0+RS*cos(deg2rad(beta)), RS*sin(deg2rad(beta))];
pt_3=[pt_2(1,1)-TS*cos(deg2rad(90-beta)), pt_2(1,2)+TS*sin(deg2rad(90-beta))];
pt_4=[pt_3(1,1)-LS*cos(deg2rad(beta)),pt_3(1,2)-LS*sin(deg2rad(beta))];
% the coordinate matrix [C]
C=[circle_pts;RS_pts;TS_pts;LS_pts];
Z=ones(length(C),1);
for v=1:length(C)
Z(v)=C(v,1)+1i*C(v,2);
end
ZC=conj(Z);
Z_ZC=Z-ZC;
% Loading matrix.
F=ones(98,2);Fb=1;
for n=1:98
if n<38
F(n,1)=0;F(n,2)=0+1i*0;
elseif n<57
F(n,1)=-cos(deg2rad(beta)); F(n,2)=0+1i*sin(deg2rad(beta));
elseif n==58
F(n,1)=(-cos(deg2rad(beta))+1*sin(deg2rad(beta))); F(n,2)=0+1i*(sin(deg2rad(beta))+cos(deg2rad(beta)));
elseif n<78
F(n,1)=((68-n)/(68-58))*sin(deg2rad(beta));F(n,2)=0+1i*((68-n)/(68-58))*cos(deg2rad(beta));
elseif n==78
F(n,1)=cos(deg2rad(beta))-1*sin(deg2rad(beta));F(n,2)=-(0+1i*(sin(deg2rad(beta))+cos(deg2rad(beta))));
else
F(n,1)=cos(deg2rad(beta));F(n,2)=0-1i*sin(deg2rad(beta));
end
end
F(:,1)=F(:,1)*(-1);
FF=F.*Fb;
QQ=ones(length(Z),29);SS=ones(length(Z),29);
T1=ones(length(Z),29);T2=ones(length(Z),29);
RR=ones(length(Z),29);
ss=0;
for K=-10:18
ss=ss+1;
QQ(:,ss)=Z.^(2*K-1)-ZC.^(2*K-1);
SS(:,ss)=(2*K-1)*(Z.^(2*K-2));
RR(:,ss)=((2*K-1)-((2*K-2).*(a./Z).^2)).*Z.^(2*K-1);
T1(:,ss)=Z.^(2*K-2);T2(:,ss)=ZC.^(2*K-2);
end
P=ones(98,29);
Tz=((Z.^2-a^2).^0.5); Tzc=((ZC.^2-a^2).^0.5);
for j=1:29
CC=(Tz.*T1(:,j));DD=(Tzc.*T2(:,j));EE=(CC+DD);
P(:,j)=(EE);
end
Tzz=1./Tz;
E=sym('E',[29 1]);G=sym('G',[29 1]);
H1=P*E;
H2=QQ*G;
H3=SS*G;
H4=RR*E;
H5=Tzz.*H4;
H6=H5+H3;
H7=conj(H6);
H8=Z_ZC.*H7;
H=H1+H2+H8;
H_Real= real(H);
%has Real&imag parts for both variables.
H_imag = imag(H);
t_H=toc; tic;
Eq1=(H_Real-FF(:,1)).^2+(H_imag-FF(:,2)).^2;
EmE=sym(ones(58,1));
for ij=1:29
Em1=0;Em2=0;
for jj=1:98
Em1=Em1+diff(Eq1(jj),E(ij,1));
Em2=Em2+diff(Eq1(jj),G(ij,1));nn=nn+1;
end
end
EmE(ij,1)=Em1;EmE(ij+29,1)=Em2;
end
sol=vpasolve(EmE,[E;G]);
sol.E1; sol.E2; sol.E29; %call the solution for few variables for checking the solution.
Your suggestions are so much appreacited
You have
for ij=1:29
Em1=0;Em2=0;
for jj=1:98
Em1=Em1+diff(Eq1(jj),E(ij,1));
Em2=Em2+diff(Eq1(jj),G(ij,1));nn=nn+1;
end
end
EmE(ij,1)=Em1;EmE(ij+29,1)=Em2;
end
The first "end" there finishes the "for jj". The second "end" there finishes the "for ij". The line after that uses the value of ij, which would at that point have the last value it was assigned in its for loop, which would be 29. The line of code looks more like it belongs inside the "for ij" loop than after it. The line after that, the "end" does not match anything and is a syntax error.
The line
t_H=toc; tic;
attempts to do a "toc" before there has been any matching "tic". You never use the value of t_H so it is a mystery as to why that line is present.
The line
Em2=Em2+diff(Eq1(jj),G(ij,1));nn=nn+1;
attempts to increment the undefined variable nn. you never use the value of nn so it is a mystery as to why that is present.
"Your suggestions are so much appreacited"
Your code is very badly aligned. Badly aligned code is one way that beginners hide bugs in their code. In this case, your badly aligned code has hidden several bugs and made them harder to identify. Correctly aligned code makes identifying some kinds of bugs easier. You should align your code correctly.
I recommend using the MATLAB Editor's default alignment settings, which occur automatically as you type. You can also align existing code: select the code text, press ctrl+i.
Thanks, Stephen Cobeldick; I tried to simplify the question by presenting only the main part of the code, editing in text file led to losing its alignment. I am posting all the code here
use *a=0.5, beta=45* for example, please ignoreor texted part. Thanks!
prompt={'a:','beta:'};
% Create all your text fields with the questions specified by the variable prompt.
title='Input';
% The main title of your input dialog interface.
answer=inputdlg(prompt,title);
a = str2double(answer{1});
beta = str2double(answer{2});
circle_pts=zeros(37,2);
tic
for j=0:36
theta=(pi/36)*j;
r=0.25;
x1=r*cos(theta);
y1=r*sin(theta);
circle_pts(j+1,:)=[x1,y1];
end
% Right-Side RS;x0=b/cos(pi/2-beta);x0=b/cos(pi/2-beta);b=1;
b=1;
x0=b/cos(deg2rad(90-beta));
h=2; RS=h-b*tan(deg2rad(90-beta));
de_RS=RS/20;RS_pts=zeros(20,2);
for jj=0:19
x_RS=x0+jj*de_RS*cos(deg2rad(beta));
y_RS=jj*de_RS*sin(deg2rad(beta));
RS_pts(jj+1,:)=[x_RS,y_RS];
end
% Top-side TS_pts 58-78,23 De=2b/22;x1=RS*cos(90-beta)+xO, y1=RS*sin(beata)
TS=2; % TS the top side length
De_TS=2/20;TS_pts=zeros(21,2);% corner point frpm RS included.
for k=0:20
X_TS=x0+RS*cos(deg2rad(beta))-k*De_TS*cos(deg2rad(90-beta));
Y_TS=RS*sin(deg2rad(beta))+k*De_TS*sin(deg2rad(90-beta));
TS_pts(k+1,:)=[X_TS,Y_TS];
end
% left side LS=H-RS, h=.5*H;h=2; Angle=beta,
LS=2*(h)-RS;
LS_pts=zeros(20,2);
De_LS=LS/20;
for kk=1:20
X_LS=TS_pts(21,1)-kk*De_LS*cos(deg2rad(beta));
Y_LS=TS_pts(21,2)-kk*De_LS*sin(deg2rad(beta));
LS_pts(kk,:)=[X_LS, Y_LS];
end
% geometry coordinates
pt_1=[x0,0];
pt_2=[x0+RS*cos(deg2rad(beta)), RS*sin(deg2rad(beta))];
pt_3=[pt_2(1,1)-TS*cos(deg2rad(90-beta)), pt_2(1,2)+TS*sin(deg2rad(90-beta))];
pt_4=[pt_3(1,1)-LS*cos(deg2rad(beta)),pt_3(1,2)-LS*sin(deg2rad(beta))];
% the coordinate matrix [C]
C=[circle_pts;RS_pts;TS_pts;LS_pts]; t_coordinat=toc;
Z=ones(length(C),1);
for v=1:length(C)
Z(v)=C(v,1)+1i*C(v,2);
end
ZC=conj(Z);
Z_ZC=Z-ZC;
% Loading matrix. assuming the load accumlating.
% for m=1:98
% if m<38
% F(m,1)=0;F(m,2)=0+1i*0;
% elseif m<57
% F(m,1)=-((m-38)/20)*RS*cos(deg2rad(beta)); F(m,2)=0+1i*((m-38)/20)*RS*sin(deg2rad(beta));
% elseif m==58
% F(m,1)=-((m-38)/20)*RS*cos(deg2rad(beta))+1*sin(deg2rad(beta)); F(m,2)=0+1i*(((m-38)/20)*RS*sin(deg2rad(beta))+cos(deg2rad(beta)));
% elseif m<78
% F(m,1)=((68-m)/(68-58))*sin(deg2rad(beta));F(m,2)=0+1i*((68-m)/(68-58))*cos(deg2rad(beta));
% else
% F(m,1)=((m-78)/(89-78))*LS*cos(deg2rad(beta));F(m,2)=0-1i*((m-78)/(89-78))*LS*sin(deg2rad(beta));
% end
% end
% FF=F.*Fb;
% the (-) in fy should be kept as fy calculated here for +Y
%CHECK THAT FOR B=45 A ZERO FOR PT78; PT58.
F=ones(98,2);Fb=1;
for n=1:98
if n<38
F(n,1)=0;F(n,2)=0+1i*0;
elseif n<57
F(n,1)=-cos(deg2rad(beta)); F(n,2)=0+1i*sin(deg2rad(beta));
elseif n==58
F(n,1)=0.0*(-cos(deg2rad(beta))+1*sin(deg2rad(beta))); F(n,2)=0+1i*(sin(deg2rad(beta))+cos(deg2rad(beta)));
elseif n<78
F(n,1)=((68-n)/(68-58))*sin(deg2rad(beta));F(n,2)=0+1i*((68-n)/(68-58))*cos(deg2rad(beta));
elseif n==78
F(n,1)=0*cos(deg2rad(beta))-1*sin(deg2rad(beta));F(n,2)=-(0+1i*(sin(deg2rad(beta))+cos(deg2rad(beta))));
else
F(n,1)=cos(deg2rad(beta));F(n,2)=0-1i*sin(deg2rad(beta));
end
end
% --->>> CORRECTION THE RS direction<<------
% for n=1:98
% if n<38
% F(n,1)=0;F(n,2)=0+1i*0;
% elseif n<57
% F(n,1)=-cos(deg2rad(beta)); F(n,2)=0+1i*sin(deg2rad(beta));
% elseif n==58
% F(n,1)=0.0*(-cos(deg2rad(beta))+1*sin(deg2rad(beta))); F(n,2)=0+1i*(sin(deg2rad(beta))+cos(deg2rad(beta)));
% elseif n<78
% F(n,1)=((68-n)/(68-58))*sin(deg2rad(beta));F(n,2)=0+1i*((68-n)/(68-58))*cos(deg2rad(beta));
% elseif n==78
% F(n,1)=cos(deg2rad(beta))+1*sin(deg2rad(beta));F(n,2)=(0+1i*(sin(deg2rad(beta))-cos(deg2rad(beta))));
% else
% F(n,1)=-cos(deg2rad(beta));F(n,2)=0+1i*sin(deg2rad(beta));
% end
% end
F(:,1)=F(:,1)*(-1);
FF=F.*Fb;
QQ=ones(length(Z),29);SS=ones(length(Z),29);
T1=ones(length(Z),29);T2=ones(length(Z),29);
RR=ones(length(Z),29);
ss=0; tic
for K=-10:18
ss=ss+1;
QQ(:,ss)=Z.^(2*K-1)-ZC.^(2*K-1);
SS(:,ss)=(2*K-1)*(Z.^(2*K-2));
RR(:,ss)=((2*K-1)-((2*K-2).*(a./Z).^2)).*Z.^(2*K-1);
T1(:,ss)=Z.^(2*K-2);T2(:,ss)=ZC.^(2*K-2);
end
P=ones(98,29);t_QSRT=toc;
Tz=((Z.^2-a^2).^0.5); Tzc=((ZC.^2-a^2).^0.5);
for j=1:29
CC=(Tz.*T1(:,j));DD=(Tzc.*T2(:,j));EE=(CC+DD);
P(:,j)=(EE);
end
Tzz=1./Tz;
E=sym('E',[29 1]);G=sym('G',[29 1]);
tic;
H1=P*E;
H2=QQ*G;
H3=SS*G;
H4=RR*E;
H5=Tzz.*H4;
H6=H5+H3;
H7=conj(H6);
H8=Z_ZC.*H7;
H=H1+H2+H8;
H_Real= real(H);
%has Real&imag parts for both variables.
H_imag = imag(H);
t_H=toc; tic;
Eq1=(H_Real-FF(:,1)).^2+(H_imag-FF(:,2)).^2;t_Eq1=toc;
EmE=sym(ones(58,1));n=0;tic;Pluss=0;Minuss=0;
% the inflection point diff(diff()) checked all points are Min
for ij=1:29
n=n+1;
nn=0;
Em1=0;Em2=0;
for jj=1:98
Em1=Em1+diff(Eq1(jj),E(ij,1));
Em2=Em2+diff(Eq1(jj),G(ij,1));nn=nn+1;
end
if (diff((Em1),E(ij,1))>=0)
Pluss=Pluss+1;
else Minuss=Minuss+1;
end
EmE(ij,1)=Em1;EmE(ij+29,1)=Em2;
end
t_EmE=toc;
tic;
sol=vpasolve(EmE,[E;G]);
t_sol=toc; ASol= real(sol.E1)
sol.E1;sol.E2;sol.E3;sol.E4;sol.E5;sol.E6;sol.E7;sol.E8;sol.E9;sol.E10;sol.E11;sol.E12;sol.E13;sol.E14;sol.E15;sol.E16;sol.E17;sol.E18;sol.E19;sol.E20;sol.E21;sol.E22;sol.E23;sol.E24;sol.E25;sol.E26;sol.E27;sol.E28;sol.E29;
FE=(2*sol.E1*(a)^(-22)+2*sol.E2*(a)^(-20)+2*sol.E3*(a)^(-18)+2*sol.E4*(a)^(-16)+2*sol.E5*(a)^(-14)+2*sol.E6*(a)^(-12)+2*sol.E7*(a)^(-10)+2*sol.E8*(a)^(-8)+2*sol.E9*(a)^(-6)+2*sol.E10*(a)^(-4)+2*sol.E11*(a)^(-2)+2*sol.E12*(a)^(0)+2*sol.E13*(a)^(2)+2*sol.E14*(a)^(4)+2*sol.E15*(a)^(6)+2*sol.E16*(a)^(8)+2*sol.E17*(a)^(10)+2*sol.E18*(a)^(12)+2*sol.E19*(a)^(14)+2*sol.E20*(a)^(16)+2*sol.E21*(a)^(18)+2*sol.E22*(a)^(20)+2*sol.E23*(a)^(22)+2*sol.E24*(a)^(24)+2*sol.E25*(a)^(26)+2*sol.E26*(a)^(28)+2*sol.E27*(a)^(30)+2*sol.E28*(a)^(32)+2*sol.E29*(a)^(34));

Sign in to comment.

More Answers (2)

Hi Walter Roberson;
Thank you for your comment
Regards 1st comment:
I'm so sorry as I cleaned my code from extra lines, some left behind. should not be a problem there based on your comment & the original one below:
Regards 2nd comment:
Sorry again for that tic-toc, & n,nn.I should delete all them from my code when I was to post it. appears missed some of them. They are not part of the problem. I used them to check the timing tic-toc. For (nn) I used to check that the loop works well.
Pluss=0; Minuss=0; % used these to test/check that the points (Em1, Em2) are the minimum and they are all mimunm, as the 2nd diff >=0;
n=0;
for ij=1:29
n=n+1;
nn=0;
Em1=0;Em2=0;
for jj=1:98
Em1=Em1+diff(Eq1(jj),E(ij,1));
Em2=Em2+diff(Eq1(jj),G(ij,1));nn=nn+1;
end
if (diff((Em1),E(ij,1))>=0)
Pluss=Pluss+1;
else Minuss=Minuss+1;
end
EmE(ij,1)=Em1;EmE(ij+29,1)=Em2;
end
The issue with code is the warning for the explicit solution.
Thanks your comment is appreciated

2 Comments

If you dbstop at the vpasolve() and examine vpa(EmE) then you will see that it has a large number of real constants times real() or imag() of various variables, added together, with no obvious cross-products or exponentiation or exp() or the like. So each row is linear in real() and imag() of those variables. But each row also ends in a constant that has both a real and an imaginary coefficient. With all of those constants being real valued, and with real() and imag() also returning real-valued information, then the part involving the variables must be real-valued. That means there is no possibility of part of a term canceling out the imaginary part of the constant coefficient of the row. Therefore the rows cannot equal 0, because although you might balance the real portion, you are left with a non-zero imaginary portion.
Walter Roberson, Thank you for highlighting this point. I feel I have to check back the constructed matrices in case something misrepresented. Your point is very important to me and helpful to know at least that as I will not getting the expected results (complex number) there is a mistake here.
However, please bear with me to double check is that mean if the constant at the end of the equation was only real, then for this form of the equation, I will have a solution of a complex number
AS from my first practice with the code where I know the variables are real constant. the solution was real as expected. checking the equations there, they have the same form that you mentioned here [constant*real+/- another-constant*imag +/-another-constant with the only real part. does that mean there is something missing there, or it is still possible to get a real solution for all the variables? Thanks

Sign in to comment.

Well I found where is the problem in the code?1
So when I extracted the real and imaginary part from my equations
H_imag = imag(H);
H_Real= real(H);
It seems that Matlab does not do it the right way, or as we may expect at this line when we run the code still see a mix of real & imaginary parts in both the H_imag, & H_Real, and here the problem
so the challenge is how to separate these parts. does Matlab, Mathematica or other software can solve the issue.
I found a source transform the same equation I have from the complex number in cartesian to polar coordinate. This step seems helped to separate the real and imaginary parts successfully
Please see the attached
I tried to convert the complex numbers to polar in MATLAB and separate the Real & imaginary parts but this did not work.
Thanks for your time and help in advance

Asked:

on 26 Sep 2018

Answered:

on 13 Oct 2018

Community Treasure Hunt

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

Start Hunting!