How to solve iteratively equation

조회 수: 13 (최근 30일)
Jan
Jan 2018년 12월 11일
댓글: Stephan 2018년 12월 11일
I hava next equation
p0=sqrt(1+64*beta)
p=p0+8*(1/p0-1)
and i need to solve it for beta where I have exact value for p. How can I do it iteratively or on some other way in Matlab?
  댓글 수: 1
Stephan
Stephan 2018년 12월 11일
Hi Jan,
see my answer below to get a solution to your problem. I saw that you got some answers on your questions here in the forum. Did you notice that you can accept and/or vote for useful answers? This is the easiest way to thank the volunteers here for their help.

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

답변 (1개)

Stephan
Stephan 2018년 12월 11일
편집: Stephan 2018년 12월 11일
Hi,
there is an analytic solution:
syms p0 p beta
eqn1 = p0 == sqrt(1+64*beta);
eqn2 = p == p0+8*(1/p0-1);
eqn2 = subs(eqn2,p0,rhs(eqn1));
% analytic solution
sol = isolate(eqn2,beta);
% function handle for numeric calculations
fun = matlabFunction(rhs(sol));
% assume a value (or vector of values for p)
p_exact = [2.5 5 10];
% get numeric results
result = fun(p_exact)
In case you do not have access to the Symbolic Math Toolbox, here is the function handle to calculate beta from known p-values:
fun = @(p)1.0./(p./1.6e1+sqrt(p.*1.6e1+p.^2+3.2e1)./1.6e1+1.0./2.0).^2./6.4e1-1.0./6.4e1
Best regards
Stephan

카테고리

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

제품

Community Treasure Hunt

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

Start Hunting!

Translated by