hihiworld2 2024-05-02 11:36 采纳率: 50%
浏览 101

matlab中solve输出的复数怎么处理

提问提问!
我想把函数运算出的结果作为实数存起来,但是一直是复数的某一部分

img

  • 写回答

5条回答 默认 最新

  • 专家-皆知 2024-05-02 11:36
    关注

    参考免费微信小程序:皆我百晓生 作答,经由专家-皆知整理回复,如问题解决,望采纳;如仍有疑问,请评论回复。

    在MATLAB中,如果你得到的是复数解,但你只对实部感兴趣,可以使用real()函数提取实部。针对你的代码,我会在计算mx2和my2时添加这一步。以下是修改后的代码段:

    for i = 1:6
        x1 = A(1, i);
        
        syms x y real
        eqn01 = 0 == tan(2 * p - 3 / 2 * pi) * (x + 1 * cos(p) - x1) - y;
        eqn02 = 0 == x^2 + (y - 100 - r)^2 - r^2;
        
        s = solve(eqn01, eqn02, x, y);
        V = vpasolve(eqn01, eqn02, x, y);
        
        % 提取实部
        mx2(i, 1) = real(V.x(1, 1));
        my2(i, 1) = real(V.y(1, 1));
    end
    
    dx = abs(mx2);
    dy = abs(my2);
    

    这里我将syms x y real加入定义符号变量的部分,这样默认求解结果就是实数。然后在计算mx2和my2时,我使用了real()函数来提取复数解的实部。

    如果你的原始问题中的结果已经是实数,但是你想确保它们被存储为实数,上述代码同样适用。如果你遇到其他问题,或者需要进一步的帮助,请随时告诉我。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 5月2日