Using linprog for equation with exponential and upper limit
1 回表示 (過去 30 日間)
古いコメントを表示
Hi, I am replicating a calculation done in Excel that set up the equation mu(x) accordingly
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/170380/image.png)
Excel uses Solver nonlinear GRG, and I'm thinking of using Matlab's function linprog to replicate this. The unknown parameters are a, b and c, where x represent the age. I understand the from the web that x=linprog(f,A,b) and struggle to understand what f and A should be in my program. I follow the first vector of elements in A should be ones, but that is as far as I get. Please advise.
Many thanks.
0 件のコメント
採用された回答
Birdman
2018 年 2 月 15 日
These looks like a piecewise function and can easily be replicated by MATLAB's piecewise function(requires Symbolic Toolbox):
syms a b c x
mu(x)=piecewise(x<=100,a+b*exp(c*x),x>100,a+b*exp(c*100)+(x-100)*0.01)
1 件のコメント
Walter Roberson
2018 年 2 月 16 日
This will not work with linprog(). linprog() accepts a vector of coefficients, not a function.
その他の回答 (1 件)
Walter Roberson
2018 年 2 月 15 日
Your function is nonlinear in c and x. You cannot use linprog for this. linprog is strictly for linear functions.
If you did not have the a + portion of the expression then you could potentially have used a log transform, log(b) + c*log(x) which is linear in log(x)... But that will not work with the a+ portion of the expression being there.
0 件のコメント
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!