在主应力空间内,MATLAB绘制Hershey-Hosford 和mises和Drucker 屈服函数的屈服面
时间: 2023-12-10 11:41:41 浏览: 199
在MATLAB中绘制Hershey-Hosford屈服函数的屈服面可以按照以下步骤:
1. 定义应力状态空间,即主应力空间。可以使用“meshgrid”函数生成三维网格点,然后将其转换为主应力空间坐标系。
```
s1 = linspace(-1,1,20);
s2 = linspace(-1,1,20);
s3 = linspace(-1,1,20);
[S1,S2,S3] = meshgrid(s1,s2,s3);
S = [S1(:) S2(:) S3(:)];
```
2. 定义Hershey-Hosford屈服函数。这里我们使用一个简单的二次函数作为例子:
```
syms s1 s2 s3;
F = s1^2 + s2^2 + s3^2 - 1/3*(s1*s2 + s1*s3 + s2*s3)^2 - 0.5*(s1^3 + s2^3 + s3^3);
```
3. 计算Hershey-Hosford屈服函数在主应力空间中的值。我们可以用“subs”函数将主应力值代入到屈服函数中,并将结果保存在一个向量中。
```
Fval = subs(F,{s1,s2,s3},{S(:,1),S(:,2),S(:,3)});
```
4. 绘制屈服面。我们可以使用“scatter3”函数将屈服面上的点绘制出来,然后使用“griddata”函数在主应力空间中进行插值,并使用“surf”函数将插值结果显示出来。
```
figure;
scatter3(S(:,1),S(:,2),S(:,3),10,Fval,'filled');
hold on;
F_interp = griddata(S(:,1),S(:,2),S(:,3),Fval,S1,S2,S3);
surf(S1,S2,S3,F_interp,'FaceAlpha',0.5,'EdgeColor','none');
colorbar;
xlabel('S1');
ylabel('S2');
zlabel('S3');
```
绘制mises和Drucker屈服函数的屈服面也可以按照类似的步骤进行。只需要将屈服函数和插值函数替换为对应的函数即可。
阅读全文