Matlab数值微积分与方程求解

本文详述了Matlab在数值计算中的应用,涵盖数值微分与积分(如quad、quadl等函数)、线性方程组的直接法(高斯消去、LU分解等)和迭代法(雅克比、高斯-赛德尔迭代)以及非线性方程求解(fzero、fsolve函数)。同时,介绍了函数极值计算和常微分方程数值解的策略。
摘要由CSDN通过智能技术生成

课程参考:https://www.icourse163.org/learn/CSU-1002475002?tid=1206743216#/learn/content?type=detail&id=1211570840&cid=1214317955

一、数值微分与数值积分

数值微积分不同于高等数学中的微积分,高等数学是对函数采用解析方法求解,数值微积分适合求解没有或很难求出微分或积分表达式的问题的计算。

1.1 数值微分

在这里插入图片描述
在这里插入图片描述
当h非常小时,得到:
在这里插入图片描述
函数f(x)在 x 0 x_0 x0点的微分,接近于函数在该点的差分,而f(x)在 x 0 x_0 x0的导数,接近于函数在该点的差商。
在这里插入图片描述
在这里插入图片描述

%% 6.1 数值微分与数值积分
%1f(x)=sinx,在[02π]范围内随机采样,计算f'(x)的近似值,并与理论值f'(x)=cosx 进行比较。
x=[0,sort(2*pi*rand(1,5000)),2*pi];
y=sin(x);
f1=diff(y)./diff(x);
f2=cos(x(1:end-1));
plot(x(1:end-1),f1,x(1:end-1),f2);
d=norm(f1-f2)  %范数

1.2 数值积分

在这里插入图片描述
当被积函数的原函数无法用初等函数表示时,或被积函数是用表格形式给出的,这时就需要用数值解法来求定积分的近似值,求定积分的数值方法多种多样,如梯形法、辛普森法、高斯求积公式等。

在这里插入图片描述
在每一个小的区间上,定积分的值可以近似求得,从而避免了牛顿莱布尼兹公式需要寻求原函数的困难。

quad函数
quadl函数

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

%2  分别用quad函数和quadl函数求定积分的近似值,并在相同的积分精度下,比较被积函数的调用次数。
format long
f=@(x) 4./(1+x.^2);
[I,n]=quad(f,0,1,1e-8)
 
[I,n]=quadl(f,0,1,1e-8)
 
(atan(1)-atan(0))*4
 
format short
integral函数

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

%3 求定积分。 
%被积函数文件fe.m:
function f=fe(x)
f=1./(x.*sqrt(1-log(x).^2));

I=integral(@fe,1,exp(1))
quadgk函数

求振荡函数的定积分
在这里插入图片描述
在这里插入图片描述

%4  求定积分。
%被积函数文件fsx.m:
function f=fsx(x)
f=sin(1./x)./x.^2;

I=quadgk(@fsx,2/pi,+Inf)

**当函数关系表达式不知道,只有实验测定的一组样本点和样本值,这样就无法使用quad等函数来计算定积分。**针对这种情况,有以下方法进行求解:

trapz函数

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

%5  设x=1:6,y=[6,8,11,7,5,2],用trapz函数计算定积分。
x=1:6;
y=[6,8,11,7,5,2];
plot(x,y,'-ko');
grid on
axis([1,6,0,11]);
I1=trapz(x,y)

I2=sum(diff(x).*(y(1:end-1)+y(2:end))/2)   %梯形面积公式
多重定积分的数值求解

在这里插入图片描述

%6  分别求二重积分和三重积分。 
f1=@(x,y) exp(-x.^2/2).*sin(x.^2+y);
I1=quad2d(f1,-2,2,-1,1)

f2=@(x,y,z) 4*x.*z.*exp(-z.*z.*y-x.*x);
I2=integral3(f2,0,pi,0,pi,0,1)

二、线性方程组求解

2.1 直接法

就是在不考虑舍入误差的情况下,通过有限步的矩阵初等运算,来求得方程组精确解的方法。

2.1.1 高斯(Gauss)消去法
2.1.2 列主元消去法

是目前计算机上求解线性方程组的标准算法,其特点就是通过消元,将一般线性方程组的求解问题转化为三角方程组的求解问题。
在这里插入图片描述
在这里插入图片描述

A=[2,1,-5,1;1,-5,0,7;0,2,1,-1;1,6,-1,-4];
b=[13,-9,6,0]';  %b是列向量
x=A\b

可以用矩阵求逆函数来求解线性方程组,即x等于A的逆矩阵乘以b,但在实际计算中,不建议使用求逆矩阵的方法,因为求逆方法需要更多的计算量,它先求逆矩阵,在求矩阵乘法,而左除运算就只有一次除法,况且,求逆算法给出的可能还是一个不精确的答案。

2.1.3 矩阵的三角分解法

矩阵分解是设计算法的重要技巧,是指将一个给定的矩阵分解成若干个特殊类型矩阵的乘积,从而将一个一般的矩阵计算问题,转化为几个易求的特殊矩阵的计算问题。这种方法的优点是运算速度快,可以节省存储空间。

