横穿宇宙 2022-09-26 15: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-26 17: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 vue请求不到数据,返回状态200,数据为html
  • ¥15 访问url时不会自动调用其 Servlet的doGet()
  • ¥15 用白鹭引擎开发棋牌游戏的前端为什么这么难找
  • ¥15 MATLAB解决问题
  • ¥35 哪位专业人士知道这是什么原件吗?哪里可以买到?
  • ¥15 关于#c##的问题:treenode反序列化后获取不到上一节点和下一节点,Fullpath和Handle报错
  • ¥15 一部手机能否同时用不同的app进入不同的直播间?
  • ¥20 输入import torch显示Intel MKL FATAL ERROR,系统驱动1%,: Cannot load mkl_intel_thread.dll.
  • ¥15 点云密度大则包围盒小
  • ¥15 nginx使用nfs进行服务器的数据共享
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部