横穿宇宙 2022-09-26 23:07 采纳率: 83.3%
浏览 90
已结题

条件句包含变量,MATLAB如何求解?

我想要通过MATLAB求解一个多元方程组,但方程组里包含的参数还需要许多其它复杂语句来表达,而这些语句又涉及包含变量的条件句和插值函数语句。

为了更好地说明这个问题,我将问题简化为一个二元方程组问题进行举例,编写的语句如下:

syms x y 
a=x+y;
if x>0
   b=1;
else
    b=2;
end
eqns = [a + b*x == 1, a - b == 2];
S=solve(eqns,[x y]);

但上述程序是无法运行的,报错提示为“无法从 sym 转换为 logical”,说明条件句里含有变量是无法运行的。而我实际要求的问题还会更加复杂,包含多句含有变量的条件句、插值函数语句。

请问这样的方程组有可能通过MATLAB求解吗?该如何求解呢?烦请能提供思路,万分感激!

  • 写回答

2条回答 默认 最新

  • slandarer MATLAB领域优质创作者 2022-09-27 01:56
    关注

    要么用solve支持的sign(指示数值正负)函数强行捏造一个分段函数:

    syms x y 
    a=x+y;
    b=ceil((3+sign(1))/2);
    eqns = [a + b*x == 1, a - b == 2];
    S=solve(eqns,[x y])
    

    S =

    包含以下字段的 struct:

    x: -3/2
    y: 11/2
    

    要么干脆换个求解器

    function pwdemo
        function y = myEqns(x)
            a=x(1)+x(2);
            if x>0
                b=1;
            else
                b=2;
            end
            y=[a + b*x(1)-1, a - b-2];
        end
    opts=optimoptions("fsolve", "Algorithm", "levenberg-marquardt");
    sol=fsolve(@myEqns, [0.0; 0.0], opts)
    end
    

    sol =

    -1.5000
    5.5000

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 9月28日
  • 已采纳回答 9月28日
  • 修改了问题 9月26日
  • 修改了问题 9月26日
  • 展开全部

悬赏问题

  • ¥15 关于#stm32#的问题:寻找一块开发版,作为智能化割草机的控制模块和树莓派主板相连,要求:最低可控制 3 个电机(两个驱动电机,1 个割草电机),其次可以与树莓派主板相连电机照片如下:
  • ¥15 Mac(标签-IDE|关键词-File) idea
  • ¥15 潜在扩散模型的Unet特征提取
  • ¥15 iscsi服务无法访问,如何解决?
  • ¥15 感应式传感器制作的感应式讯响器
  • ¥15 如何使用SC92F8003固件库解析私有协议数据?
  • ¥15 如何在音频中嵌入字符串(水印)信息进行传递
  • ¥30 plc怎么以设计说明书申请软著
  • ¥15 硬盘识别不了,需要初始化,可我的数据怎么办
  • ¥15 lvm2被mask了,怎么unmask都没用(标签-ubuntu|关键词-apt)