matlab程序设计与应用下(编辑修改稿)内容摘要:
%计算矩阵 X 的平均值 Pstd=std(X)。 %计算矩阵 X 的标准差 Pmed=median (X)。 %计算矩阵 X 的中位值 X,Pmax,Pmin,Pmean,Pstd,Pmed。 运行结果 : X = Pmax = Pmin = Pmean = Pstd = 622 曲线拟合 语法 : A. P=polyfit(X,Y,N) MATLAB 程序设计与实例应用 92 B. Yval=polyval(P,X) 说明 : 1. polyfit(X,Y,N)根据输入数据 X 和 Y 生成一个 N 阶的拟合多项式。 2. polyval(P,X)根据数据 X,用拟合多项式 P 生成拟合好的数据。 3. 这里 X 和 Y 构成了一系列数据点的 坐标。 例 610 下列数据为一段时间的日气温平均实际数据,求该数据的拟合方程。 设这组气温数据为: [18 19 17 18 20 22 22 23 21 21 20 22 23 23 22] 程序 设计: clear d=1:15。 %时间 t=[18 19 17 18 20 22 22 23 21 21 20 22 23 23 22]。 %和时间相对应的日平均气温 p=polyfit(d,t,3)。 %生成拟合多项式(向量形式),阶次为 3 px=poly2str(p, 39。 x39。 )。 %生成拟合多项式(字符形式) pv=polyval(p,d)。 %生成拟合值 p,px plot(d,t, 39。 :*r39。 ,d,pv,39。 k39。 , 39。 LineWidth39。 , 2) title(39。 \fontsize{18}\bf数据拟合 图像 39。 , 39。 Color39。 ,39。 r39。 ) xlabel (39。 \fontsize{14}\rm时间 d轴 39。 , 39。 Color39。 ,39。 k39。 ) ylabel (39。 \fontsize{14}\rm气温 t轴 39。 , 39。 Color39。 ,39。 k39。 ) gtext(39。 \fontsize{16}\fontname{宋体 }实际曲线 39。 , 39。 Color39。 ,39。 r39。 ) gtext(39。 \fontsize{16}\fontname{宋体 }拟合曲线 39。 , 39。 Color39。 ,39。 k39。 ) %end 运行结果: p = px = x^3 x^2 + x + 图形如 61所示: 程序说明: 1. d 表示时间第一天、第二天…, t 表示每天的气温。 图 61 拟合曲线图 第六章 MATLAB 的数值计算 93 2. 本例我们选取的拟合多项式的阶次是 3。 3. p 为向量形式的拟合多项式, px为字符形式的拟合多项式。 4. plot 为绘图函数,它的两个参数分别为图像的横坐标和纵坐标。 4 个参数则分别为两条曲线的横坐标和纵坐标。 5. 图中的箭头可在绘图窗口中打开 insert 菜单,选择 Arrow 然后用鼠标从起始位置拖动到终止位置即可。 例 611 根据上例中的数据建立的天气温度,拟合方程求 5 天 后的天气气温是多少。 程序 设计及运行结果: clear x=20。 T=*x^3 *x^2 + *x + T = 程序 设计及运行结果: 1. 依照上例 710 天的时间序列 d, 5 天 后应该是 20 天,所以令 x=20。 2. T 即为上例中我们求得的拟合公式,结果求得 5 天后的日平均气温为。 63 数值积分和数值微分 631 微分和积分的数学表达式 对函数 f(x)在区间 [x1,x2]上求积分在数学上常常表示为 21xxF f x dx 对函数 F(x)求导数运算在数学上常常表示为: dF xf dx 632 函数数值积分 命令函数 : 1. 连续被积函数 quadl(39。 f39。 ,a,b,t) 自适应递推牛顿 — 科西 (Newton— Cotes)法求积分 2. 离散被积函数 trapz(X,Y) 梯形法求数值积分 说明: 1. 1) 参数 39。 f39。 是被积函数表达式字符串或者函数文件名。 2) 参数 a、 b 定义函数积分的上下限。 MATLAB 程序设计与实例应用 94 3) 参数 t 定义积分的精度 (默认值 )。 2. trapz 积分中给出 Y 相对于 X 的积分值。 当 Y 是 (m*n)矩阵时,积分对 Y 的列向量分别进行,得到一个 (1*n)矩阵是 Y 的列向量对应于 X 的积分结果。 例 612 设 y x sinx ,用 牛顿 — 科西法求0s sinxdx。 这个积分可以用手工算出来是 2,我们看 MATLAB 的计算结果。 程序 设计及运行结果: clear s=quadl(39。 sin(x)39。 ,0,pi) s = 例 613 设 23y x sin x x x 2 c o s 3 x ,求 20s y x dx。 程序 设计及运行结果: clear y=quadl(39。 (sin(x).^2+x.^3)./(x2.*cos(3.*x))39。 ,0,2) %end ans = 例 614 用离散数据表示 sinx ,积分区间为 0, 分别用离散积 分方法对其进行积分。 程序 设计及运行结果 (如图 63): clear X=0::pi。 %离散化积分变量 Y=sin(X)。 %生成被积函数的离散序列 Z=trapz(X,Y)。 %梯形法求积分 Z %end Z = 例 615 设 23y x sin x x x 2 c o s 3 x ,求 20s y x dx。 第六章 MATLAB 的数值计算 95 程序 设计及运行结果: clear X=0::2。 %离散化积分变量 Y=(sin(X).^2+X.^3)./(X2.*cos(3.*X))。 Z=trapz(X,Y)。 Z %end Z = 程序 说明: 输入公式时一定要注意算符都是对数组进行运算的,所以是 “ .*”“ .^”“ ./“。 633 数值微分 命令函数: D=diff(Y) 说明: Y 为一组离散序列, D 为与 Y 同维的离散矩阵,则微分运算是对矩阵 的每个列向量微分。 例 616 设函数 y x sinx 和 22z 2 x 3x x 1 进行微分运算 ,并画出计算结果的图像。 程序 设计: clear dx=。 x=3:dx:3。 %生成一个从 3 到 3 间隔为 的序列 x1=3:dx:3dx。 y=sin(x)。 z=2.*x.^3+3.*x.^2+x1。 Y=diff(y)。 %对 y 进行微分运算 DY= diff(y)/dx。 %对 y 进行求导运算 Z=diff(z)。 %对 z 进行微分运算 DZ=diff(z)/dx。 %对 z 进行求导运算 subplot(2,2,1)。 %产生两行一列的绘图区间的第一个绘图区间 plot(Y,39。 k39。 , 39。 LineWidth39。 ,1) title(39。 \fontsize{12}\fontname{Time New Roman} \Deltay(x) 39。 , 39。 Color39。 ,39。 k39。 ) grid on subplot(2,2,2)。 %产生两行一列的绘图区间的第 二 个绘图区间 plot(Z ,39。 k39。 , 39。 LineWidth39。 ,1) title(39。 \fontsize{12}\fontname{Time New Roman} \Delta z (x)39。 , 39。 Color39。 ,39。 k39。 ) grid on MATLAB 程序设计与实例应用 96 subplot(2,2,3)。 %产生两行一列的绘图区间的第 三 个绘图区间 plot(x1,DY,39。 k39。 , 39。 LineWidth39。 , 1) title(39。 \fontsize{12}\fontname{Time New Roman}y39。 39。 (x)=cosx39。 , 39。 Color39。 ,39。 k39。 ) xlabel(39。 \fontsize{12}\fontname{Time New Roman}x39。 , 39。 Color39。 ,39。 k39。 ) ylabel(39。 \fontsize{12}\fontname{Time New Roman}dy/dx39。 , 39。 Color39。 ,39。 k39。 ) axis ([3 3 1 1]) grid on subplot(2,2,4)。 %产生两行一列的绘图区间的第 四 个绘图区间 plot(x1,DZ ,39。 k39。 , 39。 LineWidth39。 , 1) title(39。 \fontsize{12}\fontname{Time New Roman} z39。 39。 (x)=6x^2+6x+139。 , 39。 Color39。 ,39。 k39。 ) xlabel(39。 \fontsize{12}\fontname{Time New Roman}x39。 , 39。 Color39。 ,39。 k39。 ) ylabel(39。 \fontsize{12}\fontname{Time New Roman}dz/dx39。 , 39。 Color39。 ,39。 k39。 ) axis ([3 3 20 80]) grid on %end 运行结果(如图 62): 程序 说明: 1. 输入公式时一定要注意算符都是对数组进行运算的,所以是 “ .*”“ .^” “ ./”。 2. Y=diff(y)和 Z=diff(z)和依此画出的图像,纵坐标是 两函数的微分,横坐标是数据序列的值并不是实际图像的横坐标。 由于纵坐标是 n n 1 nf f x f x ,所以纵坐标在数值上是导数的 n 1 nxx 倍。 3. 导数图的纵坐标是 n n 1 n n 1 nf f x f x x x , n 的取值范围应该是 1,2, N 1。 因此 x 取值是 1x 到 N 1 Nx x dx ,而微分相应取值是 1f 到 N1f ,所以两序列的数目相差 1,所以画图时不能用 plot(x,diff(y) /dx)而是 plot(x1,diff(y) /dx)。 图 62 函数的微分与导数图 第六章 MATLAB 的数值计算 97 63 一般非线性方程组的数值解 命令函数: x=fsolve(39。 fun39。 ,x0,options) 说明: 1. 39。 fun39。 是我们要求解的方程组,可以直接输入,不过由于方程组比较复杂,一般都先生成一个 m文件,然后再进行调用。 2. x0 是给出的 这个方程组的初值解,我们可以随意地给出。 3. options 是命令函数 fsolve 的参数设置项。 因为 fsolve 求解的过程本身就是一个优化的过程,而 options 则是设置优化过程的参数的。 这里对于一般的非线性方程组求解我们常设置为optiomset(39。 Display39。 , 39。 off39。 ), 意思为不显示优化过程。 例 : 617 求方程组 x y z 0x y 3z 03x y z 4 。matlab程序设计与应用下(编辑修改稿)
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。
用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。