最新MatLab4数值计算(一)
如何使用MATLAB进行数值计算
如何使用MATLAB进行数值计算使用MATLAB进行数值计算一、引言数值计算是现代科学与工程领域中不可或缺的一部分,它能够解决许多实际问题,包括求解方程、优化问题和模拟实验等。
而MATLAB作为一种功能强大的数值计算软件,被广泛应用于各个领域。
本文将介绍如何使用MATLAB进行数值计算,并结合实例进行说明。
二、MATLAB基础首先,我们需要了解MATLAB的基本操作和语法,以便能够熟练运用。
MATLAB使用矩阵和数组来存储和处理数据,因此,熟悉矩阵和数组操作是非常重要的。
MATLAB中的矩阵和数组是通过方括号来定义的,例如:A = [1 2 3; 4 5 6; 7 8 9]表示一个3x3的矩阵A,其中每个元素由空格或分号隔开。
我们可以使用括号或索引来访问矩阵中的元素。
例如,要访问矩阵A的第二行第三列的元素,可以使用A(2,3)。
MATLAB提供了大量内置的数学函数,包括算术运算、三角函数、指数和对数函数等。
这些函数可以直接应用于矩阵和数组,简化了数值计算的过程。
三、方程求解方程求解是数值计算中的一个重要任务,MATLAB提供了多种方法来求解方程,包括代数方法和数值方法。
1. 代数方法对于一些简单的方程,例如一元一次方程或二次方程,可以直接使用MATLAB内置的解方程函数进行求解。
例如,对于一元一次方程ax + b = 0,可以使用solve函数来求解。
代码示例:syms x;eqn = a*x + b == 0;sol = solve(eqn, x);其中,syms x;指定x为符号变量,eqn为方程表达式,sol为方程的解。
2. 数值方法对于一些复杂的方程,无法用解析方法求解。
这时,可以使用数值方法来近似求解。
MATLAB提供了多种数值求解方法,包括二分法、牛顿法和割线法等。
这些方法可以通过迭代逼近的方式求解方程的根。
代码示例:f = @(x) x^2 - 4;x0 = 2;x = fzero(f, x0);其中,f为方程的表达式,x0为初始猜测值,x为方程的根。
matlab数值计算方法
Matlab提供了多种数值计算方法,以下是其中一些常用的方法:
1. 整数计算:Matlab中的计算方式和计算器类似,可以直接输入数值然后加上运算符进行运算。
2. 小数计算:小数计算的方式和整数相似。
3. 分数计算:Matlab可以切换至分数模式,这一点较计算器等具有较大优势。
4. 赋值运算:Matlab中除了和计算器一样直接运算,还能进行赋值运算,直接将其中一个值赋值后,带入运算即可。
5. 多重赋值运算:Matlab在数值计算的时候,还支持多重赋值计算。
这样可以很方便的求解列出的问题。
以上内容仅供参考,建议查阅Matlab官方文档获取更全面和准确的信息。
matlab经典的4级4阶runge kutta法
MATLAB是一种用于算法开发、数据分析、可视化和数值计算的高级技术计算语言和交互式环境。
作为一个强大的工具,MATLAB提供了许多数值计算方法,其中4级4阶Runge-Kutta方法就是其中之一。
1. Runge-Kutta方法简介Runge-Kutta方法是求解常微分方程(ODE)的数值方法之一。
在MATLAB中,用户可以使用内置的ode45函数来调用4级4阶Runge-Kutta方法。
具体来说,4级4阶Runge-Kutta方法是一种单步迭代方法,通过在每个步骤中计算斜率来逐步逼近解析解。
它的优点是数值稳定性好,适用于多种类型的微分方程。
2. Runge-Kutta方法的公式4级4阶Runge-Kutta方法的一般形式如下:$$k_1 = hf(t_n, y_n)$$$$k_2 = hf(t_n + \frac{1}{2}h, y_n + \frac{1}{2}k_1)$$$$k_3 = hf(t_n + \frac{1}{2}h, y_n + \frac{1}{2}k_2)$$$$k_4 = hf(t_n + h, y_n + k_3)$$$$y_{n+1} = y_n + \frac{1}{6}(k_1 + 2k_2 + 2k_3 + k_4)$$其中,$t_n$是当前的独立变量值,$y_n$是当前的解向量,h是步长,$f(t_n, y_n)$是给定点$(t_n, y_n)$处的斜率。
通过不断迭代上述公式,可以逐步求解微分方程的数值解。
3. MATLAB中的4级4阶Runge-Kutta方法的应用在MATLAB中,用户可以使用ode45函数调用4级4阶Runge-Kutta方法来求解常微分方程。
使用ode45函数的基本语法如下:```matlab[t, y] = ode45(odefun, tspan, y0)```其中,odefun是用户定义的ODE函数句柄,tspan指定了求解的时间范围,y0是初始条件。
Matlab学习指导第四章 数值计算
2x1-x2-x3=4
3x1+4x2-2x3=11 3x1-2x2+4x3=11
A=[ 2,-1,-1 ; 3,4,-2; 3,-2,4 ]; b=[4; 11; 11]; det(A), rank(A), rank([A,b]) x=A\b
方程组的解的三种情况:
对于方程Ax=b, A为Am×n矩阵,有三种情况: 当m=n时,此方程成为"恰定"方程,求解精确解 当m>n时,此方程成为“超定”方程,寻求最小二乘解 (直线拟
合)
1) 恰定方程组的解
当m<n时,此方程成为"欠定"方程,寻求基本解 matlab定义的除运算可以很方便地解上述三种方程 x = 方程组Ax=b (A非奇异),解为x=A\b 例4.2.1-2 求下列方程组的解 3.00 1.00 1.00
通俗地讲, 拟合就是由已知点得到一条曲线, 使该曲线 最能反映点所代表的规律.比如做欧姆定理的实验的时 候,由于实验中存在误差,最后拟合得到的曲线是一条 直线,而且肯定只有部分点落在拟合的直线上,但此时 该直线和测试点的方差最小.由拟合直线的斜率就可以 知道电阻的阻值.拟合是探测事物变化规律的办法. 插值就是根据函数上某些已知点(或实验数据),按一定 规律(插值方法)寻求未知的点,比如已知一个常用对数 y=log(x)表,是按照x=0.1:0.1:10制表的,如果按已知数 据求y=log(2.897)就可以用插值得到.表制得越密,插值 越准确.
16
对于方程组Ax=b, 采用x=A\b计算,如果方程组为yC=d, 要使用右除,即指令为y=d/C
Ax=bx'A'=b'yC=d x=A\bx'=b'/A'y=d/C 例4.2.1-1 解下列方程组 2x1+2x2+3x3=3
MATLAB数值计算教程
MATLAB数值计算教程第一章:MATLAB入门1.1 MATLAB简介MATLAB(Matrix Laboratory)是一款强大的数值计算软件,广泛用于工程、科学和金融领域。
它的特点是简单易用、高效快速,并且拥有丰富的工具箱和函数库。
1.2 MATLAB环境搭建要使用MATLAB进行数值计算,首先需要安装MATLAB软件,并进行必要的配置。
通过官方网站下载安装程序,根据提示进行安装即可。
安装完成后,打开MATLAB环境,即可开始使用。
1.3 MATLAB基本操作在MATLAB环境中,可以通过命令行窗口输入和执行命令,也可以使用脚本文件进行批量处理。
常用的基本操作包括变量赋值、算术运算、函数调用等。
例如,使用"="符号赋值变量,使用"+"、"-"、"*"、"/"等符号进行算术运算。
第二章:向量和矩阵操作2.1 向量操作在MATLAB中,向量是一种特殊的矩阵,可以通过一组有序的元素构成。
向量可以进行基本的算术运算,如加法、减法、乘法、除法,还可以进行向量的点积、叉积等操作。
可以使用内置函数和运算符来实现。
2.2 矩阵操作矩阵是MATLAB中最常用的数据结构之一,使用矩阵可以进行多个向量的组合和运算。
可以进行矩阵的加法、减法、乘法、除法等操作,也可以进行矩阵的转置、求逆、求特征值等操作。
MATLAB提供了大量的函数和工具箱来支持矩阵的操作。
第三章:数值计算方法3.1 数值积分数值积分是一种用数值方法计算定积分的方法。
在MATLAB 中,可以使用内置函数来进行数值积分,如trapz函数和quad函数。
也可以使用Simpson法则、复合辛普森法等方法实现数值积分。
3.2 数值微分数值微分是一种用数值方法计算导数的方法。
在MATLAB中,可以使用内置函数进行数值微分,如diff函数和gradient函数。
如何在MATLAB中进行数值计算
如何在MATLAB中进行数值计算1.基本数学操作:-加法、减法、乘法、除法:使用+、-、*、/操作符进行基本算术运算。
-幂运算:使用^或.^(点乘)操作符进行幂运算。
- 开平方/立方:可以使用sqrt(或power(函数进行开平方和立方运算。
2.矩阵操作:- 创建矩阵:可以使用矩阵构造函数如zeros(、ones(、rand(等创建矩阵。
- 矩阵运算:使用*操作符进行矩阵相乘,使用transpose(函数进行矩阵转置。
- 矩阵求逆和求解线性方程组:使用inv(函数求矩阵的逆,使用\操作符求解线性方程组。
3.数值积分和微分:- 数值积分:使用integral(函数进行数值积分。
可以指定积分函数、积分上下限和积分方法。
- 数值微分:使用diff(函数进行数值微分。
可以指定微分函数和微分变量。
4.解方程:- 一元方程:使用solve(函数可以解一元方程。
该函数会尝试找到方程的精确解。
- 非线性方程组:使用fsolve(函数可以求解非线性方程组。
需要提供初始值来开始求解过程。
-数值方法:可以使用牛顿法、二分法等数学方法来求解方程。
可以自定义函数来实现这些方法。
5.统计分析:- 统计函数:MATLAB提供了丰富的统计分析函数,如mean(、std(、var(等用于计算均值、标准差、方差等统计量。
- 直方图和密度估计:使用histogram(函数可以绘制直方图,并使用ksdensity(函数进行核密度估计。
- 假设检验:使用ttest(或anova(函数可以进行假设检验,用于比较多组数据之间的差异。
6.数值优化:- 非线性最小化:使用fminunc(函数可以进行非线性最小化。
需要提供目标函数和初始点。
- 线性规划:使用linprog(函数可以进行线性规划。
需要提供目标函数和限制条件。
- 整数规划:使用intlinprog(函数可以进行整数规划。
需要提供目标函数和整数约束。
7.拟合曲线:- 线性拟合:使用polyfit(函数进行线性拟合。
数值计算(一)
[x,fval]=fminbnd('sin(x)',-pi,pi) %求sinx在[-π,π]的极小值点 x= -1.5708 fval = -1.0000
2014-6-28
天津农学院基础科学系 朱文新
22
[x,fval]=fminsearch(' (x(1)-1)^2+(x(2)x(1)^2)^2',[0,0])
级数求和、幂级数展开的Matlab命令
命令格式 symsum(f) symsum(f,x) 含义 求符号表达式f对默认变量的不定和 求符号表达式f对自变量x的不定和
symsum(f,a,b)
求符号表达式f对默认变量的a到b的有限和
taylor(f) taylor(f,n,x) taylor(f,n,x,a)
24
练习
1.
求下列极限
1 x 1 lim x 0 x
n
xn 1 lim m , ( n, m为常数) x 1 x 1
ln x lim ( ) x x 1
x 1 lim( ) x0 x 1 ln x
2014-6-28
天津农学院基础科学系 朱文新
25
2、计算下列导数 (1) (2) (3) (4)
MATLAB数值计算(一)
主讲: 朱文新
2014-6-28
天津农学院基础科学系 朱文新
1
实验内容:
1. 微积分基本运算 2.非线性方程组的解法
2014-6-28
天津农学院基础科学系 朱文新
2
一、微积分基本运算
实验目的:
学会利用matlab 求解函数的极限、导数、极值、积分与级数运算
第四章MATLAB的数值计算功能
第四章MATLAB的数值计算功能MATLAB是一种非常强大的数值计算环境,具有广泛的数值计算功能。
在本文中,我们将讨论MATLAB的一些常见数值计算功能,包括数值求解、数值积分和数值优化等。
首先,MATLAB可以进行数值求解。
数值求解是指通过数值方法来找到方程的根或函数的极值。
MATLAB提供了多种数值求解方法,包括牛顿法、割线法、二分法等。
用户可以根据具体的问题选择适当的数值求解方法,并使用MATLAB的相关函数进行求解。
例如,可以使用fzero函数来求解非线性方程的根,使用fsolve函数来求解非线性方程组的根。
其次,MATLAB还可以进行数值积分。
数值积分是指通过数值方法来计算函数的定积分。
MATLAB提供了多种数值积分方法,包括梯形法则、辛普森法则、高斯积分法等。
用户可以使用MATLAB的相关函数进行数值积分计算。
例如,可以使用trapz函数来进行梯形法则积分计算,使用quad函数来进行高斯积分法的计算。
此外,MATLAB还具有数值优化功能。
数值优化是指通过数值方法来寻找函数的最大值或最小值。
MATLAB提供了多种数值优化方法,包括梯度法、牛顿法、遗传算法等。
用户可以使用MATLAB的相关函数进行数值优化计算。
例如,可以使用fminbnd函数来进行单变量函数的最小值优化,使用fmincon函数来进行多变量函数的约束优化。
除了以上功能,MATLAB还具有其他一些重要的数值计算功能。
例如,MATLAB提供了矩阵计算、代数运算、数值微分、常微分方程求解等功能。
用户可以使用MATLAB的矩阵运算符进行矩阵计算,使用MATLAB的代数运算函数进行代数运算,使用MATLAB的diff函数进行数值微分计算,使用MATLAB的ode45函数进行常微分方程数值求解。
总而言之,MATLAB是一种功能强大的数值计算环境,具有广泛的数值计算功能。
无论是数值求解、数值积分还是数值优化等,MATLAB都提供了多种数值计算方法和相关函数,方便用户进行数值计算工作。
matlab的数值运算
matlab的数值运算当使用MATLAB 进行数值运算时,可以使用各种内置函数和运算符进行计算。
下面是一些常见的数值运算操作的详细说明:基本数学运算:加法:使用"+" 运算符进行两个数的相加。
例如,计算2 和3 的和:2 + 3。
减法:使用"-" 运算符进行两个数的相减。
例如,计算5 减去2 的结果:5 - 2。
乘法:使用"*" 运算符进行两个数的相乘。
例如,计算4 乘以3 的结果:4 * 3。
除法:使用"/" 运算符进行两个数的相除。
例如,计算10 除以2 的结果:10 / 2。
取余数:使用"mod" 函数或"%" 运算符计算两个数的余数。
例如,计算11 除以3 的余数:mod(11, 3) 或11 % 3。
幂运算:使用"^" 运算符进行幂运算。
例如,计算2 的3 次幂:2^3。
数学函数:MATLAB 提供了许多内置的数学函数,可以进行各种数值计算和分析操作。
这些函数包括但不限于:abs(x):返回x 的绝对值。
sin(x):返回x 的正弦值。
cos(x):返回x 的余弦值。
exp(x):返回e 的x 次幂,其中e 是自然对数的底数。
log(x):返回x 的自然对数。
sqrt(x):返回x 的平方根。
round(x):返回x 的四舍五入值。
floor(x):返回不大于x 的最大整数。
ceil(x):返回不小于x 的最小整数。
max(x, y):返回x 和y 中的较大值。
min(x, y):返回x 和y 中的较小值。
数组运算:MATLAB 中的数值计算通常涉及数组操作。
可以对向量、矩阵和多维数组执行各种运算,例如:矩阵相加:使用"+" 运算符对两个相同大小的矩阵进行元素级别的相加。
矩阵相乘:使用"" 运算符对两个矩阵进行乘法运算。
MATLAB软件学习(一)数值计算
x2 (3)求 y 在x 1点10阶泰勒展式。 例 4 1 x
解 输入命令 : >> syms x; >> taylor(x^2/(1+x),11,1) ans = -1/4+3/4*x+1/8*(-1+x)^2-1/16*(-1+x)^3+1/32*(1+x)^4-1/64*(-1+x)^5+1/128*(-1+x)^6-1/256*(1+x)^7+1/512*(-1+x)^8-1/1024*(1+x)^9+1/2048*(-1+x)^10
(4)强大的图形表达功能 该软件不仅可以绘制一般的二维和三维图形,还可以 绘制工程特性较强的特殊图形,并且它提供了丰富的科 学计算可视化功能及进行动画制作。 (5)可扩展性能 可扩展性能是该软件的一大优点,用户可以自己编 写M文件,组成自己的工具箱,方便地解决本领域内常 见的计算问题。利用Web服务器,可以实现MATLAB与 网络程序的接口;利用互操作技术,可以实现MATLAB 与.NET程序的接口;利用端口API函数,可以实现 MATLAB与硬件的接口。
>>(12+2*(7-4))/3^2 回车得结果 ans= 2 /5时的值 例2 求y=sinx在x= 解 输入命令 : >>y=sin(pi/5) y= 0.5875 (2)MATLAB表达式的输入 MATLAB语句由表达式和变量组成,有两种常用的形式: 表达式 变量=表达式
(3)用函数sym来创建单个符号型变量、符号表达式、 符号方程。 例3 >>x=sym('m+n+i') x= m+n+i 例4 >> f=sym('a*x+b=0') %定义f为符号方程 %定义x为符号型变量
MATLAB数值计算入门教程
MATLAB数值计算入门教程第一章:MATLAB基础知识1.1 MATLAB简介MATLAB是一种用于解决科学与工程问题的高级技术计算环境。
它结合了数值分析、可视化和编程,提供了强大而灵活的工具来处理各种计算任务。
本章将介绍MATLAB的基本操作和界面。
1.2 MATLAB的安装和配置首先,我们需要下载和安装MATLAB软件。
在安装过程中,可以选择安装附带的工具箱,如统计工具箱和优化工具箱,以扩展MATLAB的功能。
安装完成后,还需进行基本配置,如设置工作目录和界面外观。
1.3 MATLAB的基本语法MATLAB使用面向向量和矩阵的语言,具有简洁而强大的语法。
本节将介绍MATLAB的基本数据类型、运算符、控制结构等。
例如,MATLAB中的向量和矩阵可以通过简单的行列运算实现。
第二章:MATLAB数值计算2.1 常用数值计算函数MATLAB提供了许多常用的数值计算函数,如求解线性方程组、插值、数值积分和微分等。
本章将介绍这些函数的使用方法,并给出实例演示。
2.2 数值计算方法数值计算方法是解决数值计算问题的核心。
本节将介绍常用的数值计算方法,如迭代法、数值求解微分方程和数值优化等。
同时,我们还会介绍MATLAB中对应的函数和工具箱。
第三章:MATLAB数据可视化3.1 绘图函数数据可视化是MATLAB的一个重要功能。
MATLAB提供了丰富的绘图函数,可以绘制二维曲线、三维曲面、散点图等。
本节将介绍这些绘图函数的使用方法,并给出实例演示。
3.2 图形操作与修改除了绘制基本图形外,MATLAB还提供了对图形进行操作与修改的函数。
例如,我们可以修改坐标轴范围、添加图例和标签,以便更好地展示和解读数据。
本节将详细介绍这些图形操作的方法。
第四章:MATLAB编程与应用4.1 MATLAB脚本和函数编写MATLAB不仅是一个交互式环境,还可以编写脚本和函数来实现更复杂的计算任务。
本节将介绍MATLAB脚本和函数的编写方法,并给出实例演示。
Matlab中的数值计算实践技巧
Matlab中的数值计算实践技巧在数学和工程领域中,Matlab是一种广泛使用的数值计算软件。
它的灵活性和功能强大使得它成为许多科学家和工程师的首选工具。
然而,在实践中,由于Matlab提供了许多不同的功能和技术,有时候我们可能会在使用时遇到一些问题。
本文将介绍一些在Matlab中的数值计算实践中经常遇到的技巧和解决方案。
第一部分:数值计算的基础在开始介绍一些高级技巧之前,我们首先需要了解一些数值计算的基础知识。
数值计算是利用数值方法来近似解决数学问题的过程。
在Matlab中,我们可以使用一些内置的函数来执行一些基本的数值计算操作,比如加减乘除和求幂等。
另外,Matlab还提供了一些常用的数学函数,例如三角函数、指数函数和对数函数等。
这些函数在数值计算中非常重要,我们可以利用它们来进行各种复杂的计算。
第二部分:数值计算的优化技巧在进行复杂的数值计算时,性能往往是一个关键因素。
为了提高计算效率,我们可以采用一些优化技巧。
其中一个常用的技巧是向量化运算。
在Matlab中,向量化运算可以显著减少循环的数量,从而提高计算速度。
例如,如果我们需要对一个向量中的每个元素进行运算,我们可以使用向量化的方式,而不是使用循环来逐个处理。
另外一个常见的优化技巧是矩阵分解。
许多数值计算问题可以转化为矩阵分解的形式,例如线性方程组的求解和特征值问题的求解。
在Matlab中,我们可以使用一些内置的函数来实现这些分解,并且这些函数通常会采用一些高效的算法来提高计算速度。
第三部分:数值计算的问题与解决方案在进行数值计算时,我们可能会遇到一些问题。
在这一部分,我们将介绍一些常见的问题,并给出一些解决方案。
第一个问题是数值不稳定性。
由于计算机的有限精度,有些计算可能会引入一些误差。
当计算过程中的误差累积到一定程度时,可能会导致结果的不稳定性。
为了解决这个问题,我们可以使用一些数值稳定性较好的算法,或者对问题进行一些转化来避免误差的累积。
MatLab4数值计算(一)word精品文档28页
MatLab & 数学建模授课:曾景峰(江西环境工程职业学院)第四讲数值计算符号数学工具箱符号表达式的运算numeric符号到数值的转换pretty显示悦目的符号输出subs替代子表达式sym建立符号矩阵或表达式symadd符号加法symdiv符号除法symmul符号乘法symop符号运算sympow符号表达式的幂运算symrat有理近似symsub符号减法symvar求符号变量符号表达式的简化collect合并同类项expand展开factor因式simple求解最简形式simplify简化symsum 和级数符号多项式charpoly特征多项式horner嵌套多项式表示numden分子或分母的提取poly2sym多项式向量到符号的转换sym2poly符号到多项式向量的转换符号微积分diff微分int积分jordan约当标准形taylor泰勒级数展开符号可变精度算术digits设置可变精度vpa可变精度计算求解符号方程compose函数的复合dsolve微分方程的求解finverse函数逆linsolve齐次线性方程组的求解Solve代数方程的求解符号线性代数charploy特征多项式determ矩阵行列式的值eigensys特征值和特征向量inverse矩阵逆jordan约当标准形linsolve齐次线性方程组的解transpose矩阵的转置一、方程求解求解单个代数方程MATLAB具有求解符号表达式的工具,如果表达式不是一个方程式(不含等号),则在求解之前函数solve将表达式置成等于0。
>> solve( ' a*x^2+b*x+c ' ) % solve for the roots of the equtionans=[1/2/a*(-b+(b^2-4*a*c)^1/2)][1/2/a*(-b-(b^2-4*a*c)^1/2)]结果是符号向量,其元素是方程的2个解。
如何在MATLAB中进行数值计算
如何在MATLAB中进行数值计算MATLAB是一种用于数值计算和科学计算的程序设计语言和环境。
它提供了各种函数和工具箱,用于处理数值计算问题,包括线性代数、数值积分、数值微分、常微分方程求解、优化、插值等。
下面将介绍如何在MATLAB中进行数值计算的基本步骤和常用函数。
首先,启动MATLAB软件,创建一个新的脚本文件(.m文件),用于编写和保存MATLAB代码。
1.数值计算基础在MATLAB中进行数值计算的基本单位是矩阵和向量。
可以使用MATLAB提供的各种函数来创建和操作矩阵和向量。
例如,可以使用"zeros"函数创建一个全零的矩阵,使用"ones"函数创建一个全一的矩阵,使用"rand"函数生成一个随机矩阵。
2.线性代数计算MATLAB提供了丰富的线性代数函数,用于处理线性方程组、矩阵运算和特征值计算等问题。
例如,可以使用"inv"函数计算矩阵的逆,使用"det"函数计算矩阵的行列式,使用"eig"函数计算矩阵的特征值和特征向量。
3.数值积分MATLAB提供了多种数值积分方法,用于计算函数的定积分。
可以使用"quad"函数进行一维数值积分,使用"quad2d"函数进行二维数值积分,使用"quad3d"函数进行三维数值积分。
4.数值微分MATLAB提供了多种数值微分方法,用于计算函数的导数和偏导数。
可以使用"diff"函数计算函数的导数,使用"gradient"函数计算函数的梯度,使用"hessian"函数计算函数的Hessian矩阵。
5.常微分方程求解MATLAB提供了多种数值方法,用于求解常微分方程组。
可以使用"ode45"函数求解一阶常微分方程,使用"ode15s"函数求解刚性常微分方程。
matlab_4数值计算
a ^ p —— a 自乘p次幂
方阵 >1的整数
对于p的其它值,计算将涉及特征值和特 征向量,如果p是矩阵,a是标量a^p使 用特征值和特征向量自乘到p次幂;如 a,p都是矩阵,a^p则无意义。
a=[1,2,3;4,5,6;7,8,9];a^2 ans =30 66 36 81 42 96
102 126 150
矩阵运算
4. 矩阵的其它运算
inv —— 矩阵求逆 det —— 行列式的值
eig —— 矩阵的特征值
diag —— 对角矩阵
’ —— 矩阵转置 sqrtm—— 矩阵开方
5.矩阵的一些特殊操作
矩阵的变维 a=[1:12];b=reshape(a,3,4) c=zeros(3,4);c(:)=a(:)
x=eps; L1=(1-cos(2*x))/(x*sin(x)), L2=sin(x)/x, L1 = 0 L2 = 1 syms t f1=(1-cos(2*t))/(t*sin(t)); f2=sin(t)/t; Ls1=limit(f1,t,0) Ls2=limit(f2,t,0)
Ls1 =2 Ls2 =1 %error % 巧等
计算精度可控的数值积分
quad quad1 dblquad triplequad 注意积分限
函数极值的数值求解
寻优函数:
fminbnd — 求单变量函数 极小值 fminsearch— 单纯形法求多变量函数 极小值 fminunc — 拟牛顿法求多变量函数 极小值 fzero —— 变量函数0值
a
x = b
x=a\b x= 2.00 3.00
2.超定方程组的解
方程 ax=b ,m<n时此时不存在唯一解。 方程解 (a ' a)x=a ' b x=(a' a)-1 a ' b —— 求逆法
数值方法MATLAB版第四版课程设计
数值方法 MATLAB 版第四版课程设计一、实验任务本次实验设计旨在让同学们通过 MATLAB 软件掌握数值方法的基本原理,学会使用 MATLAB 编程语言进行各种数值计算及分析方法,独立解决数值计算问题。
二、实验要求任务 1选择一篇有关数值方法的论文,通过 MATLAB 软件编写相关数值计算算法程序,并进行仿真和分析,得到论文中数值计算结果的符合度。
任务 2利用 MATLAB 编程工具实现以下数值计算方法:1.牛顿迭代法求方程的根;2.龙格-库塔法求解常微分方程(常微分方程组)初值问题;3.在 2 中做出初值的画图,让学生了解初值的选择对解的稳定性的影响。
任务 3根据指定数据设置矩形区域,获得该区域的累计误差和总误差。
任务 4编程利用梯形法、辛普森法和龙贝格法求定积分,得到不定积分的数值解,并分析其停止准则的影响。
任务 11.阅读论文,理解数值计算问题;2.编写 MATLAB 程序,设置参数;3.进行仿真分析;4.得到数值计算结果。
\任务 21.了解牛顿迭代法应用场景;2.编写 MATLAB 程序,实现牛顿迭代法;3.了解龙格-库塔法及其变形;4.基于任务 3,作出龙格-库塔法画图;5.分析初值对解的稳定性的影响。
任务 31.通过指定数据设置矩形区域;2.确定累计误差和总误差;3.编写 MATLAB 程序,得到矩形区域累计误差和总误差。
任务 41.了解梯形法求定积分的基本原理;2.编写 MATLAB 程序,计算定积分数值解;3.同样地,掌握辛普森法和龙贝格法求定积分的基本原理及其 MATLAB程序;4.分析停止准则的影响。
任务 1 为数值计算仿真实验及分析报告;任务 2 完成牛顿迭代法等数值计算方法基本程序的设计实现及仿真结果展示;任务 3 完成基本数据,构造累计误差和总误差计算程序及结果展示,要求整洁清晰;任务 4 完成梯形法、辛普森法和龙贝格法定积分计算程序及结果展示,并对计算结果进行分析。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
M a t L a b4数值计算(一)MatLab & 数学建模授课:曾景峰(江西环境工程职业学院)第四讲数值计算符号数学工具箱符号表达式的运算numeric 符号到数值的转换pretty 显示悦目的符号输出subs 替代子表达式sym 建立符号矩阵或表达式symadd 符号加法symdiv 符号除法symmul 符号乘法symop 符号运算sympow 符号表达式的幂运算symrat 有理近似symsub 符号减法symvar 求符号变量符号表达式的简化collect 合并同类项expand 展开factor 因式simple 求解最简形式simplify 简化symsum 和级数符号多项式charpoly 特征多项式horner 嵌套多项式表示numden 分子或分母的提取poly2sym 多项式向量到符号的转换sym2poly 符号到多项式向量的转换符号微积分diff 微分int 积分jordan 约当标准形taylor 泰勒级数展开符号可变精度算术digits 设置可变精度vpa 可变精度计算求解符号方程compose 函数的复合dsolve 微分方程的求解finverse 函数逆linsolve 齐次线性方程组的求解Solve 代数方程的求解符号线性代数charploy 特征多项式determ 矩阵行列式的值eigensys 特征值和特征向量inverse 矩阵逆jordan 约当标准形linsolve 齐次线性方程组的解transpose 矩阵的转置一、方程求解求解单个代数方程MATLAB具有求解符号表达式的工具,如果表达式不是一个方程式(不含等号),则在求解之前函数solve将表达式置成等于0。
>> solve( ' a*x^2+b*x+c ' ) % solve for the roots of the equtionans=[1/2/a*(-b+(b^2-4*a*c)^1/2)][1/2/a*(-b-(b^2-4*a*c)^1/2)]结果是符号向量,其元素是方程的2个解。
如果想对非缺省x变量求解,solve必须指定变量。
>> solve( ' a*x^2+b*x+c ' , ' b ' ) % solve for bans=-(a*x^2+c)/x带有等号的符号方程也可以求解。
>> f=solve( ' cos(x)=sin(x) ' ) % solve for xf=1/4*pi>> t=solve( ' tan(2*x)=sin(x) ' )t=[ 0][acos(1/2+1/2*3^(1/2))][acos(1/2=1/2*3^(1/2))]并得到数值解。
>> numeric(f)ans=0.7854>> numeric(t)ans=0 + 0.8314i1.9455注意在求解周期函数方程时,有无穷多的解。
在这种情况下,solve对解的搜索范围限制在接近于零的有限范围,并返回非唯一的解的子集。
如果不能求得符号解,就计算可变精度解。
>> x=solve( ' exp(x)=tan(x) ' )x=1.306326940423079代数方程组求解可以同时求解若干代数方程,语句solve(s1,s2,.....,sn)对缺省变量求解n个方程,语句solve(s1,s2,...,sn,' v1,v2,...,vn ')对n个' v1,v2,...vn '的未知数求解n个方程。
solve(f) 解符号方程式f。
solve(f1,…,fn) 解由f1,…,fn组成的联立方程式。
我们先定义以下的方程式:>>eq1 = 'x-3=4'; % 注意也可写成'eq1=x-7'>>eq2 = 'x^2-x-6=0'; % 注意也可写成'eq2=x*2-x-6'>>eq3 = 'x2+2*x+4=0';>>eq4 = '3*x+2*y-z=10';>>eq5 = '-x+3*y+2*z=5';>>eq6 = 'x-y-z=-1';>>solve(eq1)ans=7>>solve(eq2)ans=[[3],[-2]]' % 原方程式有二个根3, -2>>solve(eq3)ans=[[-1+i*3^(1/2)],[-1-i*3^(1/2)]]' % 注意实根和虚根的表示式>>solve(eq4,eq5,eq6) % 解三个联立方程式ans=x = -2, y = 5, z = -6如何处理中小学典型的代数问题?黛安娜(Diane)想去看电影,她从小猪存钱罐倒出硬币并清点,她发现:•10美分的硬币数加上5美分的硬币总数的一半等于25美分的硬币数。
•1美分的硬币数比5美分、10美分以及25美分的硬币总数多10。
•25美分和10美分的硬币总数等于1美分的硬币数加上1/4的5美分的硬币数•25美分的硬币数和1美分的硬币数比5美分的硬币数加上8倍的10美分的硬币数多1。
如果电影票价为3.00美元,爆米花为1.00美元,糖棒为50美分,她有足够的钱去买这三样东西?首先,根据以上给出的信息列出一组线性方程,假如p,n,d和q分别表示1美分,5美分,10美分,和25美分的硬币数«Skip Record If...»然后,建立MATLAB符号方程并对变量求解。
>> eq1= ' d+(n+p)/2=q ' ;>> eq2= ' p=n+d+q-10 ' ;>> eq3= ' q+d=p+n/4 ' ;>> eq4= ' q+p=n+8*d-1 ' ;>>[pennies,nickles,dimes,quarters]=solve(equ1,equ2,equ3,equ4,' p,n,d,q ' )pennies=16nickles=8dimes=3quarters=15所以,黛安娜有16枚1美分的硬币,8枚5美分的硬币,3枚10美分的硬币,15枚25美分的硬币,这就意味着>> money=.01*16+.05*8+.10*3+.25*15money=4.6100她就有足够的钱去买电影票,爆米花和糖棒并剩余11美分。
【例】求解二元函数方程组«Skip Record If...»的零点。
(0)从三维坐标初步观察两函数图形相交情况x=-2:0.05:2;y=x;[X,Y]=meshgrid(x,y); %产生x-y平面上网点坐标F1=sin(X-Y);F2=cos(X+Y);F0=zeros(size(X));surf(X,Y,F1),xlabel('x'),ylabel('y'),view([-31,62]),hold on,surf(X,Y,F2),surf(X,Y,F0),shading interp,hold off图 5.6.3-0 两函数的三维相交图(1)在某区域观察两函数0等位线的交点情况clear;x=-2:0.5:2;y=x;[X,Y]=meshgrid(x,y); %产生x-y平面上网点坐标F1=sin(X-Y);F2=cos(X+Y);v=[-0.2, 0, 0.2]; %指定三个等位值,是为了更可靠地判断0等位线的存在。
contour(X,Y,F1,v) %画F1的三条等位线。
hold on,contour(X,Y,F2,v),hold off %画F2的三条等位线。
图 5.6.3-1 两个二元函数0等位线的交点图(2)从图形获取零点的初始近似值在图5.6.3-1中,用ginput获取两个函数0等位线(即三线组中间那条线)交点的坐标。
[x0,y0]=ginput(2); %在图上取两个点的坐标disp([x0,y0])-0.7926 -0.78430.7926 0.7843(3)利用fsolve求精确解。
以求(0.7926,7843)附近的解为例。
本例直接用字符串表达被解函数。
注意:在此,自变量必须写成x(1), x(2)。
假如写成xy(1), xy(2),指令运行将出错。
fun='[sin(x(1)-x(2)),cos(x(1)+x(2))]';%<12>xy=fsolve(fun,[x0(2),y0(2)])%<13>xy =0.7854 0.7854(4)检验fxy1=sin(xy(1)-xy(2));fxy2=cos(xy(1)+xy(2));disp([fxy1,fxy2])1.0e-006 *-0.0994 0.2019〖说明〗指令<12><13>可用以下任何一组指令取代。
(A)内联函数形式指令fun=inline('[sin(x(1)-x(2)), cos(x(1)+x(2))]', 'x'); %项'x'必须有。
xy=fsolve(fun,[x0(2), y0(2)]);(B)M函数文件形式及指令先用如下fun.m表示被解函数(并在搜索路径上)[fun.m]function ff=fun(x)ff(1)=sin(x(1)-x(2));ff(2)=cos(x(1)+x(2));然后运行指令xy=fsolve('fun',[x0(2),y0(2)]) 。
第四步检验中的结果表明:所找零点处的函数值小于«Skip Record If...»,是一个十分接近零的小数。
该精度由options.TolFun控制。
options.TolFun的缺省值是1.0000e-006。
它可以用下列指令看到options=optimset('fsolve');options.TolFunans =1.0000e-006线性方程求解a= [ 7 2 1 -29 15 3 -2-2 -2 11 51 32 13]b=[4 7 -1 0]'x=a\bx =0.49790.14450.0629-0.0813单个微分方程常微分方程有时很难求解,MATLAB提供了功能强大的工具,可以帮助求解微分方程。