Try to make a function for deflection and is just dosen`t want to work.
4 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Milan Sumegi
il 31 Dic 2018
Commentato: Milan Sumegi
il 31 Dic 2018
Hello here is the task what I need to do. I been only able to do some part of it and not really knw why is my code not want to work. Tried use the help, but still cant figure it out what is the problem.
The maximum deflexion of a wind turbine blade should be no more than 10% of its span. The formula used to calculate deflexion being: Delta = (W*L.^3)/(8*E*I)
Where D is the deflexion in mm and L is the length of the blade, mm. Given that the maximum load (W) to be applied to the blade is 8500N, E the elastic modulus of the blade material is 42000 N/mm2, I is 10 million mm4. Create a MATLAB function to determine whether the deflexion of the blade will exceed design parameters or not. Your function should require Length as an input and return the resulting deflection as an output
As a secondary output, the function should also display one of two lines ’Maximum deflexion is tolerable ’ or ’Maximum deflexion will be exceeded’ depending on the value of delta. Demonstrate your code working for the following lengths;
1. 4.2m
2. 10m
3. 25m
Calculate the MAXIMUM tolerable blade length (hint: calculate L when ∆/L = 0.1)
My Code:
function deflection = Wind_turbinDef()
L= input('Lenght of the wind turbine blade in meter: ')*u.m; %Use this input to we can measure the blead deflexion in any lenght.
L=unitConvert(L,u.mm); %The lenght mast be in mm to be able to use in the formular so needed to comvert it.
W=8500*u.N; %The walue is the maximu constant
E=42000 *u.N/u.mm^2; %Elastic modulus of the blade
I=10*(10^6)*u.mm^4;
Delta=vpa((W*L^3)/(8*E*I));% Used vpa() to simplify the last division on the deflexion formular
%max deflexion is 10% from it span
Lim=L*0.1;
deflection = Delta-Lim;
if deflection < 0
Deflection= "Maximum deflexion is tolerable!";
elseif deflection == 0
Deflection = "Maximum deflexion is tolerable!";
else deflection > 0
Deflection = "Maximum deflexion will be exceeded!";
end
end
Thank you for any help!
4 Commenti
Walter Roberson
il 31 Dic 2018
Your code does not display the required messages .
Your function should take the length as a parameter instead of using input()
Your code does not define u for u.mm
why are you expecting the length in metres when all of the sample inputs are mm ?
Risposta accettata
Stephen23
il 31 Dic 2018
Modificato: Stephen23
il 31 Dic 2018
Simpler:
>> W = 8500; % max load (N)
>> E = 42000; % elastic modulus (N/mm^2)
>> I = 10e6; % ??? (mm^4)
>> Dfun = @(L) (W*L.^3)/(8*E*I); % blade length (mm)
>> D = Dfun([4.2,2.10,3.25]*1000)
D =
187.425 23.428 86.842
>> Lmax = fzero(@(L)Dfun(L)/L-0.1,[1,1e6])
Lmax = 6287.2
And this is easy to check by plotting:
>> Lv = 1:1e4;
>> Rv = Dfun(Lv)./Lv;
>> plot(Lv,Rv)
>> hold on
>> plot(Lmax,0.1,'*r')
>> xlabel('blade length (mm)')
>> ylabel('ratio D/L')
![untitled.png](https://www.mathworks.com/matlabcentral/answers/uploaded_files/199972/image.png)
4 Commenti
Stephen23
il 31 Dic 2018
Modificato: Stephen23
il 31 Dic 2018
@Milan Sumegi: use if or indexing:
>> Lw = [4.2,2.10,3.25,7]*1000
Lw =
4200 2100 3250 7000
>> Dw = Dfun(Lw)
Dw =
187.425 23.428 86.842 867.708
>> Rw = Dw./Lw
Rw =
0.044625 0.011156 0.026721 0.123958
>> C = {'is tolerable','will be exceeded'};
>> D = [num2cell(Lw);C(1+(Rw>0.1))];
>> fprintf('Length %d maximum deflection %s\n',D{:})
Length 4200 maximum deflection is tolerable
Length 2100 maximum deflection is tolerable
Length 3250 maximum deflection is tolerable
Length 7000 maximum deflection will be exceeded
Più risposte (1)
Vedere anche
Categorie
Scopri di più su Wind Power in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!