要快速找到 A, B, C 使得 A×B×Cx4/13 最接近 D

目录

1.最慢的办法,最精确的,

2. 比较快,但精确较差的办法。

3.改进精确度后

4.性能和准确度测试

5.针对应用场景进一步优化速度

0. 取值范围

A取值范围 为(64, 128, 256,1024),

B为(1-255),

C为(1-256)

D的取值范围是0-20568221


1.最慢的办法,最精确的,

三层循环循环,每次要计算261120 ,比较慢, 如下:


void find_best_abc_slow(uint32_t D, uint32_t *best_A, uint32_t *best_B, uint32_t *best_C, uint32_t *min_error) {
    uint32_t A_values[] = {64, 128, 256, 1024}; // A 的可能取值
    *min_error = UINT32_MAX; // 初始化最小误差为最大值
    *best_A = 0;
    *best_B = 0;
    *best_C = 0;



    // 枚举 A 的取值
    for (int i = 0; i < 4; i++) {
        uint32_t A = A_values[i];

        // 枚举 B 的取值
        for (uint32_t B = 1; B <= 255; B++) {
         
            for(uint32_t C=1; C<=256;C++)
            {
                // 计算当前值和误差
                uint32_t current_value = A * B * C *4/13;
                uint32_t error = (current_value > D) ? (current_value - D) : (D - current_value);

                // 更新最优解
                if (error < *min_error) {
                    *min_error = error;
                    *best_A = A;
                    *best_B = B;
                    *best_C = C;
                }
            }
        }
    }
}

2. 比较快,但精确较差的办法。

代码实现如下:

#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <limits.h>

// 动态计算最优解
void find_best_abc(uint32_t D, uint32_t *best_A, uint32_t *best_B, uint32_t *best_C, uint32_t *min_error) {
    uint32_t A_values[] = {64, 128, 256, 1024}; // A 的可能取值
    *min_error = UINT32_MAX; // 初始化最小误差为最大值
    *best_A = 0;
    *best_B = 0;
    *best_C = 0;

    // 计算目标值 D'
    uint32_t D_prime = (uint32_t)((uint64_t)D * 13 / 4);

    // 枚举 A 的取值
    for (int i = 0; i < 4; i++) {
        uint32_t A = A_values[i];

        // 枚举 B 的取值
        for (uint32_t B = 1; B <= 255; B++) {
            uint32_t product_AB = A * B;

            // 剪枝:如果 A * B > D_prime,停止当前循环
            if (product_AB > D_prime) break;

            // 动态计算 C
            uint32_t C = D_prime / product_AB; // 整数除法计算 C

            // 检查 C 是否在合法范围
            if (C < 1 || C > 256) continue;

            // 计算当前值和误差
            uint32_t current_value = A * B * C;
            uint32_t error = (current_value > D_prime) ? (current_value - D_prime) : (D_prime - current_value);

            // 更新最优解
            if (error < *min_error) {
                *min_error = error;
                *best_A = A;
                *best_B = B;
                *best_C = C;
            }
        }
    }
}

3.改进精确度后

由于整法除法引起的精度问题,增加对于结果+-1的比较。


void find_best_abc_better(uint32_t D, uint32_t *best_A, uint32_t *best_B, uint32_t *best_C, uint32_t *min_error) {
    uint32_t A_values[] = {64, 128, 256, 1024}; // A 的可能取值
    *min_error = UINT32_MAX; // 初始化最小误差为最大值
    *best_A = 0;
    *best_B = 0;
    *best_C = 0;

    // 计算目标值 D'
    uint32_t D_prime = (uint32_t)((uint64_t)D * 13 / 4);

    // 枚举 A 的取值
    for (int i = 0; i < 4; i++) {
        uint32_t A = A_values[i];

        // 枚举 B 的取值
        for (uint32_t B = 1; B <= 255; B++) {
            uint32_t product_AB = A * B;

            // 剪枝:如果 A * B > D_prime,停止当前循环
            if (product_AB > D_prime) break;

            // 动态计算 C
            uint32_t C = D_prime / product_AB; // 初步估算的 C 值

            // 检查 C 和其附近值(C-1, C, C+1)
            for (int offset = -1; offset <= 1; offset++) {
                uint32_t adjusted_C = C + offset;

                // 检查 C 是否在合法范围
                if (adjusted_C < 1 || adjusted_C > 256) continue;

                // 计算当前值和误差
                uint64_t current_value = (uint64_t)A * B * adjusted_C;
                uint32_t error = (current_value > D_prime) ? (current_value - D_prime) : (D_prime - current_value);

                // 更新最优解
                if (error < *min_error) {
                    *min_error = error;
                    *best_A = A;
                    *best_B = B;
                    *best_C = adjusted_C;
                }
            }
        }
    }
}

