在符号函数

时间:2016-12-23 22:26:34

标签: matlab function symbolic-math

我试图找到依赖于几个符号变量和符号函数的非线性函数的根。为了保证解决方案的存在,我需要对符号函数b(x)设置一些假设。 通过使用Matlab函数assume,我可以设置简单的假设,如

syms b(x) d
assume(b(0)==0 & b(x)>=0);

现在我正在寻找一种方法来包含这个假设:(符号函数b(x),符号变量d) 值为yb(x) < d*xx < yb(x) > d*xx > y

为了方便起见,我们可以修复d=0.1b(10)=1,例如y=10。不过,我希望保留dy符号。

我尝试编写一个检查假设的函数,但不出所料,Matlab似乎不接受符号函数作为输入变量。

你知道这个问题的解决方案还是有想法?

更新2017-01-03:
修复了d=0.1b(10)=1y=10后,我试图通过

来检查上述假设
syms b(x) 
d=0.1;
assume(x, 'real');
assume(x>=0);
assume(b(0)==0 & b(x)>=0 & b(10)==1);
checkAssumption(x)= mySign(x)*(d*x-b(x)); 
assume(checkAssumption(x)>=0);

其中

function sign=mySign(x)
if x<10
    sign=-1;
else if x==10
        sign=0;
    else if x>10
            sign=-1;
        end
    end
end

然后我收到错误“无法从sym转换为逻辑”。在mySign中。使用double(x)作为mySign的输入变量会导致错误“DOUBLE无法将输入表达式转换为双数组”。

您是否知道如何评估mySigncheckAssumptions或了解如何采用上述假设?

0 个答案:

没有答案