我正在尝试用matlab或其他程序绘制一张图,显示梁的一段截面上的应力分布。这是给定的函数:
s(y): (q/(h^3*l))*(l^3*2*y+(l/5)*(3*h^2*y-20*y^3))其中s表示应力,y表示高度。Y从-h/2到h/2。h,q和l是已知的值,没有具体的数字。
有没有人可以解释一下如何在一些程序中或甚至手动地这样做?
发布于 2021-01-13 23:12:36
下面是一些matlab代码,用于绘制给定一组(h,q,l)值的应力分布。您指定的值应该是y的范围(即-h/2,h/2),但是您没有指定有多少样本...更改更多或更少采样的count值。
function [] = ShowStress(h, q, l, count)
%[
% Default arguments
if (nargin < 4), count = 1001; end
if (nargin < 3), l = 0.1; end
if (nargin < 2), q = 10; end
if (nargin < 1), h = 10; end
% Create range of values for y
y = linspace(-h/2, h/2, count);
% Compute stress distribution
s = (q/(h^3*l))*(l^3*2*y+(l/5)*(3*h^2*y-20*y.^3));
% Plot things
plot(y, s);
xlabel('y'); ylabel('stress');
title(sprintf('Stress distribution (h = %G, q = %G, l = %G)', h, q, l));
%]
end

发布于 2021-01-13 17:29:42
你想要做的是绘制一个三维曲面。下面的文档解释了如何生成覆盖选定范围内规则间距的x和y值的网格。然后计算每个对象的z值,然后使用。
请参阅https://matplotlib.org/3.1.0/gallery/mplot3d/surface3d.html
https://stackoverflow.com/questions/65698325
复制相似问题