Effacer les filtres
Effacer les filtres

How can I find X for given Y value in a fitted curve. I have a non- linear equation of 6th order.

2 vues (au cours des 30 derniers jours)
X = [1:0.05:6.5];
Y = 0.0178*(X.^6) -0.3463*(X.^5) + 2.6845*(X.^4) -10.426*(X.^3) + 21.192*(X.^2) -20.642*X + 7.5426;
I have to find X for Y= 2.75e-06.
I really appreciate any help you can provide.
Shivam
  1 commentaire
Dyuman Joshi
Dyuman Joshi le 20 Oct 2022
You have an equation and a value, why not directly solve for it?
0.0178*x^6 -0.3463*x^5 + 2.6845*x^4 -10.426*x^3 + 21.192*x^2 -20.642*x + 7.5426 - 2.75e-6 = 0

Connectez-vous pour commenter.

Réponses (2)

John D'Errico
John D'Errico le 20 Oct 2022
There are more digits in those numbers as estimated. Just using numbers accurate to 4 digits is far too low for a 6th degree polynomial. The results may be suspect.
Effectively, when you say the firt coefficient is 0.0178, there are still more digits there, but just rounded off. So in realiity, that number is anything from the interval 0.01775 to 0.01785. The problem is, that tiny change in the value of this coefficient can sometimes significantly influence the result.
Here are the coefficients you have reported. as a vector:
C0 = [0.0178, -0.3463, 2.6845, -10.426, 21.192, -20.642, 7.5426];
% next, the uncertyainties in C. The true value of the coefficients in C is something in the
% interval C0 plus or minus U, for each coefficient.
U = [0.00005,0.00005 0.00005, 0.0005, 0.0005, 0.0005, 0.00005];
Ytarget = 2.75e-6;
C = C0;
C(end) = C(end) - Ytarget;
roots(C)
ans =
5.7230 + 1.5071i 5.7230 - 1.5071i 2.9209 + 1.3227i 2.9209 - 1.3227i 1.0836 + 0.0500i 1.0836 - 0.0500i
Do you see there are no solutions to this problem in real numbers? All of the roots are complex. Another way of looking at this is to look at the plot of your function. Look where this curve crosses y == 0
fplot(@(x) polyval(C,x),[0,5])
Yet that curve never actually crosses zero. It comes pretty close. I'lll zoom into the point near the closest point of approach.
fplot(@(x) polyval(C,x),[1.05,1.1])
But as you can see in this second plot, it never really crosses the axis.
Anyway, as I showed above, you can use roots to solve the problem, but your coefficients are inadequate to actually solve the problem for a real root.
A best guess for the solution is the approximate value around 1.08. We might get that as the minimum value of this polynomial
fminbnd(@(x) polyval(C,x).^2,0,10)
ans = 1.0850

dpb
dpb le 20 Oct 2022
Modifié(e) : dpb le 20 Oct 2022
"ALWAYS" plot your equation first --
fnY=@(X)0.0178*(X.^6) -0.3463*(X.^5) + 2.6845*(X.^4) -10.426*(X.^3) + 21.192*(X.^2) -20.642*X + 7.5426;
Y0=2.75E-6;
ezplot(fnY)
hAx=gca;
hL=hAx.Children;
[Ymin,Xmin]=min(fnY(hL.XData));
hAx.YScale='log';
ylim([1E-6 1E4])
yline(Y0,'-',"YZero")
yline(Ymin,'-',"Ymin "+num2str(Ymin,'%0.5f'))
There is no solution for that value...
But, we only looked at the values calculated by ezplot, maybe there is a very narrow minimum???
Xmin=fminsearch(fnY,1)
Xmin = 1.0851
Ymin=fnY(Xmin)
Ymin = 0.0054
  2 commentaires
Dyuman Joshi
Dyuman Joshi le 20 Oct 2022
Evidently, interp1 returns NaN as well.
X = [1:0.05:6.5];
Y = 0.0178*(X.^6) -0.3463*(X.^5) + 2.6845*(X.^4) -10.426*(X.^3) + 21.192*(X.^2) -20.642*X + 7.5426;
interp1(Y,X,2.75e-6)
ans = NaN
Since we are reverse interpolating, it should suggest that there exists no value corresponding to it.
John D'Errico
John D'Errico le 22 Oct 2022
Yes. I showed in my answer there is no solution possible for that y. Though the function comes close near one point, it lies everywhere above that value.
format long g
fnY=@(X)0.0178*(X.^6) -0.3463*(X.^5) + 2.6845*(X.^4) -10.426*(X.^3) + 21.192*(X.^2) -20.642*X + 7.5426;
[xmin,ymin] = fminbnd(fnY,-10,10)
xmin =
1.08502279571274
ymin =
0.00542727334580917
That is the global min in fact, since the target value of 2.75e-06 is closer to -inf than the global minimum, no real valued solution could ever be found. There are of course 6 complex solutions, two of which will be close to that point, with small imaginary parts.

Connectez-vous pour commenter.

Catégories

En savoir plus sur Get Started with Curve Fitting Toolbox dans Help Center et File Exchange

Produits


Version

R2020b

Community Treasure Hunt

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

Start Hunting!

Translated by