LU分解

将一个n阶矩阵表示为一个下三角矩阵和一个上三角矩阵的乘积,线性代数中已证明,只要方阵是非奇异的,LU分解总是可以进行的。
在这里插入图片描述
对于三角矩阵很容易求解,可以先求解向量y使Ly等于b,再求解Ux等于y

在这里插入图片描述
使用第一种方式,矩阵L往往不是下三角阵,但可以通过行交换,成为一个下三角阵。
在这里插入图片描述

%2  用LU分解求解例1中的线性方程组。
A=[2,1,-5,1;1,-5,0,7;0,2,1,-1;1,6,-1,-4];
b=[13,-9,6,0]';
[L,U]=lu(A);
x=U\(L\b)
%第二种格式
[L,U,P] = lu(A);
x = U\(L\P*b)
QR分解
Cholesky分解(乔累斯分解)

2.2 迭代法

就是先给定一个解的初始值,然后按照一定的迭代算法进行逐步逼近,求出更精确的近似解的方法。
不断用变量的原值推出它的新值的过程,是用计算机解决问题的一种基本方法。
在这里插入图片描述

2.2.1 雅克比(Jacobi)迭代法

在这里插入图片描述
对于线性方程组Ax=b,如果A为非奇异方阵且主对角线元素不等于0,则可将A分解为D-L-U,其中D为对角阵,其元素为A的对角元素,L与U为A的下三角阵取反和上三角阵取反。
在这里插入图片描述

%雅可比迭代法的函数文件jacobi.m:
function [y,n]=jacobi(A,b,x0,ep)
D=diag(diag(A));
L=-tril(A,-1);
U=-triu(A,1
### 回答1: Matlab数值微积分与方程数值数值微积分数值计算方法的一种,是对函数在某一区间内的近似积分。方程数值是利用数值计算方法来决方程,包括线性方程组,非线性方程组和微分方程等。在Matlab中,可以使用一些特定的函数和工具箱来进行数值微积分和方程数值。 ### 回答2: MATLAB是一个广泛使用的数学软件,其内置了许多数值微积分和方程数值的工具。数值微积分是数学中的一个分支,主要研究如何利用计算机对连续函数进行计算。方程数值是数学中的另一个分支,主要研究如何使用计算机求方程。 对于数值微积分而言,MATLAB提供了许多工具,如积分函数、微分函数、定积分函数等。利用MATLAB的这些工具,可以很方便地计算一些复杂的函数的积分和导数,为科研工作者和工程师提供了非常实用的工具。 对于方程数值而言,MATLAB同样提供了许多工具,如求根函数、ODE求器等。利用MATLAB的这些工具,可以求一些困难的方程组,同时也可以对一些常微分方程进行数值。这些工具非常实用,为科学研究和工程应用提供了非常快捷的法。 除了上述的工具,MATLAB还提供了一些非常实用的工具箱,如优化工具箱、信号处理工具箱等。这些工具箱可以帮助用户进行更高级的数值计算和分析,同时也可以应用到各种不同的领域,如机器学习、图像处理等。 综上所述,MATLAB是一款非常强大的数学软件,其数值微积分和方程数值工具在科研和工程实践中有着广泛的应用。同时,MATLAB还提供了许多工具箱和应用,在许多领域都有着广泛的应用。 ### 回答3: Matlab是一款强大的数学软件工具,其中包括了数值微积分和方程数值的功能。数值微积分是指对函数进行数值积分、微分及求导的过程,而方程数值则是指求一般的数学方程,包括线性方程组、非线性方程、微分方程等。在Matlab中,数值微积分与方程数值可以方便地通过内置函数或辅助工具箱实现。 首先,数值微积分是我们计算与建模中常常需要用到的过程。Matlab中可以使用诸如quad、dblquad、triplequad、quad2d、quad3d等函数进行积分计算。这些函数使用的是数值积分法,将其所需积分区间分成若干子区间,并对每个子区间进行数值积分,从而最后得到整个区间的积分估算值。此外,Matlab中还有比如diff、gradient等函数可以用于求函数的微分和梯度,方便地为我们提供了数学分析的工具。 对于方程数值Matlab提供了非常丰富的内置函数和工具箱,包括ODE工具箱、PDE工具箱等。ODE工具箱可用于求各种常微分方程的初值问题和边值问题,PDE工具箱可用于求偏微分方程的初值问题和边值问题。同时,Matlab中还有其他非线性方程、线性方程组等常见问题的求函数,如roots、fsolve、linsolve等等。这些函数除了可以求方程本身之外,还可以提供方程求解的收敛性、的稳定性、数值误差等信息,有时还能给出方程的。 总的来说,数值微积分与方程数值Matlab中非常重要的部分,也是工程师和科学家常用的分析方法。Matlab提供了丰富的函数和工具箱,方便我们进行求,而且也带有较高的准确性和精度。因此,学习Matlab中的数值微积分和方程数值不仅是科学和工程计算的必要部分,也是日常分析中必不可少的工具。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值