【MATLAB基础教程(第五版)】4.4习题

【1】用本章介绍的几种插值方法进行插值,间隔0.05

1.用interp1函数(四种方法)(函数调用格式:yi = interp1(x,y,xi,method))
x = [1,1.1,1.2,1.3,1.4];
y = [1.00000,1.23368,1.55271,1.99372,2.61170];
length_of_x = length(x);
scalar_x = [x(1):0.05:x(length_of_x)];
length_of_sx = length(scalar_x);
for i = 1:length_of_sx
    y_nearest(i) = interp1(x,y,scalar_x(i),'nearest');
    y_linear(i) = interp1(x,y,scalar_x(i),'linear');
    y_spline(i) = interp1(x,y,scalar_x(i),'spline');
    y_cubic(i) = interp1(x,y,scalar_x(i),'pchip');
end
subplot(2,2,1),plot(x,y,'*'),hold on,plot(scalar_x,y_linear),title('method=nearest');
subplot(2,2,2),plot(x,y,'*'),hold on,plot(scalar_x,y_spline),title('method=linear');
subplot(2,2,3),plot(x,y,'*'),hold on,plot(scalar_x,y_nearest),title('method=spline');
subplot(2,2,4),plot(x,y,'*'),hold on,plot(scalar_x,y_cubic),title('method=pchip');

运行结果如图:

2.插入方法2:interpft函数(函数调用格式:y = interpft(x,n))
%用interpft函数对正弦函数进行插值
x = 0:pi/5:2*pi;
y = sin(x);
plot(x,y);
hold on
y1 = interpft(y,20);
x1 = linspace(0,2*pi,20);
plot(x1,y1,'.');
3.插入方法3:外插运算(通过interp1函数添加'extrap'参数)
x = 0:0.5:10;
y = cos(x);
x1 = linspace(0,2*pi,20);
y1 = cos(x1);
y2 = interp1(x,y,x1,'nearest')
y2 = interp1(x,y,x1,'nearest','extrap')
y3 = interp1(x,y,x1,'linear','extrap');
y4 = interp1(x,y,x1,'spline','extrap');
y5 = pchip(x,y,x1);
plot(x,y,x1,y1,'o',x1,y2,'-',x1,y3,'-.',x1,y4,'--',x1,y5,'*')

【2】求函数y = e^x-x^5,初始点为x=8的解,并绘制图形。

y = @(x)exp(x)-x.^5;
x = fzero(y,8)
fplot(y,[x-1,x+1]);
hold on
plot(x,y(x),'r*');

运行结果:

x =

   12.7132

【3】求下列函数的极值:

(1)z = x^2-(y-1)^2

(2)z = (x-y+1)^2

(1)解答
z= @(x)x(1)^2 - (x(2)-1)^2;
[x,fvalue,flag,output] = fminsearch(z,[0.0])
(2)解答
z = @(x)(x(1)-x(2)+1)^2;
[x,fvalue,flag,output] = fminsearch(z,[0,0])

【4】计算下列积分

解答:

(1)

f = @(x)x+x.^3 + x.^5;
q = quad(f,-1,1)

结果:

q =

   2.2204e-16

(2)

f = @(x,y)sin(y).*(x+y)./(x.^2+4);
q = dblquad(f,1,10,1,10)

结果:

q =

    5.5254

记得回顾复习!!!

  • 12
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Sheljoee.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值