i have a question that works backwards
Info
This question is closed. Reopen it to edit or answer.
Show older comments
I have a set of values for F and a set of values for D.
When F and D are divided together they give a ratio that I have the answers to in variable X
so
X=F./(D.^5)
ex.
F =[
0.0026 0.0026 0.0026 0.0026 0.0027 0.0027 0.0027 0.0028 0.0028 0.0028]
D =[
0.9652 1.0160 1.0668 1.1176 1.1684 1.2192 1.3208 1.4224 1.5240 1.6256]
X=[0.0024 0.0019 0.0015 0.0012 0.0010 0.0007 0.0005 0.0003 0.0002]
I want code that tells me for which F and which D give me the known answer of X
5 Comments
dpb
on 28 Apr 2019
What if there isn't an exact match (with floating point even if is theoretically, may not be numerically but that's a different issue)?
So, what is the desired answer for the above example data set?
Image Analyst
on 28 Apr 2019
It's possible there is no (F, D) pair that gives the desired X value. Look:
F = [0.0026 0.0026 0.0026 0.0026 0.0027 0.0027 0.0027 0.0028 0.0028 0.0028]
D = [0.9652 1.0160 1.0668 1.1176 1.1684 1.2192 1.3208 1.4224 1.5240 1.6256]
X = [0.0024 0.0019 0.0015 0.0012 0.0010 0.0007 0.0005 0.0003 0.0002]
X=F./(D.^5)
plot3(F, D, X, 'b*-', 'LineWidth', 2);
grid on;
xlabel('F', 'FontSize', 20);
ylabel('D', 'FontSize', 20);
zlabel('X', 'FontSize', 20);

Well, individually, however, the variables are monotonic so one could in theory interpolate which is what the crystal ball is saying the OP would want to do...but would be good to know just what is the desired result for sure...
yyaxis left
hLL=plot([F;X].');
ylabel('F, X')
yyaxis right
hLR=plot(D);
ylabel('D')
xlabel('Ordinal number');
legend([hLL;hLR],'F','X','D')

The attached data are lacking in significant digits for both D and F but even so, X is relatively smooth.
Omar Almahallawy
on 29 Apr 2019
Edited: dpb
on 29 Apr 2019
dpb
on 29 Apr 2019
That's a trivial Q? as posed; you calculated X_i from F,D_i so the answer is simply "i" for the set of calculated values.
IF you somehow generate the identically-computed X from some other location, then that Xprime value would match one of the originals; to find which one would be simply
indx=find(X==Xprime);
BUT as was noted in the previous comment, that exact lookup will fail almost certainly owing to floating point rounding and precision issues; perhaps ismember could help resolve that particular problem but somehow I don't think you've yet described what you're after sufficiently for us to understand what the objective is here.
Answers (1)
Jos (10584)
on 29 Apr 2019
What about
% X is known
F = X
D = ones(size(F))
% F ./ (D.^5) equals X
or is this to simply thought by me ;-)
This question is closed.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!