MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn moreOpportunities for recent engineering grads.

Apply Today
Asked by Benjamin on 3 Dec 2012

I am trying to write a function that will solve for the deflection of a beam given other information.

I am not sure what the error is and I have been trying to solve it for a really long time. The first part of the script (up until the first 'if') is meant to create values that will be already made after I call the function.

Does anybody know what my problem is?

clear;clc beam.load=1; beam.support = 1; L = 30; x = linspace(0,L); a = 20; E = 10.0E6; I = 9; F = 100; i = 1;

if beam.load == 1 && beam.support == 1 % Point & Cantilever while 0 < x(i) < a y(i) = F*x(i)^2/(6*E*I)*(3*a - x(i)); i = i + 1; end while a < x(i) < L y(i) = F*a^2/(6*E*I)*(3*x(i) - a); i = i+1; end end

*No products are associated with this question.*

Answer by Matt Fig on 3 Dec 2012

Edited by Matt Fig on 3 Dec 2012

Accepted answer

You want

0 < x(i) && x(i) < a

Your expressuon evaluates to:

1 < a

Because MATLAB evaluates from left to right. Similarly for the next conditional.

Benjamin on 3 Dec 2012

Thanks!

However, for some reason it didn't work with

0 < x(i) < a

I had to change it to

x(i) < a

and it worked.

## 0 Comments