横穿宇宙 2022-09-26 23:07 采纳率: 80%
浏览 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日
  • 展开全部

悬赏问题

  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?