symbolic integrate and plot a function of one variable

36 views (last 30 days)
Dear Hello
I apologize if there are any inaccuracies in the question.
I'm having a problem integrating a differential equation in a single variable.
The following is the differential equation satisfied by the function "x(u)" that is the x-component of a 2D curve given in parametric form (...this curve is the pathline of an infinitesimal volume of fluid, but that doesn't matter). The parameter "u" is time.
So pathline = {x(u), y(u)} is a 2D curve for 'u' in a certain interval.
Equation:
diff( x(u),u ) == 159648450049389632/(3991211251234741*(4 - (C1 + 2*u + 3)^(1/2))^(1/2)) - 8*x(u) + 14
C1 is a parameter that I'd like to keep,
and I look for a solution in the interval of 'u' in which the above expression is real.
I proceed by doing
dsolve( diff( x(u),u ) == 159648450049389632/(3991211251234741*(4 - (C1 + 2*u + 3)^(1/2))^(1/2)) - 8*x(u) + 14)
I get x(u) like this:
x(u) = exp(-8*u)*int(14*exp(8*u) + (159648450049389632*exp(8*u))/(3991211251234741*(4 - (C1 + 2*u + 3)^(1/2))^(1/2)), u, 'IgnoreSpecialCases', true, 'IgnoreAnalyticConstraints', true) + C2*exp(-8*u)
unless I've made a mistake somewhere.
I already had the 'y(u)' component of the pathline as a function of 'u', and it's:
y(u) = -1/(C1 + 2*u)
Now I'd like to visualize this pathline. To do this, I'll first set the two integration constants C1 and C2, e.g. C1=-3 and C2=1,
C1=-3
C2=1
x=eval(x)
y=eval(y)
now both x and y depend only on 'u', so I use the command
fplot(x,y)
but I get an error... I was wondering how to create this graph
thankYou very much !
Val
  1 Comment
Walter Roberson
Walter Roberson on 9 Dec 2025 at 18:39
syms x(u) y(u) C1 C2
RHS = 159648450049389632/(3991211251234741*(4 - (C1 + 2*u + 3)^(1/2))^(1/2)) - 8*x(u) + 14;
LHS = diff(x,u);
eqn = LHS == RHS
eqn(u) = 
X(u) = dsolve(eqn)
X(u) = 
y(u) = -1/(C1 + 2*u)
y(u) = 
C1 = sym(-3)
C1 = 
C2 = sym(1)
C2 = 
1
X1 = subs(X)
X1(u) = 
Y1 = subs(y)
Y1(u) = 
fplot(X1);
Warning: Error in state of SceneNode.
First argument must be an integral 'int(..., ...)'.
Error using mupadengine/evalin2sym
First argument must be an integral 'int(..., ...)'.

Error in mupadengine/feval2sym_NaNsingularity

Error in matlab.graphics.function.internal.sym2fn (line 32)
f2 = feval2sym_NaNsingularity(symengine,'symobj::unapplyPlotFunction',sf,var_f);
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Error in matlab.graphics.function.FunctionLine>getFunction

Error in matlab.graphics.function.FunctionLine/updateFunction

Error in matlab.graphics.function.FunctionLine

Error in fplot>singleFplot (line 268)
hObj = matlab.graphics.function.FunctionLine(fn{1},extraOpts{:},args{:});
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Error in fplot>@(f)singleFplot(cax,{f},limits,extraOpts,args) (line 223)
hObj = cellfun(@(f) singleFplot(cax,{f},limits,extraOpts,args),fn{1},'UniformOutput',false);
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Error in fplot>vectorizeFplot (line 223)
hObj = cellfun(@(f) singleFplot(cax,{f},limits,extraOpts,args),fn{1},'UniformOutput',false);
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Error in fplot (line 186)
hObj = vectorizeFplot(cax,fn,limits,extraOpts,args);
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
hold on
fplot(Y1)
hold off

Sign in to comment.

Accepted Answer

Torsten
Torsten about 14 hours ago
Edited: Torsten about 20 hours ago
syms x(u) y(u) g(u) C1 C2 v uref
g(u) = 159648450049389632/(3991211251234741*(4 - (C1 + 2*u + 3)^(1/2))^(1/2)) + 14;
x = C2*exp(-8*u)+exp(-8*u)*int(exp(8*v)*g(v),v,uref,u);
xs = subs(x,[C1 C2 uref],[-3 1 0]); % x satisfies x(uref) = C2*exp(-8*uref), thus here x(0) = C2
y = -1/(C1 + 2*u);
ys = subs(y,C1,-3);
fplot(xs,ys,[0 1])
  2 Comments
Val
Val 4 minutes ago
thankyou Mr Torsten , transforming the indefinite integral to definite integral ---> fplot work ! very powerful plot command
You chose uref = '0' for some reason ?
Hello
Valerio
Val
Val 1 minute ago
sorry , i saw just now , " % x satisfies x(uref) = C2*exp(-8*uref), thus here x(0) = C2 " thanks 😊

Sign in to comment.

More Answers (1)

Walter Roberson
Walter Roberson about 15 hours ago
The basic problem is that the integral that is produced by dsolve() is an indefinite integral, not a definite integral. That works out in theory, but fplot has trouble with it.
  2 Comments
Val
Val 26 minutes ago
Ok , i need to transform it to a definite integral...thankyou very much 😊
Val
Val 7 minutes ago
Dear Mr Roberson
there exist an interpreter that transform expression written in matlab language to
expression with mathematical symbols like You done ?
"
"

Sign in to comment.

Tags

Products


Release

R2024a

Community Treasure Hunt

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

Start Hunting!