How to solve the two equations numerically in which tabular data is also to be loaded?

조회 수: 1 (최근 30일)
I have two equations as;
(D-0.025)^1.5 * J(c) = 0.0025;
c = 0.5 - 0.01/D;
Where J(c) is the particular value of J corresponding to value of c.
There is table (c vs J) to be loaded in which values of "J" (2nd column) corresponding to "c" (1st column) are given as under
Table = [0.1 0.1156; 0.2 0.1590; 0.3 0.1892; 0.4 0.2117; 0.5 0.2288; 0.6 0.2416; 0.7 0.2505]
My problem: 1. I want to find optimal value of "D" and "J".
Also Note that its not important that the value of D exist in the table; so i also need to interpolate the value of "D"(existing in between two cells) and corresponding "J" value.

채택된 답변

Walter Roberson
Walter Roberson 2018년 8월 14일
You can rewrite the interpolation as a polynomial of degree 6; it works out as
- (25*x^6)/12 + (145*x^5)/24 - (359*x^4)/48 + (499*x^3)/96 - (239*x^2)/100 + (10583*x)/12000 + 117/2500
You can then substitute that into your equations, converting all of your floating point values to rationals.
The system you get can then be solved in terms of a value that is the primary root of a degree 15 polynomial,
R = root([512 -15616 222208 -1962496 12118592 -56160800 203296128 -579497504 1277765482 -2115195465 2460287016 -1208021246 11455984710 -86217800113 215987875056 -180007884864])
D = (1/10)*(86016*R^14-2476544*R^13+32687360*R^12-257504256*R^11+1311552000*R^10-4612323392*R^9+12775515552*R^8-33673493056*R^7+86104656976*R^6-190723241666*R^5+393335706409*R^4+1248605641188*R^3-12283484659202*R^2+31089547519966*R-25920766050455)/(136192*R^14-3095552*R^13+19046656*R^12+161221632*R^11-3087622016*R^10+19694850944*R^9-63486597472*R^8+88752422720*R^7+101264091972*R^6-913631183772*R^5-936427888987*R^4+34659208386904*R^3-152565699173910*R^2+279861195719556*R-190086479566579)
c = (1/10)*(15616*R^14-444416*R^13+5887488*R^12-48474368*R^11+280804000*R^10-1219776768*R^9+4056482528*R^8-10222123856*R^7+19036759185*R^6-24602870160*R^5+13288233706*R^4-137471816520*R^3+1120831401469*R^2-3023830250784*R+2700118272960)/(3840*R^14-109312*R^13+1444352*R^12-11774976*R^11+66652256*R^10-280804000*R^9+914832576*R^8-2317990016*R^7+4472179187*R^6-6345586395*R^5+6150717540*R^4-2416042492*R^3+17183977065*R^2-86217800113*R+107993937528)
The values are approximately D = 0.07782594605604250, c = .3715081472598230
  댓글 수: 9
Walter Roberson
Walter Roberson 2018년 8월 15일
N = size(T,1);
y = sym('y', [N, 1]);
interp_poly = poly2sym( polyfit(T(:,1), y, N-1), 'x' );
interp_poly would then be the same for each table that has the same T(:,1) values. However, it would have to be processed further to against the equations with solve() to get solutions.
amrinder
amrinder 2018년 8월 18일
Thanks Walter, for the solution.... It somehow solved my purpose....

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

추가 답변 (2개)

Alan Weiss
Alan Weiss 2018년 8월 13일
First you have to make a function that interpolates your data so that the function can be evaluated at any point. Load the c and J values into your workspace, then define
fun = @(xq)interp1(c,J,xq)
I didn't completely understand whether you have two functions that need to be interpolated or not; if so, then make a second function fun2 that interpolates your other function (D?). Now you can use standard equation-solving functions such as fzero or fsolve (from Optimization Toolbox™) to solve your equation or equations.
It is possible that you would want to use a smooth interpolation method in interp1. If so, see the interp1 function reference page.
Good luck,
Alan Weiss
MATLAB mathematical toolbox documentation
  댓글 수: 1
amrinder
amrinder 2018년 8월 14일
편집: Walter Roberson 2018년 8월 14일
Hello Alan,
Sorry i think i wasn't much clear in my question. I have the two equations
(D-0.025)^1.5 * J(c) = 0.0025 and
c = 0.5 - 0.01/D
on which trial and error method needs to be applied as following:
Step1: value of D needs to be assumed...
Step2: value of c will then be calculated from 2nd equation...
Step3: From the table (as mentioned above) corresponding value of J w.r.t c calculated in step 2 needs to be found (here if calculated value of c in step2 is not in the table then value of c and corresponding J needs to interpolated)
Step4: Put the values of D and J(c) in equation 1 (value of J corresponding to c is written as J(c)).
Step5: If in 1st equation, LHS = RHS then the values of D and J(c) are finalised otherwise repeat again from step1.
Thanks hope i made myself clear now

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


amrinder
amrinder 2018년 8월 14일
Kindly provide the answer to the question, i need it in my project

카테고리

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

Community Treasure Hunt

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

Start Hunting!

Translated by