MATLAB Answers

Solve (a*B) + (c*D) = E without the Symbolic Toolbox

3 views (last 30 days)
Solve (a*B) + (c*D) = E without the Symbolic Toolbox
where, B, D, & E are all known.
If the Symbolic Toolbox was available it would looke like this:
syms a c
eqn = ((a*B) + (c*D)) / E == 1;
x = solve( eqn );
Any help would be greatly appreciated.
(Available toolboxes include: Image Processing, Signal Processing, & Statistical and Machine Learning

  0 Comments

Sign in to comment.

Accepted Answer

Star Strider
Star Strider on 25 Sep 2020
This would seem to be homework, and for homework we only give guidance and hints.
I would set it up as an implicit equation (so it equals 0), and use fsolve. To do this, ‘a’ and ‘c’ would have to be parameterized as ‘p(1)’ and ‘p(2)’, and you would have to code it as an anonymous function. .

  10 Comments

Show 7 older comments
Walter Roberson
Walter Roberson on 28 Sep 2020
If you have more than one B D E and they are considered to be related, then you can find both a and c simultenously as best-fit using techniques similar to what Ivo Houtzager shows, or using the \ operator.
Michael Garvin
Michael Garvin on 28 Sep 2020
I'm needing to find a single ‘A’ & ‘C’ that best fits ‘B’, ‘D’, and ‘E’. I think the ‘\’will work, as described above by Star Strider, but I will definitely look at Ivo Houtzagar's link. Thank you.
Star Strider
Star Strider on 28 Sep 2020
Experiment with something like this:
p = [B(:) D(:)] \ E(:);
a = p(1)
c = p(2)
If I understand correctly what you are doing, that should work.
To also get statistics with the parameter estimates, use the regress or fitlm functions, depending on what you want to do.

Sign in to comment.

More Answers (3)

Walter Roberson
Walter Roberson on 25 Sep 2020
((a*B) + (c*D)) / E == 1
((a*B) + (c*D)) == 1 * E
a*B + c*D == E
a*B == E - c*D
a == (E-c*D) / B
a == E/B - D/B * c
a == (-D/B) * c + (E/B)
Parameterized:
c = t
a = (-D/B) * t + (E/B)
You have one equation in two variables; you are not going to be able to solve for both variables simultaneously.

  0 Comments

Sign in to comment.


Ivo Houtzager
Ivo Houtzager on 25 Sep 2020
Edited: Ivo Houtzager on 25 Sep 2020
A = E*pinv([B; D]);
a = A(1);
c = A(2);

  0 Comments

Sign in to comment.


Steven Lord
Steven Lord on 26 Sep 2020
This is a generalization of Cleve's simplest impossible problem. Cleve's has B = 1/2, D = 1/2, E = 3.

  0 Comments

Sign in to comment.

Tags

Products


Release

R2020a

Community Treasure Hunt

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

Start Hunting!

Translated by