error on using fplot
44 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Hi, I'm new on matlab and maybe this could be a silly answer. I solved this fourth order differential equation, but I have some problems with the function "fplot(usol(x))". Could anyone help me? Thank you! That's the code:
syms u(x) d
a=0.1
Du=diff(u,x)
D2u=diff(u,x,2)
D3u=diff(u,x,3)
ode=diff(u,x,4)==-4*(a^4)*u
c1=u(0)==d
c2=D2u(0)==0
c3=D2u(1)==0
c4=D3u(1)==0
conds=[c1 c2 c3 c4]
usol(x)=dsolve(ode,conds)
usol(x)=subs(usol(x))
fplot(usol(x));
-------------------------------
I report also the error:
Error using fplot>singleFplot (line 240)
Input must be a function or functions of a single
variable.
Error in
fplot>@(f)singleFplot(cax,{f},limits,extraOpts,args)
(line 200)
hObj = cellfun(@(f)
singleFplot(cax,{f},limits,extraOpts,args),fn{1},'UniformOutput',false);
Error in fplot>vectorizeFplot (line 200)
hObj = cellfun(@(f)
singleFplot(cax,{f},limits,extraOpts,args),fn{1},'UniformOutput',false);
Error in fplot (line 166)
hObj =
vectorizeFplot(cax,fn,limits,extraOpts,args);
Error in fourhordertravesuoloelastico (line 18)
fplot(usol(x));
0 commentaires
Réponse acceptée
Jorg Woehl
le 8 Mar 2021
Modifié(e) : Jorg Woehl
le 8 Mar 2021
Your solution usol contains two symbolic variables, x and d, but fplot can only deal with functions of a single variable. I suppose that you have forgotten to substitute the value for d, which is probably what you were trying to do in the line usol(x)=subs(usol(x)) - otherwise, this line wouldn't do anything.
For example, this works just fine:
d = 0.2
usol = subs(usol)
fplot(usol)
3 commentaires
Jorg Woehl
le 8 Mar 2021
In this case, you could put your code (except for the fplot line) in a function myfun(a) or even myfun(a, dValue), where you supply the needed numerical values. (Note that if want d to remain a symbolic varialbe inside the function, you need to supply its numerical value using another variable dValue).
function usol = myfun(a, dValue)
syms u(x) d
Du = diff(u, x);
...
d = dValue;
usol = subs(usol);
end
Then call your function multiple times to create your plots and add them all to the same graph:
fplot(myfun(0.1, 0.2));
hold on;
fplot(myfun(second_a_value, 0.2));
fplot(myfun(third_a_value, 0.2));
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Formula Manipulation and Simplification dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!