4.性能和准确度测试

使用以下代码

#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <limits.h>
#include <time.h>

// 动态计算最优解
void find_best_abc(uint32_t D, uint32_t *best_A, uint32_t *best_B, uint32_t *best_C, uint32_t *min_error) {
    uint32_t A_values[] = {64, 128, 256, 1024}; // A 的可能取值
    *min_error = UINT32_MAX; // 初始化最小误差为最大值
    *best_A = 0;
    *best_B = 0;
    *best_C = 0;

    // 计算目标值 D'
    uint32_t D_prime = (uint32_t)((uint64_t)D * 13 / 4);

    // 枚举 A 的取值
    for (int i = 0; i < 4; i++) {
        uint32_t A = A_values[i];

        // 枚举 B 的取值
        for (uint32_t B = 1; B <= 255; B++) {
            uint32_t product_AB = A * B;

            // 剪枝:如果 A * B > D_prime,停止当前循环
            if (product_AB > D_prime) break;

            // 动态计算 C
            uint32_t C = D_prime / product_AB; // 整数除法计算 C

            // 检查 C 是否在合法范围
            if (C < 1 || C > 256) continue;

            // 计算当前值和误差
            uint32_t current_value = A * B * C;
            uint32_t error = (current_value > D_prime) ? (current_value - D_prime) : (D_prime - current_value);

            // 更新最优解
            if (error < *min_error) {
                *min_error = error;
                *best_A = A;
                *best_B = B;
                *best_C = C;
            }
        }
    }

    uint32_t fix  = (  *best_A) * (*best_B) *  ( *best_C ) * 4 /13;
      *min_error   = (fix > D) ? (fix - D) : (D - fix);

}


void find_best_abc_better(uint32_t D, uint32_t *best_A, uint32_t *best_B, uint32_t *best_C, uint32_t *min_error) {
    uint32_t A_values[] = {64, 128, 256, 1024}; // A 的可能取值
    *min_error = UINT32_MAX; // 初始化最小误差为最大值
    *best_A = 0;
    *best_B = 0;
    *best_C = 0;

    // 计算目标值 D'
    uint32_t D_prime = (uint32_t)((uint64_t)D * 13 / 4);

    // 枚举 A 的取值
    for (int i = 0; i < 4; i++) {
        uint32_t A = A_values[i];

        // 枚举 B 的取值
        for (uint32_t B = 1; B <= 255; B++) {
            uint32_t product_AB = A * B;

            // 剪枝:如果 A * B > D_prime,停止当前循环
            if (product_AB > D_prime) break;

            // 动态计算 C
            uint32_t C = D_prime / product_AB; // 初步估算的 C 值

            // 检查 C 和其附近值(C-1, C, C+1)
            for (int offset = -1; offset <= 1; offset++) {
                uint32_t adjusted_C = C + offset;

                // 检查 C 是否在合法范围
                if (adjusted_C < 1 || adjusted_C > 256) continue;

                // 计算当前值和误差
                uint64_t current_value = (uint64_t)A * B * adjusted_C;
                uint32_t error = (current_value > D_prime) ? (current_value - D_prime) : (D_prime - current_value);

                // 更新最优解
                if (error < *min_error) {
                    *min_error = error;
                    *best_A = A;
                    *best_B = B;
                    *best_C = adjusted_C;
                }
            }
        }
    }

    uint32_t fix  = (  *best_A) * (*best_B) *  ( *best_C ) * 4 /13;
    *min_error   = (fix > D) ? (fix - D) : (D - fix);
}



