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

1 vue (au cours des 30 derniers jours)
Hasan
Hasan le 21 Déc 2024
Commenté : Hasan le 21 Déc 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

Réponses (1)

Walter Roberson
Walter Roberson le 21 Déc 2024
for S = 25 : 25 : 250

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

  3 commentaires
Walter Roberson
Walter Roberson le 21 Déc 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 le 21 Déc 2024
Ohh! it is working. Thank you Walter for your attention. :)

Connectez-vous pour commenter.

Catégories

En savoir plus sur MATLAB dans Help Center et File Exchange

Produits

Community Treasure Hunt

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

Start Hunting!

Translated by