返回X的元素的反余弦(cos^-1)(以度为单位),该函数同时接受实数和复数输入.

    Y=acosd(X)

    对于X在区间[-1, 1]内的实数值,acos(X)返回区间[0, 180]内的值.

    对于X在区间[-1,1]之外的实数值以及X的复数值,acos(X)返回复数值.

    X是标量,向量,矩阵,多维数组

    1. 标量输入(数值)

    acosd(0.5)
    # 输出: 60.0

    acosd(-1)
    # 输出: 180.0

    2. 标量输入(符号表达式)

    acosd((l_1**2 + l_2**2 - d**2)/(2*l_1*l_2))
    # 输出: 57.2957795130823*acos((-d**2 + l_1**2 + l_2**2)/(2*l_1*l_2))

    3. 向量输入(一维数组)

    acosd([0.98, 0.87, 0.5, 0.0, -0.34])
    # 输出: [11.4783409545336, 29.5413605001428, 60.0, 90.0, 109.876874070079]

    4. 矩阵输入(二维数组)

    acosd([[1, 0, 0], [0, 0.5, -0.866], [0, 0.866, 0.5]])
    # 输出: [[0, 90.0, 90.0], [90.0, 60.0, 149.997089068812],
            [90.0, 30.002910931188, 60.0]]

    5. 多维数组输入 

    acosd([[[0.8, 0.6], [0.0, 1.0]], [[-0.4, 0.9], [0.7, 0.7]]])
    # 输出: [[[36.869897645844, 53.130102354156],
              [90.0, 0]],
            [[113.578178478202, 25.8419327631671],
             [45.5729959991943, 45.5729959991943]]]

    6. 复数输入 

    acosd(0.5 + 0.5j)
    # 输出: 64.0863538135061 - 30.4032909748219*I

    7. 机器人运动学 

    # 计算机械臂关节角度
    # 已知目标位置的坐标(x,y,z)
    x, y, z = 0.3, 0.4, 0.5
    l1, l2 = 0.5, 0.5
    d = sp.sqrt(x**2 + y**2 + z**2)

    # 结果给出肩关节角度
    acosd((l1^2 + d^2 - l2^2)/(2*l1*d))
    # 输出: 45

    8. 计算机图形学 

    # 计算光线与表面法线的夹角(用于光照计算)
    normal_vector = [0, 0, 1]  # 表面法线
    light_vector = [0.5, 0.5, 0.707]  # 光线方向
    dot_product = np.dot(normal_vector, light_vector)

    # 理想漫反射强度与cosθ成正比
    acosd(dot_product) # cosθ = n·l
    # 输出: 45.0086516628380

    9. 结构工程 

    # 计算桁架结构中杆件的夹角
    # 已知节点坐标
    A = [0, 0]
    B = [3, 0]
    C = [0, 4]

    # 计算AB与AC的夹角
    vector_AB = [B[0]-A[0], B[1]-A[1]]
    vector_AC = [C[0]-A[0], C[1]-A[1]]
    cos_angle = np.dot(vector_AB, vector_AC)/(np.linalg.norm(vector_AB)*np.linalg.norm(vector_AC))

    acosd(cos_angle)
    #输出 90.0

    10. 地理信息系统 

    # 计算两个地理位置之间的大圆角距离
    # 已知两点的经纬度
    lat1, lon1 = 40.7128, -74.0060  # 纽约
    lat2, lon2 = 51.5074, -0.1278   # 伦敦

    # 使用Haversine公式中的中间值
    φ1, φ2 = np.radians(lat1), np.radians(lat2)
    Δλ = np.radians(lon2 - lon1)
    cos_angle = np.sin(φ1)*np.sin(φ2) + np.cos(φ1)*np.cos(φ2)*np.cos(Δλ)

    acosd(cos_angle)
    #输出 50.0942115600607

    
    # Copyright 2025 小塔立软件有限公司及其旗下网站:www.qikjik.com
    # Licensed under the MIT License.
    import sympy as sp
    import numpy as np

    def qikjik_acosd(input_str):
        """
        计算输入表达式的反余弦值,并将结果转换为度数。

        参数:
        input_str: 输入的字符串表达式,可以是数字、符号或矩阵。

        返回:
        如果输入有效,则返回计算结果;否则返回错误信息。
        """
        try:
            # 将输入字符串转换为 SymPy 表达式
            expr = sp.sympify(input_str)
            error = False
            result = None

            if expr.free_symbols:
                result = sp.acos(expr) * 180 / sp.pi
            elif expr.is_number:
                # 确保 SymPy 表达式被求值为数值
                numeric_value = complex(expr)
                # 使用 NumPy 计算反余弦(以弧度为单位)
                rad_value = np.arccos(numeric_value)
                # 将弧度转换为度
                result = rad_value * 180 / np.pi
            else:
                error = True

            # 如果发生错误,返回错误信息
            return result if not error else f"输入错误: {input_str}"

        except Exception as e:
            return f"错误: {e}"


    def main():
        """
        主函数,用于演示 acosd_inverse_cosine 函数的使用。
        """
        # 示范代码
        input_examples = [
            "0.5",  # 数字输入 #结果: (60.00000000000001+0j)
            "x",  # 符号输入 #结果: 180*acos(x)/pi
        ]

        for input_str in input_examples:
            print(f"输入: {input_str}")
            result = qikjik_acosd(input_str)
            print(f"结果: {result}\n")


    if __name__ == "__main__":
        main()