void find_best_abc_slow(uint32_t D, uint32_t *best_A, uint32_t *best_B, uint32_t *best_C, uint32_t *min_error) {
    uint32_t A_values[] = {64, 128, 256, 1024}; // A 的可能取值
    *min_error = UINT32_MAX; // 初始化最小误差为最大值
    *best_A = 0;
    *best_B = 0;
    *best_C = 0;



    // 枚举 A 的取值
    for (int i = 0; i < 4; i++) {
        uint32_t A = A_values[i];

        // 枚举 B 的取值
        for (uint32_t B = 1; B <= 255; B++) {
         
            for(uint32_t C=1; C<=256;C++)
            {
                // 计算当前值和误差
                uint32_t current_value = A * B * C *4/13;
                uint32_t error = (current_value > D) ? (current_value - D) : (D - current_value);

                // 更新最优解
                if (error < *min_error) {
                    *min_error = error;
                    *best_A = A;
                    *best_B = B;
                    *best_C = C;
                }
            }
        }
    }
}


void find_best_abc_slow_better(uint32_t D, uint32_t *best_A, uint32_t *best_B, uint32_t *best_C, uint32_t *min_error) {
    uint32_t A_values[] = {64, 128, 256, 1024}; // A 的可能取值
    *min_error = UINT32_MAX; // 初始化最小误差为最大值
    *best_A = 0;
    *best_B = 0;
    *best_C = 0;

    // 计算目标值 D'
    uint32_t D_prime = (uint32_t)((uint64_t)D * 13 / 4);

    // 枚举 A 的取值
    for (int i = 0; i < 4; i++) {
        uint32_t A = A_values[i];

        // 枚举 B 的取值
        for (uint32_t B = 1; B <= 255; B++) {
            uint32_t product_AB = A * B;
            if (product_AB > D_prime) break; // 剪枝: 如果 A * B 已经大于 D',跳过后续 B 值

            // 枚举 C 的取值
            for (uint32_t C = 1; C <= 256; C++) {
                uint32_t current_value = A * B * C * 4 / 13;
                uint32_t error = (current_value > D) ? (current_value - D) : (D - current_value);

                // 更新最优解
                if (error < *min_error) {
                    *min_error = error;
                    *best_A = A;
                    *best_B = B;
                    *best_C = C;
                }
            }
        }
    }
}




int main() {
    
    uint32_t best_A, best_B, best_C, min_error;

    clock_t start_time = clock();

    for(uint32_t D =1000;D<100000;D+=100)
    {
        // 计算最优解
        find_best_abc(D, &best_A, &best_B, &best_C, &min_error);

    }

    double elapsed_time = (double)(clock() - start_time) / CLOCKS_PER_SEC;
    printf("fast 运行时间: %.6f 秒\n", elapsed_time);


    start_time = clock();
    for(uint32_t D =1000;D<100000;D+=100)
    {
        // 计算最优解
        find_best_abc_better(D, &best_A, &best_B, &best_C, &min_error);

    }
    elapsed_time = (double)(clock() - start_time) / CLOCKS_PER_SEC;
    printf("better 运行时间: %.6f 秒\n", elapsed_time);


    
    start_time = clock();
    for(uint32_t D =1000;D<100000;D+=100)
    {
        // 计算最优解
        find_best_abc_slow(D, &best_A, &best_B, &best_C, &min_error);

    }
    elapsed_time = (double)(clock() - start_time) / CLOCKS_PER_SEC;
    printf("slow 运行时间: %.6f 秒\n", elapsed_time);



    for(uint32_t D =1000;D<100000;D+=100)
    {
        // 计算最优解
        find_best_abc(D, &best_A, &best_B, &best_C, &min_error);
        printf("FAST   D=%d 最优解: A = %d, B = %d, C = %d, 误差 = %d\n", D, best_A, best_B, best_C, min_error);

        find_best_abc_better(D, &best_A, &best_B, &best_C, &min_error);
        printf("BETTER D=%d 最优解: A = %d, B = %d, C = %d, 误差 = %d\n",D, best_A, best_B, best_C, min_error);

        find_best_abc_slow(D, &best_A, &best_B, &best_C, &min_error);
        printf("SLOW   D=%d最优解: A = %d, B = %d, C = %d, 误差 = %d\n",D, best_A, best_B, best_C, min_error);


    }

    return 0;
}

测试结果如下:

最快的算法比最慢的快 198倍

