how can i fix this error
Afficher commentaires plus anciens
clc;
clear all
dsolve('Dy = (10/3)*((x)*(y.^(2/5)))', 'y(0)=1')
Error using symengine
Invalid input. Expected 'expression'.
Error in mupadengine/evalin (line 132)
res = mupadmex(statement,output_type{:});
Error in dsolve>mupadDsolve (line 336)
sys = [sys_sym reshape(evalin(symengine, sys_str), 1, [])];
Error in dsolve (line 194)
sol = mupadDsolve(args, options);
Error in Untitled (line 5)
dsolve('Dy = (10/3)*((x)*(y.^(2/5)))', 'y(0)=1')
Réponses (1)
Star Strider
le 12 Avr 2021
I have no idea if ‘x’ is a variable or a function, so I am assuming that it is a variable here.
The correct expression would be:
syms x y(t) t Y
Dy = diff(y);
dsolve(Dy == (10/3)*((x)*(y.^(2/5))), y(0)==1)
however there is no analytic expression for ‘y’, so dsolve (with the corrected version of that expression) returns:
ans =
((3*int((10*x(x))/3, x, 0, t, 'IgnoreSpecialCases', true, 'IgnoreAnalyticConstraints', true))/5 + 1)^(5/3)
A numeric integration will require the function to be in a form that the ODE solvers can use:
[VF,Subs] = odeToVectorField(Dy == (10/3)*((x)*(y.^(2/5))));
yodefcn = matlabFunction(VF, 'Vars',{t,Y,x})
that would then be passed (for example to ode45) as:
tspan = [ ];
x = ...;
[t,y] = ode45(@(t,y)yodefcn(t,y,x), tspan, 1);
Or something similar.
Catégories
En savoir plus sur Numeric Solvers dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!