Matlab-方程式求根

09方程式求根

1.公式求解——符号变量

  • syms 变量名 / x= sym(‘x’); 创建一个符号变量

  • y = x^2 - 2*x 由符号变量定义的函数 ,是符号函数

  • solve(方程式,自变量) 解出方程式的根

    syms x;
    y = x*sin(x) - x;
    solve(y,x);     %即解 y = 0
    ans = 0  pi/2;    %解出的 ans 仍然是 symbolic类型的
    
  • 解二元一次联立方程式

    syms x y
    eq1 = x - 2*y -5;
    eq2 = x + y - 6;
    A = solve(eq1,eq2,x,y)
    A.x     % ans = 17/3 
    A.y     % ans =  1/3
    
  • 代数代表系数求解

    syms x y a b
    y = a*x^2 -b     %solve(a*x^2-b)
    solve(y,x)
    %ans = b^(1/2)/a^(1/2)            -b^(1/2)/a^(1/2)
    
  • diff() 符号变量计算微分

    syms x
    y = 4*x^5;
    yprime = diff(y)  % yprime =  20*x^4;
    
  • int() 符号变量计算积分 z = ∫ y dx = ∫x2*e2 dx z(0) = 0;

  • subs() 带入值计算 例如:subs (z,x,0) 即将x = 0带入 z(x)

    syms x;            
    y = x^2*exp(x);        
    z = int(y);     % z = exp(x)*(x^2 - 2*x + 2)
    z = z -subs(z,x,0);  % z =  exp(x)*(x^2 - 2*x + 2) - 2
    

2.绘图求解 利用plot()系列函数

3.数值求解

内建函数数值求解——函数指针

根值求解的两个算法1.bracketing methods -->Bisection Method 在一个区间内二分法不断计算

​ 条件: 1.函数连续 2.f(left)·f(right) < 0 然后再寻找重点f(mid),二分迭代

​ 类似折半查找,当满足停止条件时 解算出根值

​ 2.Open methods --> 牛顿法 给出一个initial guess 进行不断计算

​ 当 1.误差范围达到或者2.迭代次数满足时 计算就会停止

  • fsolve() f(x) = 1.2x + 0.3 + x·sin(x)

    f2 = @(x) (1.2*x + 0.3 + x*sin(x));
    fsolve(f2,0)   % 0是initial guess 猜测值   函数用来做初识二分法 解算 的
    % ans = -0.3500
    
  • fzero() f(x) = x^2 此函数只有在函数穿过x轴时才解算的出来,切过也不行

    f = @(x) x.^2;
    fzero(f,0.1)      % 0.1为initial guess 猜测值
    
  • option增加参数:提高迭代次数,降低误差范围 来获得一个更加准确的根

    f=@(x)x.^2
    options=optimset('MaxIter',1e3,'TolFun',1e-10);
    fsolve(f,0.1,options);
    fzero(f,0.1,options);
    
  • roots 多项式求解

    roots([1 -3.5 2.75 2.125 -3.875 1.25]);
    % ans = ...
    

递归函数

你可能感兴趣的:(Matlab)