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!
