how to solve implicit equation with two variables
Mostra commenti meno recenti
Dear fellows,
I have a function like this pf=f(p1,p2). The problem is "pf" is a vecotor so in fact there are two output for this function, pf(1) and pf(2). And there is not explicit expression for function f. It is a big function and involves a lot of logic compare, etc inside it. I want to solve for p1 and p2 such that pf(1)=1000 and pf(2)=1000. Do you know how to realize this?
Cheers, Xueqi
6 Commenti
Matt Kindig
il 31 Lug 2013
Modificato: Matt Kindig
il 31 Lug 2013
Hi xuequi,
If you have the Optimization Toolbox, the lsqnonlin() function can allow you to solve this equation. Basically, you would call it like this:
%I'm assuming p1 and p2 to be scalars
p0 = [0; 0]; %initial guesses for p1, p2
pf = [1000; 1000]; %target values for pf
f2 = @(p) f(p(1),p(2))-pf; %function to minimize
psolve = lsqnonlin(f2, p0); %this should solve for p1 and p2
Walter Roberson
il 31 Lug 2013
It appears the output is not monotonic? Is it certain there is only one solution ?
You could also try fsolve() of @(p) sum(f2(p)) where f2 is as Matt Kindig shows.
Walter Roberson
il 31 Lug 2013
You are right, sum() could result in accidental zeros. The difficulty with sum(f2(p).^2) is that it will not have 0 crossings, just a single 0 (round-off permitting); if that is acceptable then fminbnd() would likely be a better choice than fsolve()
xueqi
il 1 Ago 2013
Risposte (0)
Categorie
Scopri di più su Spline Postprocessing in Centro assistenza e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