(base) $ gcc  findbest.c -o best
(base) $ ./best 
fast 运行时间: 0.004464 秒
better 运行时间: 0.011828 秒
slow 运行时间: 0.886645 秒
FAST   D=1000 最优解: A = 64, B = 1, C = 50, 误差 = 16
BETTER D=1000 最优解: A = 64, B = 1, C = 51, 误差 = 4
SLOW   D=1000最优解: A = 64, B = 1, C = 51, 误差 = 4
FAST   D=1100 最优解: A = 64, B = 1, C = 55, 误差 = 17
BETTER D=1100 最优解: A = 64, B = 1, C = 56, 误差 = 2
...
FAST   D=99900 最优解: A = 64, B = 57, C = 89, 误差 = 1
BETTER D=99900 最优解: A = 64, B = 57, C = 89, 误差 = 1
SLOW   D=99900最优解: A = 64, B = 57, C = 89, 误差 = 1

5.针对应用场景进一步优化速度

因为对于一个数值会多次取值,为了进一步改进速度,增加了一个cache层,把计算结果cache起,在下次使用时,快速查到cache中有没有,有的时候立即返回,无需计算。 cache的总数量为10个。

#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <limits.h>

#define CACHE_SIZE 10 // 缓存的最大数量

// 定义缓存项结构
typedef struct {
    uint32_t D;          // 输入值
    uint32_t best_A;     // 最优解 A
    uint32_t best_B;     // 最优解 B
    uint32_t best_C;     // 最优解 C
    uint32_t min_error;  // 最小误差
} CacheEntry;

// 定义缓存
CacheEntry cache[CACHE_SIZE];
int cache_count = 0;

// 在缓存中查找目标值 D 的结果
int find_in_cache(uint32_t D, uint32_t *best_A, uint32_t *best_B, uint32_t *best_C, uint32_t *min_error) {
    for (int i = 0; i < cache_count; i++) {
        if (cache[i].D == D) {
            *best_A = cache[i].best_A;
            *best_B = cache[i].best_B;
            *best_C = cache[i].best_C;
            *min_error = cache[i].min_error;
            return 1; // 找到缓存
        }
    }
    return 0; // 未找到缓存
}

// 将计算结果存储到缓存中
void add_to_cache(uint32_t D, uint32_t best_A, uint32_t best_B, uint32_t best_C, uint32_t min_error) {
    if (cache_count < CACHE_SIZE) {
        // 如果缓存未满,直接添加
        cache[cache_count++] = (CacheEntry){D, best_A, best_B, best_C, min_error};
    } else {
        // 如果缓存已满,采用简单的替换策略(FIFO)
        for (int i = 1; i < CACHE_SIZE; i++) {
            cache[i - 1] = cache[i];
        }
        cache[CACHE_SIZE - 1] = (CacheEntry){D, best_A, best_B, best_C, min_error};
    }
}

// 动态计算最优解
void find_best_abc(uint32_t D, uint32_t *best_A, uint32_t *best_B, uint32_t *best_C, uint32_t *min_error) {
    // 首先查找缓存
    if (find_in_cache(D, best_A, best_B, best_C, min_error)) {
        return; // 如果找到缓存,直接返回
    }

    uint32_t A_values[] = {64, 128, 256, 1024}; // A 的可能取值
    *min_error = UINT32_MAX; // 初始化最小误差为最大值
    *best_A = 0;
    *best_B = 0;
    *best_C = 0;

    // 计算目标值 D'
    uint32_t D_prime = (uint32_t)((uint64_t)D * 13 / 4);

    // 枚举 A 的取值
    for (int i = 0; i < 4; i++) {
        uint32_t A = A_values[i];

        // 枚举 B 的取值
        for (uint32_t B = 1; B <= 255; B++) {
            uint32_t product_AB = A * B;

            // 剪枝:如果 A * B > D_prime,停止当前循环
            if (product_AB > D_prime) break;

            // 动态计算 C
            uint32_t C = D_prime / product_AB; // 初步估算的 C 值

            // 检查 C 和其附近值(C-1, C, C+1)
            for (int offset = -1; offset <= 1; offset++) {
                uint32_t adjusted_C = C + offset;

                // 检查 C 是否在合法范围
                if (adjusted_C < 1 || adjusted_C > 256) continue;

                // 计算当前值和误差
                uint64_t current_value = (uint64_t)A * B * adjusted_C;
                uint32_t error = (current_value > D_prime) ? (current_value - D_prime) : (D_prime - current_value);

                // 更新最优解
                if (error < *min_error) {
                    *min_error = error;
                    *best_A = A;
                    *best_B = B;
                    *best_C = adjusted_C;
                }
            }
        }
    }

    // 将计算结果存储到缓存中
    add_to_cache(D, *best_A, *best_B, *best_C, *min_error);
}

