作业帮 > 综合 > 作业

一个大的矩阵中有很都的零点,对其进行插值的同时如何保持矩阵大小不变,用matlab如何实现

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/09 17:56:19
一个大的矩阵中有很都的零点,对其进行插值的同时如何保持矩阵大小不变,用matlab如何实现
如一个矩阵
0 0 0 3 0 0 0 0 5 0 0 0
1 0 0 0 6 0 0 7 0 0 0 0
0 4 0 0 0 0 8 0 0 0 0 0
.
这样一个n*n的矩阵
如何对其插值,得到一个平滑的曲面,同时矩阵的大小不变
构造一个内联函数对象
被解函数 以 为自变量,和 为数.假如在 fzero 中直接采用字符串表示被解函数,容易出错.因此先构造内联函数如下:
y=inline('sin(t)^2*exp(-a*t)-b*abs(t)','t','a','b'); %
(2)作图法观察函数零点分布
a=0.1;b=0.5;t=-10:0.01:10; % 对自变量采样,采样步不宜太大.
y_char=vectorize(y); % 为避免循环,把 y 改写成适合数组运算形式.
Y=feval(y_char,t,a,b); % 在采样点上计算函数值.
clf,plot(t,Y,'r');hold on,plot(t,zeros(size(t)),'k'); % 画坐标横轴
xlabel('t');ylabel('y(t)'),hold off
图 5.6.2 .2-1 函数零点分布观察图
(3)利用 zoom 和 ginput 指令获得零点的初始近似值(在 MATLAB 指令窗中进行)
zoom on % 在 MATLAB 指令窗中运行,获局部放大图
[tt,yy]=ginput(5);zoom off % 在 MATLAB 指令窗中运行,用鼠标获 5 个零点猜测值.
图 5.6.2 .2-2 局部放大和利用鼠标取值图
tt % 显示所得零点初始猜测值(该指令可在 Notebook 中运行).
tt =
-2.0032
-0.5415
-0.0072
0.5876
1.6561
(4)求靠近 tt(4) 的精确零点
[t4,y4,exitflag]=fzero(y,tt(4),[],a,b) %
Zero found in the interval:[0.57094,0.60418].
t4 =
0 .5993
y4 =
0
exitflag =
1
(5)求在 tt(3)附近的精确零点
从理论分析可知,函数的一个零点.但即便是以十分靠近该零点的 为搜索的初始值,也找不到 ,而却找到了另一个零点.原因是曲线没有穿越横轴.请看下面指令的运行结果.
[t3,y3,exitflag]=fzero(y,tt(3),[],a,b)
Zero found in the interval:[0.58266,-0.59706].
t3 =
-0.5198
y3 =
0
exitflag =
1
(6)观察 fzero 所采用的 options 缺省设置,并更改控制计算精度的相对误差设置.
op=optimset('fzero') % 提取 fzero 所采用的 options 缺省设置
op =
ActiveConstrTol:[]
.
Display:'final'
.
TolX:2.2204e-016
TypicalX:[]
op=optimset('tolx',0.01); % 把终止计算的相对误差阈值设置得较大
op.TolX % 观察新设置值.注意 TolX 字母的大小写.
ans =
0.0100
(7)利用新设置的选项参数重新求 tt(4)附近的零点,以便比较.
[t4n,y4n,exitflag]=fzero(y,tt(4),op,a,b) % 采用新的 op 设置参数.
Zero found in the interval:[0.57094,0.60418].
t4n =
0 .6042
y4n =
0 .0017
exitflag =
1
图片见网页