how to solve implicit equation with two variables
이전 댓글 표시
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
Matt Kindig
2013년 7월 31일
편집: Matt Kindig
2013년 7월 31일
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
2013년 7월 31일
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
2013년 7월 31일
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
2013년 8월 1일
답변 (0개)
카테고리
도움말 센터 및 File Exchange에서 Spline Postprocessing에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
