i want to iterate for each crack size from 25 to 250mpa with 25 increments

1 Ansicht (letzte 30 Tage)
Hasan
Hasan am 21 Dez. 2024
Kommentiert: Hasan am 21 Dez. 2024
I want to iterate for every load from 25 to 250 mpa with 25 increments but i didn't take conclusion. here my code and please help me;
clc
clear all
close all hidden
W = 0.4;
Sy = 250;
ea = 0.001;
Es = 0;
i=1;
fprintf('%10s %10s %10s\n','Load','K1eff Irwins app.','At iteration no');
for S = 25
S = S+25;
while abs(Es)<ea
i=i+1;
aold = 0.0254;
x1 = aold/W;
bold = 1+0.256.*x1-1.152.*x1.^2+12.2.*x1.^3;
kold = bold.*S.*(pi.*aold).^1/2;
rp = (1/(2.*pi)).*(kold./Sy).^(2);
anew = aold + rp;
x2 = anew./W;
bnew = 1+0.256.*x2-1.152.*x2.^2+12.2.*x2.^3;
knew = bnew.*S.*(pi.*anew).^(1/2);
Es = abs((knew-kold)./knew).*100;
if Es >= 0.0001
anew = aold;
end
fprintf('%10.4f %10.4f [%10.4f]\n', S, knew, i)
end
if S==250
break
end
end

Antworten (1)

Walter Roberson
Walter Roberson am 21 Dez. 2024
for S = 25 : 25 : 250

and get rid of the S=S+25 and the test for S==250

  3 Kommentare
Walter Roberson
Walter Roberson am 21 Dez. 2024
while abs(Es)<ea
Nothing in your for loop changes Es or ea. Once abs(Es)<ea becomes false, nothing resets Es or ea, so the test will continue to be false on the next iteration (and the iteration after that...)
You probably need to move the
Es = 0;
inside the for loop.
Hasan
Hasan am 21 Dez. 2024
Ohh! it is working. Thank you Walter for your attention. :)

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu MATLAB finden Sie in Help Center und File Exchange

Produkte

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by