2.3 MATLAB求解方程 您所在的位置:网站首页 2x一16二72怎么解方程 2.3 MATLAB求解方程

2.3 MATLAB求解方程

2024-07-13 06:18| 来源: 网络整理| 查看: 265

2.3 M A T L A B MATLAB MATLAB求解方程

文章目录 2.3 M A T L A B MATLAB MATLAB求解方程一、 M a t l a b Matlab Matlab函数 1 、 s o l v e 函 数 1、solve函数 1、solve函数 例 2 − 8 求 一 元 二 次 方 程 a x 2 + b x + c = 0 的 根 。 例2-8 求一元二次方程ax^2+bx+c=0的根。 例2−8求一元二次方程ax2+bx+c=0的根。​ 例 2 − 9 求 方 程 组 { x 2 + 2 y = a 3 x − 4 y = b 的 解 。 例2-9求方程组\begin{cases}x^2+2y=a\\3x-4y=b\end{cases}的解。 例2−9求方程组{x2+2y=a3x−4y=b​的解。Solve the system of equations.新版 m a t l a b matlab matlab中方程组的求法注意:在计算时若不能得到符号解,可以得到一个数值解。 v p a s o l v e 函 数 : vpasolve函数: vpasolve函数: 2 、 f z e r o 函 数 2、fzero函数 2、fzero函数 例 2 − 10 求 方 程 x + 2 s i n x e x − 1 = 0 的 根 。 例2-10 求方程x+2sinxe^x-1=0的根。 例2−10求方程x+2sinxex−1=0的根。对于方程的建立,也可以通过 i n l i n e 函 数 inline函数 inline函数实现另外通过@方式也可以建立函数 3 、 f s o l v e 函 数 3、fsolve函数 3、fsolve函数 例 2 − 11 求 方 程 组 { x 1 − s i n x 1 − x 2 = 0 2 x 1 + x 2 − c o s x 2 = 0 的 解 。 例2-11求方程组\begin{cases}x_1-sinx_1-x_2=0\\2x_1+x_2-cosx_2=0\end{cases}的解。 例2−11求方程组{x1​−sinx1​−x2​=02x1​+x2​−cosx2​=0​的解。 4 、 r o o t s 函 数 4、roots函数 4、roots函数 例 2 − 12 求 方 程 x 5 − 6 x 4 + 5 x 2 − 3 x + 8 的 根 。 例2-12求方程x^5-6x^4+5x^2-3x+8的根。 例2−12求方程x5−6x4+5x2−3x+8的根。 二、图形放大法两个问题具体步骤 例 2 − 13 : 使 用 图 形 放 大 法 确 定 方 程 x 5 − 6 x 4 + 5 x 2 − 3 x + 8 = 0 各 根 的 取 值 范 围 。 例2-13:使用图形放大法确定方程x^5-6x^4+5x^2-3x+8=0各根的取值范围。 例2−13:使用图形放大法确定方程x5−6x4+5x2−3x+8=0各根的取值范围。 例 2 − 14 : 使 用 图 形 放 大 法 确 定 方 程 组 { 3 x 2 − y 3 = 1 e − x − y = − 2 的 解 的 取 值 范 围 。 例2-14:使用图形放大法确定方程组\begin{cases}3x^2-y^3=1\\e^{-x}-y=-2\end{cases}的解的取值范围。 例2−14:使用图形放大法确定方程组{3x2−y3=1e−x−y=−2​的解的取值范围。

一、 M a t l a b Matlab Matlab函数

概述:在 m a t l a b matlab matlab中,主要有 s o l v e 、 f z e r o 、 f s o l v e 、 r o o t s solve、fzero、fsolve、roots solve、fzero、fsolve、roots等函数用于方程(组)求解,下面介绍其详细用法

1 、 s o l v e 函 数 1、solve函数 1、solve函数

用途:

求解代数方程(组)求解非线性方程(组)

具体使用格式:

solve('F','var') F : F: F:求解方程 v a r : var: var:求解变量——当求解变量省略时,表示对默认变量求解 [x1,x2,...,xn] = solve('F1','F2',...,'Fn','var1','var2',...,'varn') %% 最新版本中无法使用,具体使用见下方例题 用于求解n个方程组成的方程组问题 F 1 、 F 2 、 . . . 、 F n F1、F2、...、Fn F1、F2、...、Fn表示各个方程 v a r 1 、 v a r 2 、 . . . 、 v a r n var1、var2、...、varn var1、var2、...、varn表示各个求解变量 [ x 1 , x 2 , . . . , x n ] [x1,x2,...,xn] [x1,x2,...,xn]表示求解结果 例 2 − 8 求 一 元 二 次 方 程 a x 2 + b x + c = 0 的 根 。 例2-8 求一元二次方程ax^2+bx+c=0的根。 例2−8求一元二次方程ax2+bx+c=0的根。​ >> syms x a b c >> ff = a*x^2+b*x+c; >> solve(ff) ans = -(b + (b^2 - 4*a*c)^(1/2))/(2*a) -(b - (b^2 - 4*a*c)^(1/2))/(2*a) 例 2 − 9 求 方 程 组 { x 2 + 2 y = a 3 x − 4 y = b 的 解 。 例2-9求方程组\begin{cases}x^2+2y=a\\3x-4y=b\end{cases}的解。 例2−9求方程组{x2+2y=a3x−4y=b​的解。 >> syms x y a b >> eqns = [x^2 + 2*y == a, 3*x - 4*y == b]; >> vars = [x y]; >> [solx, soly] = solve(eqns,vars) solx = - (2*((9*a)/4 + (9*b)/8 + 81/64)^(1/2))/3 - 3/4 (2*((9*a)/4 + (9*b)/8 + 81/64)^(1/2))/3 - 3/4 soly = - b/4 - ((9*a)/4 + (9*b)/8 + 81/64)^(1/2)/2 - 9/16 ((9*a)/4 + (9*b)/8 + 81/64)^(1/2)/2 - b/4 - 9/16 Solve the system of equations.新版 m a t l a b matlab matlab中方程组的求法

{ 2 u 2 + v 2 = 0 u − v = 1 \begin{cases}2u^2+v^2=0\\u−v=1\end{cases} {2u2+v2=0u−v=1​

When solving for more than one variable, the order in which you specify the variables defines the order in which the solver returns the solutions. Assign the solutions to variables solv and solu by specifying the variables explicitly. The solver returns an array of solutions for each variable.

>> syms u v >> eqns = [2*u^2 + v^2 == 0, u - v == 1]; >> vars = [v u]; >> [solv, solu] = solve(eqns,vars) solv = - (2^(1/2)*1i)/3 - 2/3 (2^(1/2)*1i)/3 - 2/3 solu = 1/3 - (2^(1/2)*1i)/3 (2^(1/2)*1i)/3 + 1/3

Entries with the same index form the pair of solutions.

>> solutions = [solv solu] solutions = [ - (2^(1/2)*1i)/3 - 2/3, 1/3 - (2^(1/2)*1i)/3] [ (2^(1/2)*1i)/3 - 2/3, (2^(1/2)*1i)/3 + 1/3] 注意:在计算时若不能得到符号解,可以得到一个数值解。

例如求解方程 c o s ( x ) = s i n ( x ) e x : cos(x)=sin(x)e^x: cos(x)=sin(x)ex:

>> syms x >> eqn = cos(x)==sin(x)*exp(x); >> solve(eqn) 警告: Unable to solve symbolically. Returning a numeric solution using vpasolve. ## 不能用符号来解决。使用vpasolve返回数值解。 > In sym/solve (line 304) ans = 0.53139085665215720462026644060472 v p a s o l v e 函 数 : vpasolve函数: vpasolve函数: >> vpasolve(cos(x)==sin(x)*exp(x),x) ans = 0.53139085665215720462026644060472 2 、 f z e r o 函 数 2、fzero函数 2、fzero函数

用途:

求非线性方程组的最优解

使用格式:

fzero('F',[a,b]) #该格式寻求F在[a,b]内的根 fzero('F',x0) F : F: F:表示求解的方程,一般通过子程序建立F [ a , b ] : [a,b]: [a,b]:表示求解区间 x 0 : x0: x0:表示迭代初值 例 2 − 10 求 方 程 x + 2 s i n x e x − 1 = 0 的 根 。 例2-10 求方程x+2sinxe^x-1=0的根。 例2−10求方程x+2sinxex−1=0的根。 %% 在文件编辑窗口编写如下M文件 function f = exam2_10(x) f = x + 2*sin(x)*exp(x) - 1;

在命令窗口执行:

>> fzero(@exam2_10,[0,1]) ans = 0.2774 >> fzero(@exam2_10,0.8) ans = 0.2774 对于方程的建立,也可以通过 i n l i n e 函 数 inline函数 inline函数实现

例如上述问题,执行:

>> f=inline('x+2*sin(x)*exp(x)-1'); >> fzero(f,[0,1]) ans = 0.2774 >> fzero(f,0.8) ans = 0.2774 另外通过@方式也可以建立函数

对例2-10,执行如下:

>> test = @(x)[x + 2*sin(x)*exp(x) - 1]; >> fzero(test,0.8) ans = 0.2774 3 、 f s o l v e 函 数 3、fsolve函数 3、fsolve函数

用途:

求非线性方程组的最优解

使用格式:

fsolve('F',x0) F : F: F:表示求解的方程组,一般通过子程序建立F x 0 : x0: x0:表示迭代初值 例 2 − 11 求 方 程 组 { x 1 − s i n x 1 − x 2 = 0 2 x 1 + x 2 − c o s x 2 = 0 的 解 。 例2-11求方程组\begin{cases}x_1-sinx_1-x_2=0\\2x_1+x_2-cosx_2=0\end{cases}的解。 例2−11求方程组{x1​−sinx1​−x2​=02x1​+x2​−cosx2​=0​的解。 %% 在文件编辑窗口编写如下M文件 function F = exam2_11(x) F(1)=x(1)-sin(x(1))-5*x(2); F(2)=2*x(1)+x(2)-cos(x(2)); %% 在命令窗口中执行 >> fsolve(@exam2_11,[0,0]) Equation solved. fsolve completed because the vector of function values is near zero as measured by the value of the function tolerance, and the problem appears regular as measured by the gradient. ans = 0.4980 0.0041 4 、 r o o t s 函 数 4、roots函数 4、roots函数

用途:

求多项式方程的根

使用格式:

roots(A) 表示在复数范围内求多项式方程 a n x n + a n − 1 x n − 1 + . . . a 1 x + a 0 = 0 a_nx^n+a_{n-1}x^{n-1}+...a_1x+a_0=0 an​xn+an−1​xn−1+...a1​x+a0​=0所有根。 A : A: A: A = [ a n , a n − 1 , . . . , a 1 , a 0 ] 。 A=[a_n,a_{n-1},...,a_1,a_0]。 A=[an​,an−1​,...,a1​,a0​]。 例 2 − 12 求 方 程 x 5 − 6 x 4 + 5 x 2 − 3 x + 8 的 根 。 例2-12求方程x^5-6x^4+5x^2-3x+8的根。 例2−12求方程x5−6x4+5x2−3x+8的根。 >> syms x >> a = [1,-6,0,5,-3,8]; >> roots(a) ans = 5.8626 + 0.0000i -1.2901 + 0.0000i 1.2681 + 0.0000i 0.0797 + 0.9098i 0.0797 - 0.9098i 二、图形放大法 两个问题

在科学研究与工程计算过程中

有些问题只需要大致确实方程根的取值范围,并不需要计算精确解。有些问题需要求精确解,但无解析表达式,而设计的迭代方法对初值具有敏感性。

对上述两个问题,可以通过图像放大的方法,确定根的取值范围或找到根值附近的初始迭代点

具体步骤 (1)绘制函数曲线(2)图形放大,确定曲线与x轴的交点或两曲线的交点 例 2 − 13 : 使 用 图 形 放 大 法 确 定 方 程 x 5 − 6 x 4 + 5 x 2 − 3 x + 8 = 0 各 根 的 取 值 范 围 。 例2-13:使用图形放大法确定方程x^5-6x^4+5x^2-3x+8=0各根的取值范围。 例2−13:使用图形放大法确定方程x5−6x4+5x2−3x+8=0各根的取值范围。 >> x = -2:0.01:6; >> y=x.^5-6*x.^4+5*x.^2-3*x+8; >> plot(x,y) >> grid on

在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

如图可知,三个实根大致取值范围为 ( − 1.4 , − 1.2 ) , ( 1.25 , 1.3 ) , ( 5.8 , 5.9 ) 。 (-1.4,-1.2),(1.25,1.3),(5.8,5.9)。 (−1.4,−1.2),(1.25,1.3),(5.8,5.9)。

例 2 − 14 : 使 用 图 形 放 大 法 确 定 方 程 组 { 3 x 2 − y 3 = 1 e − x − y = − 2 的 解 的 取 值 范 围 。 例2-14:使用图形放大法确定方程组\begin{cases}3x^2-y^3=1\\e^{-x}-y=-2\end{cases}的解的取值范围。 例2−14:使用图形放大法确定方程组{3x2−y3=1e−x−y=−2​的解的取值范围。 >> ezplot('3*x^2-y^3-1',[-7,7,-7,7]) >> hold on >> ezplot('exp(-x)-y+2',[-7,7,-7,7]) >> grid on

在这里插入图片描述 在这里插入图片描述

由上图可知,方程组的解的大致范围为 1.8 < x < 2 , 2.1 < y < 2.2 1.8



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有