int main() {
    uint32_t D; // 目标值
    printf("请输入目标值 D (0 ~ 66846720): ");
    scanf("%u", &D);

    if (D > 66846720) {
        printf("输入值 D 超出范围!\n");
        return 1;
    }

    uint32_t best_A, best_B, best_C, min_error;

    // 计算最优解
    find_best_abc(D, &best_A, &best_B, &best_C, &min_error);

    // 输出结果
    printf("最优解: A = %u, B = %u, C = %u, 误差 = %u\n", best_A, best_B, best_C, min_error);

    return 0;
}
请讲以下内容写成matlab代码,目的求解传递率与频率的关系并绘制图像,完全按照以下内容不要删减:在位移激励下的MSC折纸隔振结构被动隔振时可以抽象为单自由度质量弹簧动力学系统,以隔振结构的静平衡位置为坐标零点,沿系统的轴向建立一维绝对位移坐标系u,以基础静止时的位置为坐标零点,沿系统轴向建立一维绝对坐标系u_B,则隔振结构相对于基础的一维相对位移坐标系为 x=u-u_B 图6. 非线性弹簧等效模型 非线性弹簧等效模型如图所示,对基础施加u_B=Ucos(ωt)的简谐激振位移激励,非线性动力学系统的单自由度有阻尼受迫振动运动方程为: 结构高度h:定义域h∈(0,L),静平衡位置 \(h_0=L/2 \) 压缩变形量x:定义域x∈(-L/2,L/2),满足\(x=h_0-h=L/2-h\)。 旋转角度 θ:由给定几何关系: h(θ)=√(2L^2-(√2 Lsi n⁡(π/4+θ/2) )^2 )=L√2 co s⁡(π/4+θ/2) co s⁡(π/4+θ/2)=1/(22)-x/(L√2) ⇒ θ=2[arcco s⁡(1/(22)-x/(L√2))-π/4] 当 θ=0时,h(0)=L√2 co s⁡(π/4)=L,对应完全展开 x=-L/2 当 θ=π/2 时,h(π)=0,对应完全折叠 x=L/2 转盘转动动能: T_"rot" =1/2 I(θ^2 ) ̇ 重物平移动能: T_"trans" =1/2 m(u ̇ )^2=1/2 m(x ̇+(u_B ) ̇ )^2 总动能: T=1/2 I(θ^2 ) ̇+1/2 m(x ̇+(u_B ) ̇ )^2 求导,得到角速度 d/dt [π/4+θ/2]=-x ̇/(L√2 sin⁡(π/4+θ/2) ) ⇒ θ ̇=-(2x ̇)/(L√2 sin⁡(π/4+θ/2) ) T=(2I(x^2 ) ̇)/(L^2 sin^2⁡(π/4+θ/2) )+1/2 m(x ̇+(u_B ) ̇ )^2 势能: F_"spring" (x)=k_1 x+k_2 x^2+k_3 x^3+k_4 x^4+k_5 x^5+k_6 x^6+k_7 x^7 V(x)=1/2 k_1 x^2+1/3 k_2 x^3+1/4 k_3 x^4+1/5 k_4 x^5+1/6 k_5 x^6+1/7 k_6 x^7+1/8 k_7 x^8 L = T – V 运动方程为: d/dt (∂L/(∂x ̇ ))-∂L/∂x=Q_x 其中广义力Q_x由基底激励 u_B (t)=U cos⁡(ωt)引起:Q_x=-m(u_B ) ̈ 动量项: ∂L/(∂x ̇ )=(4Ix ̇)/(L^2 sin^2⁡(π/4+θ/2) )+m(x ̇+(u_B ) ̇ ) 时间导数: d/dt (∂L/(∂x ̇ ))=(4Ix ̈)/(L^2 sin^2⁡(π/4+θ/2) )+(2Ix ̇⋅cos⁡(π/4+θ/2)⋅θ ̇)/(L^2 sin^3⁡(π/4+θ/2) )+m(x ̈+(u_B ) ̈ ) 势能梯度项: ∂L/∂x=k_1 x+k_2 x^2+k_3 x^3 展开整理后,加入阻尼项得到非线性动力学方程: (4I/(L^2 sin^2⁡(π/4+θ/2) )+m) x ̈+(4I cos⁡(π/4+θ/2))/(L^3 sin^3⁡(π/4+θ/2) ) (x^2 ) ̇+cx ̇+(k_1 x+k_2 x^2+k_3 x^3+k_4 x^4+k_5 x^5+k_6 x^6+k_7 x^7)=mUω^2 cos⁡(ωt) 假设稳态响应为静态偏移A_0与基频简谐运动的叠加: x(t)=A_0+A cos⁡(ωt-α) 其导数为: x ̇(t)=-Aω sin⁡(ωt-α), x ̈(t)=-Aω^2 cos⁡(ωt-α) 将各非线性项展开至常数项和基频项(忽略高次谐波): k_2 x^2≈k_2 (A_0^2+A^2/2)+2k_2 A_0 A cos⁡(ωt-α) k_3 x^3≈k_3 (A_0^3+(3A_0 A^2)/2)+3k_3 (A_0^2+A^2/4)A cos⁡(ωt-α) k_4 x^4≈k_4 (A_0^4+3A_0^2 A^2+(3A^4)/8)+4k_4 (A_0^3+(3A_0 A^2)/4)A cos⁡(ωt-α) k_5 x^5≈k_5 (A_0^5+5A_0^3 A^2+(15A_0 A^4)/8)+5k_5 (A_0^4+(9A_0^2 A^2)/4+(5A^4)/16)A cos⁡(ωt-α) k_6 x^6≈k_6 (A_0^6+15A_0^4 A^2+(45A_0^2 A^4)/8+(15A^6)/32)+6k_6 (A_0^5+(15A_0^3 A^2)/2+(45A_0 A^4)/16)A cos⁡(ωt-α) k_7 x^7≈k_7 (A_0^7+21A_0^5 A^2+(105A_0^3 A^4)/8+(105A_0 A^6)/16)+7k_7 (A_0^6+(105A_0^4 A^2)/4+(105A_0^2 A^4)/16+(35A^6)/64)A cos⁡(ωt-α) (1)常数项平衡方程 所有静态偏移项需满足: (4I cos⁡(π/4+θ/2) A^2 ω^2)/(2L^3 sin^3⁡(π/4+θ/2) )+∑_(n=1)^7▒k_n ⋅C_n=0 展开为: (2I cos⁡(π/4+θ/2) A^2 ω^2)/(L^3 sin^3⁡(π/4+θ/2) )+k_1 A_0+k_2 (A_0^2+A^2/2)+k_3 (A_0^3+(3A_0 A^2)/2)+k_4 (A_0^4+3A_0^2 A^2+(3A^4)/8)+k_5 (A_0^5+5A_0^3 A^2+(15A_0 A^4)/8)+k_6 (A_0^6+15A_0^4 A^2+(45A_0^2 A^4)/8+(15A^6)/32)+k_7 (A_0^7+21A_0^5 A^2+(105A_0^3 A^4)/8+(105A_0 A^6)/16)=0 (2)基频项平衡方程 基频项需满足: [(K_"eq" -M_"eq" ω^2 )^2+(cω)^2 ] A^2=(mUω^2 )^2 {█((K_"eq" -M_"eq" ω^2 )A=mUω^2 cosα@cωA=mUω^2 sinα)┤ 其中K_"eq" =∑_(n=1)^7▒k_n ⋅B_n,M_"eq" =4I/(L^2 sin^2⁡(a) )+m 具体展开为: [-M_"eq" ω^2+k_1+2k_2 A_0+3k_3 (A_0^2+A^2/4)+4k_4 (A_0^3+(3A_0 A^2)/4)+5k_5 (A_0^4+(9A_0^2 A^2)/4+(5A^4)/16)+6k_6 (A_0^5+(15A_0^3 A^2)/2+(45A_0 A^4)/16)+7k_7 (A_0^6+(105A_0^4 A^2)/4+(105A_0^2 A^4)/16+(35A^6)/64)]A=mUω^2 位移传递率 位移传递率T定义为绝对位移振幅与基座激励振幅之比: T=|A_0 |/U+√(1+2(A/U)[(K_"eq" -M_"eq" ω^2 )A/(mUω^2 )]+(A/U)^2 )
11-04
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值