“ 有关数值微分于积分的命令。”
01
—
diff、polyder;
quad、integral、quadgk、integral2、quad2d;
线性方程组直接求解法‘
LU、QR分解;
利用LU、QR分解求解线性方程组;
Jacobi、Gauss-Serdel迭代法求解线性方程组;(这个不作要求,能看懂最好)
单变量非线性方程求解;fzero、fsolve、optimset
07
—
MATLAB数值微分与积分习题部分解答:
一、选择题
1.diff([10,15])的值是( )。A
A.5 B.10 C.15 D.25
2.数值积分方法是基于( )的事实。D
A.求原函数很困难 B.原函数无法用初等函数表示
C.无法知道被积函数的精确表达式 D.A,B,C三个选项
3.求数值积分时,被积函数的定义可以采取( )。D
A.函数文件 B.内联函数
C.匿名函数 D.A,B,C三个选项
4.以下选项不能用来求数值积分的函数是( )。B
A.quadgk B.quad2 C.integral D.integral2
5.以下选项不是离散傅里叶变换的函数是( )。C
A.fft B.fft2 C.fft1 D.fftn
二、填空题
1.在MATLAB中,没有直接提供求 的函数,只有计算 的函数diff。
数值导数,向前差分
2.基于变步长辛普森法,MATLAB给出了 函数和 函数来求定积分。quad,quadl
3.MATLAB提供了基于全局自适应积分算法的 函数来求定积分,该函数的积分限 (可以或不可以)为无穷大。
integral,可以
4.MATLAB提供的 、 、 函数用于求二重积分的数值解, 、 函数用于求三重积分的数值解。
integral2,quad2d,dblquad,integral3,triplequad
5.MATLAB提供了离散傅里叶变换函数fft,对应的逆变换函数是 。ifft
三、应用题
1.求函数在指定点的数值导数。
(1):(2):直接用导数函数求:f=inline('x./sqrt(x.^2+1)');f(1)用拟合函数求:f=inline('sqrt(x.^2+1)');x=0:0.001:5;p=polyfit(x,f(x),5);dp=polyder(p);dpx=polyval(dp,1)
2.求定积分。
(1):f=inline('(sin(x)).^5.*sin(5*x)');i=quad(f,0,pi)%用quadl函数好像一样(2):f=inline('(1+x.^2)./(1+x.^4)');%一定要用点乘i=quad(f,-1,1)%用quadl函数好像一样
5.已知h(t)=e-t,t≥0,取N=64,对t从0~5s采样,用fft函数作快速傅里叶变换,并绘制相应的振幅-频率图。
N=64;T=5;t=linspace(0,T,N);h=exp(-t);dt=t(2)-t(1);f=1/dt;X=fft(h);F=X(1:N/2+1);f=f*(0:N/2)/N;plot(f,abs(F),'-*')
08
—
方程数值求解部分解答:
一、选择题
1.下列方法中与线性方程组求解无关的是( )。C
A.左除 B.矩阵求逆 C.矩阵转置 D.矩阵分解
2.对于系数矩阵A的阶数很大,且零元素较多的大型稀疏矩阵线性方程组,非常适合采用( )求解。B
A.直接法 B.迭代法 C.矩阵求逆 D.左除
3.已知函数文件fx.m:
function f=fx(x)
f=2*x.^2+5*x-1;
则求f(x)=2x2+5x-1=0在x0=-2附近根的命令是( )。D
A.z=fzero(fx,0.5) B.z=fzero(@fx,0.5)
C.z=fzero(fx,-2); D.z=fzero(@fx,-2);
4.已知:
fx=@(x) 2*x.^2+5*x-1;
则求f(x)=2x2+5x-1=0在x0=-2附近根的命令是( )。C
A.z=fzero(fx,0.5) B.z=fzero(@fx,0.5)
C.z=fzero(fx,-2); D.z=fzero(@fx,-2);
5.下列选项中不能用于求常微分方程数值解的函数是( )。A
A.ode10 B.ode23 C.ode45 D.ode113
二、填空题
1.线性方程组的求解方法可以分为两类,一类是 ,另一类是 。前者是在没有舍入误差的情况下,通过有限步的初等运算来求得方程组的解;后者是先给定一个解的 ,然后按照一定的算法不断用变量的旧值递推出新的值。直接法,迭代法,初始值
2.MATLAB用 函数来求单变量非线性方程的根。对于非线性方程组,则用 函数求其数值解。fzero,fsolve
3.用数值方法求解常微分方程的初值问题,一般都是用 系列函数,包括ode23、ode45等函数,各有不同的适用场合。ode
4.ode23、ode45等函数是针对一阶常微分方程组的,对于高阶常微分方程,需先将它转化为一阶常微分方程组,即 。状态方程
三、应用题
1.分别用矩阵除法以及矩阵分解求线性方程组的解。
(1):
矩阵除法:A=[2,3,5;3,7,4;1,-7,1];B=[10,3,5];%B是行向量x=A\B'%将B变成列向量矩阵分解:A=[2,3,5;3,7,4;1,-7,1];B=[10,3,5];%B是行向量[L,U]=lu(A);x=U\(L\B')
(2):
和上面的程序一样。
2.求下列方程的根。
(1)在x0=0.5附近的根。
(2)在x0=1.5附近的根。
(1):先建立函数文件:function f=xt6_11_1(x)f=x-sin(x)/x;再输入程序:fzero('xt6_11_1',0.5)(2):先建立函数文件:function f=xt6_11_2(x)f=((sin(x))^2)*exp(-0.1*x)-0.5*abs(x);再输入程序:fzero('xt6_11_2',1.5)
3.求非线性方程组在(0.5,0.5)附近的数值解。
先建立函数文件:function F=xt6_12(X)x=X(1);y=X(2);F(1)=x-0.6*sin(x)-0.3*cos(y);F(2)=y-0.6*cos(x)+0.3*sin(y);再输入程序:x=fsolve('xt6_12',[0.5,0.5],optimset('Display','off'))
5.本题不做要求仅供参考:
洛伦兹(Lorenz)模型的状态方程表示为:取σ=10,ρ=28,β=8/3,
且初值为x1(0)=x2(0)=0,x3(0)=ε,ε为一个小常数,假设ε=10-10,
求解该微分方程,并绘制出时间响应曲线与相平面曲线。
(1)建立Lorenz模型的函数文件lorenz.m。functionxdot=lorenz(t,x)xdot=[-8/3,0,x(2);0,-10,10;-x(2),28,-1]*x;(2)解微分方程组。>>x0=[0,0,eps]';>>[t,x]=ode23(@lorenz,[0,100],x0);(3)绘制系统相平面图,如图所示。>>plot3(x(:,1),x(:,2),x(:,3));>>axis([10,40,-20,20,-20,20]);