MATLAB Answers

lei yang
0

How to calculate an integral with an implicit function ?

Asked by lei yang
on 26 Aug 2019
Latest activity Answered by Chidvi Modala on 30 Aug 2019
Hey ereryone,
I have a question for integral.
syms x y r1 r2 a01 a11 a21 a31 b01 b11 b21 b31 c01 c11 c21 c31 d01 d11 d21 d31 T_0K1 P_01;
T_0K = 273.15;
P_0 = 429.38;
a0 = 8.35752 * 1E1;
a1 = - 1243.7766;
a2 = 5434.089;
a3 = - 6713.2325;
b0 = - 4.6697 * 1E3;
b1 = 34516.3188;
b2 = -157195.483;
b3 = 193600.5854;
c0 = - 1.1607 * 1E1;
c1 = 215.3399;
c2 = - 931.1303;
c3 = 1147.6397;
d0 = 0.0172;
d1 = - 0.3339;
d2 = 1.3472;
d3 = - 1.6318;
A = a0 + a1 * ( 1 - y ) + a2 * ( 1 - y )^2 + a3 * ( 1 - y )^3;
B = b0 + b1 * ( 1 - y ) + b2 * ( 1 - y )^2 + b3 * ( 1 - y )^3;
C = c0 + c1 * ( 1 - y ) + c2 * ( 1 - y )^2 + c3 * ( 1 - y )^3;
D = d0 + d1 * ( 1 - y ) + d2 * ( 1 - y )^2 + d3 * ( 1 - y )^3;
x1 = log(0.13107);
x2 = log(0.2063);
x = log(exp(a01 + a11 * ( 1 - y ) + a21 * ( 1 - y )^2 + a31 * ( 1 - y )^3 + ...
(b01 + b11 * ( 1 - y ) + b21 * ( 1 - y )^2 + b31 * ( 1 - y )^3) / T_0K1 + ...
(c01 + c11 * ( 1 - y ) + c21 * ( 1 - y )^2 + c31 * ( 1 - y )^3) * log(T_0K1) + ...
(d01 + d11 * ( 1 - y ) + d21 * ( 1 - y )^2 + d31 * ( 1 - y )^3) * T_0K1)/P_01/y);
f = y / (y -1);
ff = int(f, x, r1, r2);
fff = eval(subs(ff, {r1 r2 a01 a11 a21 a31 b01 b11 b21 b31 c01 c11 c21 c31 d01 d11 d21 d31 T_0K1 P_01}, ...
{x1 x2 a0 a1 a2 a3 b0 b1 b2 b3 c0 c1 c2 c3 d0 d1 d2 d3 T_0K P_0}));

  1 Comment

Forget about using symbolic variables.
Use MATLAB's integral. To get the value of the function y(x)/(y(x)-1) for a given x, use "fzero" to find the (correct) root of the equation
x = log(exp(a01 + a11 * ( 1 - y ) + a21 * ( 1 - y )^2 + a31 * ( 1 - y )^3 + ...
(b01 + b11 * ( 1 - y ) + b21 * ( 1 - y )^2 + b31 * ( 1 - y )^3) / T_0K1 + ...
(c01 + c11 * ( 1 - y ) + c21 * ( 1 - y )^2 + c31 * ( 1 - y )^3) * log(T_0K1) + ...
(d01 + d11 * ( 1 - y ) + d21 * ( 1 - y )^2 + d31 * ( 1 - y )^3) * T_0K1)/P_01/y)

Sign in to comment.

1 Answer

Answer by Chidvi Modala on 30 Aug 2019

I am assuming that you are trying to perform integration of the function f with respect to another function x.
int(expr,val)computes the indefinite integral ofexprwith respect to the symbolic scalar variablevar. To perform integral with respect to another function, int() doesn’t seem to be a proper fit.
Mathematically it can be interpreted as follows
You may adopt the following methodology to implement the above integral
  • Take the derivative of the function x with respect to y using ‘diff’ function
  • Multiply the f function with the resultant derivative of x function
  • Perform symbolic integration on the product with respect to y
You may use the following code snippet for your reference
f=diff(x); % derivative of function x wrt y
ff=f*(y/(y-1));
fff=int(ff,y,r1,r2); %integrating the product wrt to y

  0 Comments

Sign in to comment.