clear all; clc;
syms omega;
% 梁参数
E = 3.45 * 10^3; % 弹性模量 (Pa)
I = 289.81; % 截面惯性矩 (m^4)
rho = 2500; % 梁材料密度 (kg/m^3)
A = 34.36; % 梁的截面积 (m^2)
L = 80; % 每跨长度 (m)
k = 2.96 * 10^9; % 弹簧支座刚度 (N/m)
n = 2; % 跨数
% 流体参数
Cm = 1.2; % 质量系数
rho_w = 1000; % 水的密度 (kg/m^3)
% 等效质量
m = rho * A; % 梁的单位长度质量
m_eff = m + (Cm - 1) * rho_w * A;
% 定义 alpha 作为 omega 的函数
alpha = (omega^2 * m_eff / (E * I))^(1/4);
% 定义符号矩阵A及分块矩阵
A_matrix = sym(zeros(4 * n, 4 * n)); % 确保A_matrix是符号矩阵
A1 = [0, 1, 0, 1;
0, -1, 0, 1];
A2 = [sin(alpha * L), cos(alpha * L), sinh(alpha * L), cosh(alpha * L);
cos(alpha * L), -sin(alpha * L), cosh(alpha * L), sinh(alpha * L);
-sin(alpha * L), -cos(alpha * L), sinh(alpha * L), cosh(alpha * L);
-cos(alpha * L) -(k / (alpha^3 * E * I)) * sin(alpha * L), sin(alpha * L) - (k / (alpha^3 * E * I)) * cos(alpha * L), cosh(alpha * L) - (k / (alpha^3 * E * I)) * sinh(alpha * L), sinh(alpha * L) - (k / (alpha^3 * E * I)) * cosh(alpha * L)];
A3 = [0, -1, 0, -1;
-1, 0, -1, 0;
0, -1, 0, 1;
1, 0, -1, 0];
A4 = [sin(alpha * L), cos(alpha * L), sinh(alpha * L), cosh(alpha * L);
-sin(alpha * L), -cos(alpha * L), sinh(alpha * L), cosh(alpha * L)];
% 构建A_matrix
for i = 1:n-1
% 更新A_matrix的分块
A_matrix(1:2, 1:4) = A1;
A_matrix(4*i-1:4*i+2, 4*i-3:4*i) = A2;
A_matrix(4*i+1:4*i+4, 4*i-3:4*i) = A3;
A_matrix(4*n-1:4*n, 4*n-3:4*n) = A4;
end
% 定义行列式的函数,使用subs将符号矩阵A_matrix的omega替换为数值omega_val
determinant_function = @(omega_val) double(det(subs(A_matrix, omega, omega_val)));
% 定义初始猜测值
omega_initial_guesses = 0.00001;
% 设置 fsolve 的精度选项
options = optimset('TolFun', 1e-8, 'TolX', 1e-8, 'MaxIter', 500, 'MaxFunEvals', 500);
% 求解
omega_solution = fsolve(determinant_function, omega_initial_guesses, options);
2025年01月02日 08点01分
6
你问题搞错了。不是求矩阵方程,而应是求行列式方程。
2025年01月02日 13点01分
@lhmhz 您好,方便详细说一下哪里需要怎么调整吗,谢谢
2025年01月03日 02点01分