关于辊系弹性模型的,有大佬知道这个模型哪里出错了嘛,结果一下出错。

2301_79899011 2024-09-25 13:50:30

% 初始化参数

b = 110; % 带材宽度, mm

m = 11; % 条元数量

E = 70e9; % 弹性模量, Pa

mu = 0.3; % 泊松比

k = 500; % 剪切变形抗力, MPa

tau = 100; % 平均摩擦应力, MPa

sigma1 = 100; % 平均前张应力, MPa

v1 = 10; % 出口横向平均速度, m/s

h0=1;

h1=0.8;

s=rand(1,m)*(b/m);%随机生成宽度

s=s/sum(s)*b;%归一化

% y=[0,cumsum(s)];%从0开始,累加每个条元的宽度得到节线坐标

% x = (y(1:end-1) + y(2:end)) / 2;% 计算条元的中间坐标

y=zeros(1,m+1);

for i=1:m

y(i+1)=y(i)+s(i);

end

% 预分配入口和出口厚度数组

h_0 = zeros(1, m); % 预分配入口厚度数组

h_1 = zeros(1, m); % 预分配出口厚度数组

%计算入口和出口厚度

for i=1:m

h_0(i)=rand()*2+1;% 随机生成厚度,范围1-3mm

h_1(i)= h_0(i)-rand()*0.2;% 出口厚度小于入口厚度

end

R=50;

l=sqrt(R*(h_0(i)-h_1(i))); %接触弧长 mm100;

xn=y(1:end-1)+diff(y)/2;%中性点坐标

% 预分配

h = zeros(1, m); % 变形区厚度

dt_h = zeros(1, m); % 压下量

l0 = zeros(1, m); % 来料长度

h_n = zeros(1, m); % 中性点厚度

h_c = zeros(1, m); % 平均厚度

c = zeros(1, m); % 计算量

y = linspace(0, b, m); % 横向坐标

for i=1:m

h(i)=h_1(i)+(h_0(i)-h_1(i)).*(xn(i)/l).^2;%变形区条元厚度%%%%%%

dt_h(i)=h_0(i)-h_1(i);% 条元的压下量

l0(i)=l/m;%条元来料长度

h_n(i)=(h_0(i)+h(i))/2;%条元中性点厚度

h_c(i)=(h_0(i)+h_1(i))/2;

c(i)=(dt_h(i)*l)/h_n(i);

end

T = zeros(1, m);

K_A = zeros(1, m);

%计算K值

for i=1:m

T(i)=1+(3*h_c(i)*(1-(mu)^2))/(2*E*dt_h(i));

K_A(i)=((8*tau*h_n(i)*(1-(mu)^2))/(E*h_c(i)*dt_h(i)*l*T(i))).*0.5;

end

%条元出口节线上的出口横向位移值的确定

A = zeros(1, m);

B = zeros(1, m);

C_A = zeros(1, m);

N = zeros(1, m);

T = zeros(1, m);

lambda=zeros(1,m);

e_b=E/((1-(mu)^2)*b);

% 构建系数矩阵和常数向量

A_A= zeros(m+1, m+1);%系数矩阵

C_C = zeros(m+1, 1);%常数向量

%填充系数矩阵和常数向量

A_A(1,1)=A(1)-e_b;

A_A(1,2)=B(1);

A_A(1,m)=e_b;

C_C(1)=-k+C_A(1);

for i=1:m

A(i)=N(i)*coth(K_A(i)*s(i))+lambda(i)*((K_A(i)*s(i))/(sinh(K_A(i)*s(i))^2));

B(i)=-lambda(i)*(K_A(i)*s(i)*cosh(K_A(i)*s(i)))/(sinh(K_A(i)*s(i))^2)-N(i)/(sinh(K_A(i)*s(i)));

C_A(i)=(E/(1-(mu)^2))*(1+(h_1(i)/h1)-(h_0(i)/h0)-(l0(i)/l0(i)));%%%%%

N(i)=(k*h_c(i)*K_A(i))/dt_h(i)+(4*tau*h_n(i))/(h_c(i)*dt_h(i)*l*K_A(i))+(E*K_A(i))/(2*(1-(mu)^2));

lambda(i)=(k*h_c(i)*K_A(i))/dt_h(i)+(4*tau*h_n(i))/(h_c(i)*dt_h(i)*l*K_A(i))+(E*K_A(i))/(2*(1-(mu)^2));

end

% (A(1)-e_b)*u(0)+B(1)*u(1)+e_b*u(m)=-k+C_A(1)

% B(j)*u(j-1)+(A(j)+A(j+1))*u(j)+B(j+1)*u(j+1)=C_A(j+1)-C_A(j)

% e_b*u(0)+B(m)u(m-1)+(A(m)-e_b)u(m)=k-C_A(m)

for j=1:m-1

A_A(j+1,j)=B(j);%第 j+1 个条元与第 j 个条元之间的相互作用。

A_A(j+1,j+1)=A(j)+A(j+1);%第 j+1 个条元自身的相互作用,通常涉及到当前条元和相邻条元的系数。

A_A(j+1,j+2)=B(j+1);% j+1 个条元与下一个条元(第 j+2 个)之间的相互作用。

C_C(j+1)=C_A(j+1)-C_A(j);%第 j+1 个条元上,由于物理条件变化(如力、压力等)导致的净效应。

end

A_A(m+1, 1) = e_b;

A_A(m+1, m-1) = B(m);

A_A(m+1, m+1) = A(m) - e_b;

C_C(m+1) = k - C_A(m);

% u = A_A \ C_C;

% disp('出口横向位移 u:');

% disp(u);

% 检查系数矩阵的条件数

rcondA_A = cond(A_A);

if rcondA_A > 1e10 % 如果条件数很大,矩阵可能接近奇异

u = pinv(A_A) * C_C;% 如果条件数较小,则使用伪逆求解

else

A_reg = A_A + 1e-10 * eye(size(A_A)); % 添加正则化项

u = A_reg \ C_C; % 使用正则化矩阵求解

end

...全文
101 回复 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

183

社区成员

发帖
与我相关
我的任务
社区描述
欢迎加入Matlab编程社区,支持各专业领域有关Matlab的博文、编程知识、经验分享,感谢每一份支持,您的鹅毛在路上了~
matlab 个人社区 山东省·潍坊市
社区管理员
  • Wayne_Fine
  • 数学建模加油站
  • MATLAB码农
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