使用MATLAB的solve解方程:单变量,多变量,方程组

单变量

clear,clc;
syms x;
answ = solve(sin(x)==1,x)

一个等号表示赋值,两个等号才表示相等

    % answ =
    %  
    % pi/2

对于单变量也可省略未知数

 answ = solve(sin(x)==1)

也可以这样写

 clear,clc;
 syms x;
 equ = (sin(x)==1);%equ = sin(x)==1;
 answ = solve(equ)

得出三角函数的所有解

上面我们求得的只是一个解,因为三角函数是周期函数,如果要得到所有的解,则需要加上条件

 [answ,params,conditions] = solve(equ,x,'returnconditions',true)
            %   answ =
            %  
            % pi/2 + 2*pi*k
            %  
            %  
            % params =
            %  
            % k
            %  
            %  
            % conditions =
            %  
            % in(k, 'integer')

求解多变量方程

clear,clc;
syms a b c x;
equ = a*x^2+b*x+c==0;

将x视为未知数

answ1 = solve(equ,x)
        % answ1 =
        %  
        %  -(b + (b^2 - 4*a*c)^(1/2))/(2*a)
        %  -(b - (b^2 - 4*a*c)^(1/2))/(2*a)

将a视为未知数

answ2 = solve(equ,a)
        % answ2 =
        %  
        % -(c + b*x)/x^2

求解方程组

多个方程,要用矩阵表示出来

clear,clc;
syms u v a;
equ = [2*u+v==a,u-v==1];
  • 第一种表达方式:返回的为结构体形式

    answ = solve(equ,[u,v])%第二个参数表明要解的对象
    
                % answ = 
                % 
                %   包含以下字段的 struct:
                % 
                %     u: [1×1 sym]
                %     v: [1×1 sym]
    
    answ.u
                % ans =
                %  
                % 1/3 + a/3
    answ.v
                % ans =
                %  
                % - 2/3 + a/3
    
  • 第二种表达方式:返回的不是结构体

    [answ1,answ2] = solve(equ,[u,v])
    

solve的求解能力有限

solve的求解能力有限,有时候对于复杂的方程只能解出部分的解:

clear,clc;
syms x;
equ = sin(x)==x^2-1;
solve(equ,x)

此时出现了警告,而且只返回一个解

% 警告: Unable to solve symbolically. 
                    %  Returning a numeric solution using
                    % ans =
                    %  
                    % -0.63673265080528201088799090383828
                    %  

再分别绘制两个函数的图像,看其交点,发现有两个,跟解出来的不同

fplot(sin(x),[-2 2])
hold on;
fplot(x^1-1,[-2 2])

1

使用MATLAB中的solve函数解决方程组时,可能会出现以下一些错误: 1. "Warning: Explicit solution could not be found."(警告:无法找到明确的解) 这个警告通常表示方程组无法被解决,可能是因为方程组过于复杂或者存在无法解决的矛盾。可以尝试简化方程组或者使用其他的解方法。 2. "Warning: Solutions are valid under specified conditions."(警告:解只在特定条件下成立) 这个警告通常表示方程组有多个解,但其中一些解可能只在某些特定条件下成立。需要检查这些条件是否适合问题的要。 3. "Error using sym/solve (line 306) Conversion to 'double' from 'sym' is not possible." 这个错误通常表示方程组中包含符号变量,而solve函数无法处理符号变量,需要使用符号计算工具箱或者其他的符号计算软件来解决问题。 4. "Error using solve (line 91) Argument must be an equation, not 'x'." 这个错误通常表示输入的参数不是一个方程,而是一个变量或者一个表达式。需要确保输入的参数是一个方程或者方程组。 5. "Error using solve (line 91) Invalid equation." 这个错误通常表示输入的方程无法被解决,可能是因为方程有语法错误或者不符合解要。需要检查输入的方程是否正确,并且确保方程可以被解。 以上是使用solve函数解决方程组时可能出现的一些错误,需要根据具体情况进行排查和解决。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值