Learning how to use functions
4 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Tyde Hilderbrandt
le 19 Nov 2021
Réponse apportée : Star Strider
le 19 Nov 2021
Hey, I'm trying to learn how to use functions to solve a problem.
A simply supported beam is loaded as shown in the figure below.

Here is what I have in my Main file:
clc,clear
v=[(5/2) 5 3 30exp(6) (16/625) 30];
[V]=deflection_Hilderbrandt(v);
V
and my function file:
function [V]=deflection_Hilderbrandt(x,L,a,E,I,P)
b=L-a
if 0<=x && a>=x
V=((P*b/(6*E*I*L))*(-L^(2)+b^(2))*x+x^(3))
else a<x && L>=x
V=((P*b/(6*E*I*L))*(-L^(2)+b^(2))*x+x^(3)-(L/b)*(x-a)^(3))
end
fprintf('The value of vertical deflection V is %f \n')
end
I am getting an error in the main file as such:
Line 2: invalid floating point constant
Line2: parse error at ']' :usage might be invalid MATLAB syntax
Thank you for the help
0 commentaires
Réponse acceptée
Star Strider
le 19 Nov 2021
One problem is that there needs to be a multiplication operator between ‘30’ and ‘exp(6)’.
The other problem is that the data need to be separated into thier individual components to be evaluated in ‘deflection_Hilderbrandt’ however where this is done is simply a mater of code design. (I did it in the calling script here.)
If the rest of the code is correect, thiw works and produces the correct result —
v={(5/2) 5 3 30*exp(6) (16/625) 30};
[x,L,a,E,I,P] = v{:}
[V]=deflection_Hilderbrandt(x,L,a,E,I,P);
V
function [V]=deflection_Hilderbrandt(x,L,a,E,I,P)
b=L-a
if 0<=x && a>=x
V=((P*b/(6*E*I*L))*(-L^(2)+b^(2))*x+x^(3))
else a<x && L>=x
V=((P*b/(6*E*I*L))*(-L^(2)+b^(2))*x+x^(3)-(L/b)*(x-a)^(3))
end
fprintf('The value of vertical deflection V is %f \n')
end
.
0 commentaires
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Get Started with MATLAB 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!