✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、程序设计科研仿真。
🍎完整代码获取 定制创新 论文复现点击:Matlab科研工作室
👇 关注我领取海量matlab电子书和数学建模资料
🍊个人信条:做科研,博学之、审问之、慎思之、明辨之、笃行之,是为:博学慎思,明辨笃行。
🔥 内容介绍
一、引言
碟形弹簧作为一种重要的弹性元件,因其具有高承载能力、良好的缓冲吸振性能以及紧凑的结构,在机械工程领域得到广泛应用。碟形弹簧的内锥角是影响其力学性能的关键参数之一,精确计算内锥角对于碟形弹簧的设计、制造和性能优化至关重要。本文将详细探讨碟形弹簧内锥角的数值计算方法。
二、碟形弹簧基本结构与力学原理
(一)结构特点
碟形弹簧通常呈截顶圆锥状,由薄钢板或钢带经冲压、淬火和回火等工艺制成。其结构参数包括外径 D、内径 d、厚度 t、内锥高度 h0 以及内锥角 α 等。这些参数相互关联,共同决定了碟形弹簧的力学性能。
(二)力学原理
碟形弹簧在承受轴向载荷 F 时,通过自身的变形来储存和释放能量。其力学性能主要通过弹性变形来实现,变形过程涉及到材料的弹性力学行为。碟形弹簧的载荷 - 变形关系是非线性的,内锥角的大小对这种非线性关系有显著影响。较小的内锥角会使弹簧在较小变形时提供较大的刚度,而较大的内锥角则使弹簧在较大变形范围内保持相对较柔和的刚度特性。
三、内锥角与其他参数的关系
⛳️ 运行结果
📣 部分代码
function [fvals,description,x]=setup_features_maxent(x,map)
%calculature features for max-ent model fitting
%first argument: the vectors to which the feature maps should be supplied
%if the first argument is a single integer, then the function generates all
%binary vectors {0,1} with that many elements,
%
%inputs:
%x: either a matrix of size N-by-d, where each row is a vector of
%data-points (usually binary), or an integer (size(x) = [1,1]).
%In the latter case, x is interpreted as the dimensionality of a binary
%space and fevals will be evaluated at all 2^x points within that space
%
%map: either integers 1, 2, 3, ('first', 'second', 'third-order' maxent),
% or 'ising' (same as 2) or 'ising_count' for ising model with additional
%constraints on the total activity count
%or a function handle for using user-supplied feature maps
%
%outputs:
%fvals, the calculated features. If map=1, then same as x, if map=2, this
%is a copy of x concatenated with all two-tupels without repetion, if
%map=3, then this is further concatenated with all three-tupels without
%any repetions. (Note that this is NOT what you might want if x is
%different from a binary (0,1) repetiation, as I am excluding all the x.^2,
%and x.^3 features etc, as they are redundant in this representation!
% function adapted from the pop_spike code base
% https://bitbucket.org/mackelab/pop_spike
[N,d]=size(x);
if (N==d) && (N==1);
d=x;
N=2^d;
x=(0:(N-1))';
x=DecToBin(x);
% if nargin==3 && convention==-1
% x=2*x-1;
% end
end
if mean(x(:)==0)>.5
x=sparse(x);
end
switch map
case 1
fvals=x;
description=[1:d];
case {2,'ising'}
pairs=nchoosek(1:d,2)';
description=[[1:d; (1:d)*nan],pairs];
fvals=[x,x(:,pairs(1,:)).*x(:,pairs(2,:))];
case 3
pairs=nchoosek(1:d,2)';
triplets=nchoosek(1:d,3)';
description=[[1:d; (1:d)*nan;(1:d)*nan],[pairs; pairs(1,:)*nan],triplets];
fvals=[x,x(:,pairs(1,:)).*x(:,pairs(2,:)),x(:,triplets(1,:)).*x(:,triplets(2,:)).*x(:,triplets(3,:))];
case 'ising_count'
pairs=nchoosek(1:d,2)';
count_indicators=zeros(N,d);
sum_x=sum(x,2);
nonzero=find(sum_x>0);
ind=sub2ind([N,d],nonzero,sum_x(nonzero));
count_indicators(ind)=1;
description=[[1:d; (1:d)*nan],pairs,[1:d; (1:d)*nan]];
fvals=[x,x(:,pairs(1,:)).*x(:,pairs(2,:)),count_indicators];
%keyboard
case 'k_pairwise' % same as 'ising_count', but has feature for K=0
pairs=nchoosek(1:d,2)';
count_indicators=zeros(N,d+1);
ind=sub2ind([N,d+1],(1:N)',sum(x,2)+1);
count_indicators(ind)=1;
description=[[1:d; (1:d)*nan],pairs,[0:d; (0:d)*nan]];
fvals=[x,x(:,pairs(1,:)).*x(:,pairs(2,:)),count_indicators];
otherwise
fvals=feval(map,x);
description='custom map, no description available';
end