Find value of beta

조회 수: 3 (최근 30일)
Mithun Routh
Mithun Routh 2018년 9월 9일
편집: John D'Errico 2018년 9월 9일
0.45 = c1 * (c2*k - c3*Beta - c4.*Beta.^c5 -c6).* exp( -c7 *k);
where
k=1./(x+c8.*Beta)-c9./(Beta.^3+1);
and
x=4;
c1=0.73 ;
c2=151 ;
c3=0.58 ;
c4=0.002 ;
c5=2.14 ;
c6=13.2 ;
c7=18.4 ;
c8=-0.02 ;
c9=-0.003;
  댓글 수: 1
John D'Errico
John D'Errico 2018년 9월 9일
편집: John D'Errico 2018년 9월 9일
Please, learn to format your code so that it is readable. I did it for you here.
https://www.mathworks.com/matlabcentral/answers/13205-tutorial-how-to-format-your-question-with-markup#answer_18099

댓글을 달려면 로그인하십시오.

답변 (1개)

John D'Errico
John D'Errico 2018년 9월 9일
편집: John D'Errico 2018년 9월 9일
If these are known:
x=4;
c1=0.73 ;
c2=151 ;
c3=0.58 ;
c4=0.002 ;
c5=2.14 ;
c6=13.2 ;
c7=18.4 ;
c8=-0.02 ;
c9=-0.003;
and beta is an unknown variable, then there are two choices. Either solve for the roots of your equation using a tool like fzero, or try to use the symbolic toolbox, thus solve or vpasolve.
The problem is that beta appears inside k, and then you take the exponential of k. You also find beta and k outside the exponential. So unless you get lucky, and MATLAB is able to do some LambertW work here, there will probably be NO analytical solution. Its probably just not gonna happen (in fact, I'll make that HIGHLY probably not gonna happen.) That means you will need to look for a numerical solution. That means either vpasolve, or fzero.
But nothing stops you from trying it!!!!! Sigh. First plot things. Always plot EVERYTHING that you can plot.
kfun = @(beta) 1./(x+c8.*Beta)-c9./(Beta.^3+1);
betafun = @(beta) c1 * (c2*kfun(beta) - c3*Beta - c4.*Beta.^c5 -c6).* exp( -c7 *kfun(beta)) - 0.45;
ezplot(betafun)
(error stuff generated.)
Oops. Now I realize that you seem to use Beta and beta, as if MATLAB should not be case sensitive. IT IS!!!!!!! Case matters.
By the way, it is a REALLY bad idea to use beta as a variable name, as that will overload the very useful function beta.m. I'm gonna go with Beta.
kfun = @(Beta) 1./(x+c8.*Beta)-c9./(Beta.^3+1);
Betafun = @(Beta) c1 * (c2*kfun(Beta) - c3*Beta - c4.*Beta.^c5 -c6).* exp( -c7 *kfun(Beta)) - 0.45;
ezplot(Betafun,[-10,10])
Hmm. It looks like for negative values of Beta, you get nothing out, which here implies complex results. If we go up as far as 200, it looks like it never crosses 0.
ezplot(Betafun,[0,200])
But then around 200, something goes crazy, and it looks like you get garbage between around [200,210] or so, where it comes up from -inf. But it still never crosses the x axis.
ezplot(Betafun,[0,10000])
So, before you try to solve a problem that has no solution, look carefully at it.
The rest is up to you. There may be complex solutions that vpasolve MIGHT be able to find.

카테고리

Help CenterFile Exchange에서 Calculus에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by