必威体育Betway必威体育官网
当前位置:首页 > IT技术

MATLAB第十课:方程式求根

时间:2019-08-31 08:41:03来源:IT技术作者:seo实验室小编阅读:66次「手机版」
 

matlab解方程

目标

  • 符号方法
  • 数字根求解
  • 递归方程

问题描述:

假设有一个数学函数f(x0),想要找到一个x0,使得f(x0) = 0;

例如,函数

使用Matlab求解这个方程的方法

  • 解析法
  • 图解法
  • 数值解

一、符号方法

symbolic Root Finding APProach(符号寻根方法):

  • 符号方法使用符号变量
  • 执行数学方法在符号上,不在数字上
  • 使用sym和syms创建符号变量
% 方法一:syms
>> syms x
>> x + x + x
 
ans =
 
3*x


% 方法2:sym
>> x = sym('x');
>> x + x + x
 
ans =
 
3*x

Symbolic Root Finding: solve()

>> syms x
>> y = x*sin(x)-x;
>> solve(y, x)
 
ans =
 
    0
 pi/2

Solving Multiple equations

>> syms x y
>> eq1 = x - 2*y - 5;
>> eq2 = x + y - 6;
>> A = solve(eq1, eq2, x, y)

A = 

    x: [1x1 sym]
    y: [1x1 sym]

>> A.x
 
ans =
 
17/3
 
>> A.y
 
ans =
 
1/3

Solving Equations Expressed in Symbols

MATLAB总是以x为未知数。 

>> syms x a b
>> solve('a*x^2-b')

ans =
 
  b^(1/2)/a^(1/2)
 -b^(1/2)/a^(1/2)
 

我们让b为未知数。

syms x a b 
solve('a*x^2-b', 'b')

ans =
 
a*x^2

Symbolic Differentiation: diff()

>> syms x
>> y = 4*x^5;
>> yprime = diff(y)
 
yprime =
 
20*x^4

Symbolic Integration: 

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

符号方法和数值方法的区别:

二、数字根求解 

Using Function handles

fsolve():

>> f2 = @(x)(1.2*x+0.3+x*sin(x));
>> fsolve(f2, 0)

ans =

   -0.3500

f2:A function handle
0:Initial guess

fzero():

注意:fzero只能解决函数穿过x轴的函数的解。不穿过x轴的函数,不能使用fzero函数求解。

>> f = @(x)x.^2;
>> fzero(f,0.1)

ans =

   NaN

>> fsolve(f,0)


ans =

     0


Finding Roots of Polynomials: roots()

>> roots([1 -3.5 2.75 2.125 -3.875 1.25])

ans =

   2.0000 + 0.0000i
  -1.0000 + 0.0000i
   1.0000 + 0.5000i
   1.0000 - 0.5000i
   0.5000 + 0.0000i

Numeric Root Finding Methods

包围方法:从包含根的间隔开始

包围方法的思想:就是最小二乘法。

算法的流程:

开放方法:Newton-Raphson方法

算法流程:

比较:

Recursive Functions

递归函数:递归思想是很重要的思想,可以上网查一些资料弄清楚

Factorial Recursive Function:因子递归函数

  • 该功能包括递归案例和基本案例
  • 该功能到达基本情况时停止
function output = fact(n) 
% fact recursively finds n! 
if n==1 
    output = 1; 
else 
    output = n * fact(n-1); 
end 
end

相关阅读

Matlab时间序列分析

文章目录时间序列分析需要解决的问题时间序列分析的步骤如何实现每个步骤去趋势/去周期偏相关/自相关函数的计算模型定阶模型检验

MATLABSimulink模块库详解(一)Sources篇

MATLAB Simulink模块库详解(一)Sources篇Simulink模块库概述1.Sources模块库,为仿真提供各种信号源2.Sinks模块库,为仿真提供输出设备

Matlab中meshgrid的用法

meshgrid:网格1、主要使用的函数为[X,Y]=meshgrid(xgv,ygv);meshgrid函数生成的X,Y是大小相等的矩阵,xgv,ygv是两个网格矢量,xgv,ygv都

MATLAB常用求导和求偏导函数

matlab求导命令diff调用格式:diff(函数) , 求的一阶导数;diff(函数, n) ,求的n阶导数(n是具体整数);diff(函数,变量名),求对的偏导数;diff

MATLAB解微分方程组

解单一微分方程组 S=dsolve(eqn,cond) eqn是微分方程等式,其中微分用diff函数表示,cond是确定微分方程不定系数的条件。注意函数要

分享到:

栏目导航

推荐阅读

热门阅读