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

条件句包含变量,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日
  • 展开全部

悬赏问题

  • ¥50 易语言把MYSQL数据库中的数据添加至组合框
  • ¥20 求数据集和代码#有偿答复
  • ¥15 关于下拉菜单选项关联的问题
  • ¥20 java-OJ-健康体检
  • ¥15 rs485的上拉下拉,不会对a-b<-200mv有影响吗,就是接受时,对判断逻辑0有影响吗
  • ¥15 使用phpstudy在云服务器上搭建个人网站
  • ¥15 应该如何判断含间隙的曲柄摇杆机构,轴与轴承是否发生了碰撞?
  • ¥15 vue3+express部署到nginx
  • ¥20 搭建pt1000三线制高精度测温电路
  • ¥15 使用Jdk8自带的算法,和Jdk11自带的加密结果会一样吗,不一样的话有什么解决方案,Jdk不能升级的情况