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

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

 採用された回答

Star Strider
Star Strider 2020 年 9 月 25 日

0 投票

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 件のコメント

Michael Garvin
Michael Garvin 2020 年 9 月 25 日
I promise you, this is not homework.
Star Strider
Star Strider 2020 年 9 月 25 日
O.K.
f = @(p) p(1)*B + p(2)*D - E;
p0 = [1;1];
P = fsolve(f, p0);
with:
a = P(1)
c = P(2)
Different values for ‘p0’ may be necessary. That may require a bit of experimentation.
John D'Errico
John D'Errico 2020 年 9 月 25 日
Except you can't use one equation to compute a solution for two variables. Yes. You will get A solution. And depending on the initial values posed, you will get completely different solutions for every set of initial values.
Star Strider
Star Strider 2020 年 9 月 25 日
Definitely true. However if we had vectors for ‘B’. ‘D’ and ‘E’, this becomes a simple linear regression problem, solved with the mldivide,\ operator.
We only know the information we have been given, and thus far, that indicates that the constants are scalars.
Michael Garvin
Michael Garvin 2020 年 9 月 28 日
And ‘B’. ‘D’ and ‘E’ are all vectors so this would be the next step. Thank you!
I was looking at fsolve and @ but had never used them before and was constantly getting errors. Thank you fro clearing it up!
Star Strider
Star Strider 2020 年 9 月 28 日
As always, my pleasure!
Walter Roberson
Walter Roberson 2020 年 9 月 28 日
Is each B D E tuple to be solved independently, or are you needing to find a single a, c that together are "best fits" over all of the B D E together?
Walter Roberson
Walter Roberson 2020 年 9 月 28 日
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 2020 年 9 月 28 日
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 2020 年 9 月 28 日
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.

サインインしてコメントする。

その他の回答 (3 件)

Walter Roberson
Walter Roberson 2020 年 9 月 25 日

0 投票

((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.
Ivo Houtzager
Ivo Houtzager 2020 年 9 月 25 日
編集済み: Ivo Houtzager 2020 年 9 月 25 日

0 投票

A = E*pinv([B; D]);
a = A(1);
c = A(2);
Steven Lord
Steven Lord 2020 年 9 月 26 日

0 投票

This is a generalization of Cleve's simplest impossible problem. Cleve's has B = 1/2, D = 1/2, E = 3.

カテゴリ

ヘルプ センター および File ExchangeMathematics についてさらに検索

製品

リリース

R2020a

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by