matrix simultaneous equations returning 0s
1 view (last 30 days)
Show older comments
Edward Roberts
on 16 Sep 2022
Commented: Walter Roberson
on 18 Sep 2022
Code should return FM values as 2x104 matrix with x and y values but it keeps returning 0s as x values. I think it's because instead of returning values for each square set in equation, it's returning the whole sum of both xA and xB over the solution rather than breaking it up.
Ax = 0;
Ay = 0.25;
Bx = 0;
By = 3.25;
Py = 30 + 3.5118*7;
x=0.5:0.5:4; nx=length(x);
y=-1:0.5:5; ny=length(y);
xM=zeros(2,nx*ny);
for i=1:nx
for j=1:ny
xM(:,(i-1)*ny+j)=[x(i),y(j)];
AxM = Ax - xM(1, :);
AyM = Ay - xM(2, :);
BxM = Bx - xM(1, :);
ByM = By - xM(2, :);
MA = sqrt(AxM.^2 + AyM.^2);
MB = sqrt(BxM.^2 + ByM.^2);
xA = AxM./MA;
xB = BxM./MB;
yA = AyM./MA;
yB = ByM./MB;
A3 = [xA xB; yA yB];
B3 = [0;Py];
FM = A3.\B3;
end
end
please help, edited to have all values
8 Comments
Accepted Answer
Torsten
on 17 Sep 2022
Edited: Torsten
on 17 Sep 2022
Ax = 0;
Ay = 0.25;
Bx = 0;
By = 3.25;
Py = 30 + 3.5118*7;
x=0.5:0.5:4; nx=length(x);
y=-1:0.5:5; ny=length(y);
xM=zeros(2,nx*ny);
FM=zeros(2,nx*ny);
for i=1:nx
for j=1:ny
xM(:,(i-1)*ny+j)=[x(i);y(j)];
AxM = Ax - xM(1, (i-1)*ny+j);
AyM = Ay - xM(2, (i-1)*ny+j);
BxM = Bx - xM(1, (i-1)*ny+j);
ByM = By - xM(2, (i-1)*ny+j);
MA = sqrt(AxM.^2 + AyM.^2);
MB = sqrt(BxM.^2 + ByM.^2);
xA = AxM./MA;
xB = BxM./MB;
yA = AyM./MA;
yB = ByM./MB;
A3 = [xA xB; yA yB];
B3 = [0;Py];
fm = A3\B3;
FM(1,(i-1)*ny+j) = fm(1);
FM(2,(i-1)*ny+j) = fm(2);
end
end
xM
FM
3 Comments
Walter Roberson
on 18 Sep 2022
We help teach MATLAB, so not knowing MATLAB is not inherently a problem. But when we ask for information multiple times and the information is not provided, we might give up.
More Answers (1)
Walter Roberson
on 16 Sep 2022
FM = A3.\B3;
You overwrite all of FM each iteration. The final result will be what was assigned for the final i j combination.
If that is deliberate then notice that you could omit everything except the assignment to xM inside of the loop and move everything else in the loop to after the loop since you overwrite all of those variables anyway.
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!