MATLAB实验参考答案 下载本文

MATLAB程序设计与应用(第二版)

实验参考答案

%实验一 MATLAB运算基%第四题 %(1):

A=100:999; B=rem(A,21);

%第一题 %(1)

z1=2*sin(85*pi/180)/(1+exp(2)) %(2)

x=[2,1+2i;-0.45,5];

z2=0.5*log(x+sqrt(1+x.^2)) %(3)

a=-3.0:0.1:3.0;

z3=(exp(0.3*a)-exp(-0.3*a))/2.*sin(a+0.3)+log((0.3+a)/2) %(4)

t=0:0.5:2.5;

z4=t.^2.*(t>=0&t<1)+(t.^2-1).*(t>=1&t<2)+(t.^2-2*t+1).*(t>=2&t<3)

%第二题

A=[12 34 -4;34 7 87;3 65 7]; B=[1 3 -1;2 0 3;3 -2 7]; A+6*B

A-B+eye(size(A)) A*B A.*B A^3 A.^3 A/B B\\A [A,B]

[A([1,3],:);B^2]

%第三题

A=[1 2 3 4 5;6 7 8 9 10;11 12 13 14 15;16 17 18 19 20;21 22 23 24 25]

B=[3 0 16;17 -6 9;0 23 -4;9 7 0;4 13 11] C=A*B

F=size(C)

D=C(F(1)-2:F(1),F(2)-1:F(2)) whos

C=length(find(B==0)) %(2):

A='lsdhKSDLKklsdkl'; k=find(A>='A'&A<='Z'); A(k)=[]

%实验二 MATLAB矩阵分析与处理

%第一题

E=eye(3); R=rand(3,2); O=zeros(2,3); S=diag([2,3]); A=[E,R;O,S]; A^2

B=[E,(R+R*S);O,S^2]

%第二题

H=hilb(5) P=pascal(5) Hh=det(H) Hp=det(P) Th=cond(H) Tp=cond(P)

%第三题:

A=fix(10*rand(5)) H=det(A) Trace=trace(A) Rank=rank(A) Norm=norm(A)

%第四题:

A=[-29,6,18;20,5,12;-8,8,5] [V,D]=eig(A) %数学意义略

%第五题方法一:

%(1):

A=[1/2,1/3,1/4;1/3,1/4,1/5;1/4,1/5,1/6];

b=[0.95,0.67,0.52]'; x=inv(A)*b

1

%(2):

B=[0.95,0.67,0.53]'; x=inv(A)*B %(3): cond(A)

0];

y=[]; %建立存放所有y值的矩阵 for x0=x

if x0<0&x0~=-3

y=[y,x0*x0+x0-6]; elseif

x0>=0&x0<5&x0~=2&x0~=3

y=[y,x0*x0-5*x0+6]; else

y=[y,x0*x0-x0-1]; end end

x %输出所有x

y %输出所有y

%第一题程序二

x=[-5,-3,1,2,2.5,3,5]; y=[];

for a=1:7

if x(a)<0&x(a)~=-3

y=[y,(x(a))^2+x(a)-6]; elseif

x(a)>=0&x(a)<5&x(a)~=2&x(a)~=3 y=[y,(x(a))^2-5*x(a)+6]; else

y=[y,x(a)*x(a)-x(a)-1]; end end

%第二题程序一:

score=input('请输入一个分数:'); if score<0&score>100 disp('输入的分数不合理'); else

if score>=90&score<=100 disp('等级为:A');

elseif score>=80&score<=89 disp('等级为:B');

elseif score>=70&score<=79 disp('等级为:C');

elseif score>=60&score<=69 disp('等级为:D'); else

%第五题方法二:

A=hilb(4) A(:,1)=[] A(4,:)=[]

B=[0.95,0.67,0.52]'; X=inv(A)*B

B1=[0.95,0.67,0.53]'; X1=inv(A)*B1 N=cond(B) N1=cond(B1)

Na=cond(A) %矩阵A为病态矩阵

%第六题

A=[1,4,9;16,25,36;49,64,81] B=sqrtm(A)

C=sqrt(A) %sqrtm函数是以矩阵为单位进行计算,sqrt函数是以矩阵中的元素进行计算

%实验三 选择程序结构设计

%第一题程序一

x=[-5.0,-3.0,1.0,2.0,2.5,3.0,5.0]; y=[]; for x0=x

if x0<0&x0~=-3

y=[y,x0*x0+x0-6];

elseif x0>=0&x0<5&x0~=2&x0~=3 y=[y,x0*x0-5*x0+6]; else

y=[y,x0*x0-x0-1]; end end x

y

x=[-5.0,-3.0,1.0,2.0,2.5,3.0,5.

2

disp('等级为:E'); end end

x=input('请输入一个百分制成绩:'); if x>100|x<0

disp('您输入的成绩不是百分制成绩,s=input('请输入一个成绩(0分到100分之间):'); %s用于存放成绩 while

1 %判断输入成绩的合理性 if s<0|s>100

disp('输入的成绩需在0到100之间,请重新输入:')

s=input('请输入一个成绩(0请重新输入。'); else

if x<=100&x>=90 disp('A');

elseif x<=89&x>=80 disp('B');

elseif x<=79&x>=70 disp('C');

elseif x<=69&x>60 disp('D'); else

disp('E'); end end

%第二题程序二:

score=input('请输入一个分数:'); if score<0&score>100 disp('输入的分数不合理'); else

switch fix(score/10) case {9,10} disp('A'); case {8}

disp('B'); case {7}

disp('C'); case {6}

disp('D'); otherwise

disp('E'); end end

分到100分之间):'); else

break; end end switch

fix(s/10) %对成绩做出等级判断 case {9,10} disp('A') case 8

disp('B') case 7

disp('C') case 6

disp('D') otherwise disp('E') end

%第三题

a=input('工号:'); b=input('工时:'); if b>120

c=120*84+(b-120)*84*(1+0.15); elseif b<60 c=84*b-700; else

c=84*b; end

disp(['工号为',num2str(a),'的员工的工资为',num2str(c)]);

3

n=input('请输入员工工号:'); h=input('该员工工作时数是:'); if h>120

x=(h-120)*84*(1+0.15)+120*84; elseif h<60 x=h*84-700; else

x=h*84; end

disp([num2str(n),'号员工','的应发工资为',num2str(x)]);

%第四题(还可以用switch语句实现) a=input('a='); b=input('b=');

c=input('输入一个四则运算符号:','s'); if c=='+' d=a+b;

elseif c=='-' d=a-b; elseif c=='*' d=a*b;

elseif c=='/' d=a/b; end

disp(['结果为:',num2str(d)]);

a=fix(10+(99-10)*rand(1,2)) %产生两个随机整数 x=a(1); y=a(2);

t=input('请输入运算符号:','s'); if t=='+' z=x+y;

elseif t=='-' z=x-y;

elseif t=='*' z=x*y;

elseif t=='/' z=x/y; end

disp([num2str(x),t,num2str(y),'=',num2str(z)]) %输出运算结果 %第五题

a=rand(5,6);

n=input('输出矩阵的第几行:'); if n>5

disp(['超出了矩阵的行数,输出矩阵的最后一行为:',num2str(a(5,:))]); else

disp(['矩阵的第',num2str(n),'行为:',num2str(a(n,:))]); end

a=rand(5,6) %产生5x6的随机矩阵

n=input('请输入您要输出矩阵的第几行:'); if n>5

disp('超出了矩阵的行数,矩阵的最后一行为:') a(5,:) else

disp(['矩阵的第',num2str(n),'行为:']) a(n,:) end

%实验四 循环结构程序设计

%第一题程序一 s=0;

n=input('n=?'); for i=1:n

s=s+1/i/i; end

PI=sqrt(6*s) pi

%第一题程序二

n=input('n=?'); a=1:n;

4

b=1./a.^2;

PI=sqrt(6*sum(b)) pi

%第二题 y=0; n=1;

while(y<3)

y=y+1/(2*n-1); n=n+1; end

y=y-1/(2*(n-1)-1) n=n-2

%第三题

a=input('a=?'); b=input('b=?'); Xn=1;

Xn1=a/(b+Xn); n=0;

while abs(Xn1-Xn)>1e-5 Xn=Xn1;

Xn1=a/(b+Xn); n=n+1; if n==500 break; end end n Xn1

r1=(-b+sqrt(b*b+4*a))/2 r2=(-b-sqrt(b*b+4*a))/2 %第四题

for i=1:100 if i==1 f(i)=1; elseif i==2 f(i)=0; elseif i==3 f(i)=1; else

f(i)=f(i-1)-2*f(i-2)+f(i-3);

end end max(f) min(f) sum(f)

length(find(f>0)) length(find(f==0)) length(find(f<0)) %第五题: s=0;n=0; for i=2:49

b=i*(i+1)-1; m=fix(sqrt(b)); for j=2:m

if rem(b,j)==0 break end end

if j==m n=n+1; s=s+b; end end n s

%实验五 函数文件

%第一题

function y=mat1(x) %建立函数文件mat1.m

y=[exp(x),log(x),sin(x),cos(x)];

%在命令窗口调用上述函数文件: y=mat1(1+i)

%第二题程序一 function

[a,b,N,M]=shiyanwu2(m,n,t)

A=[m*cos(t*pi/180),-m,-sin(t*pi/180),0;m*sin(t*pi/180),0,cos(t*pi/180),0;0,n,-sin(t*pi/180),0;0,0,-cos(t*pi/180),1]; B=[0,9.8*m,0,9.8*n]; C=inv(A)*B'; a=C(1);

5

b=C(2); N=C(3); M=C(4);

%在命令窗口调用该函数文件: m1=input('m1='); m2=input('m2=');

theta=input('theta=');

[a1,a2,N1,N2]=shiyanwu2(m1,m2,t%第五题 %(1)

function f1=mat5(n) f1=n+10*log(n*n+5);

%在命令窗口中调用该函数文件:

y=mat5(40)/(mat5(30)+mat5(20)) %(2)方法一

function f2=mat6(n) heta)

%第二题程序二

function X=mat2(m1,m2,t) g=9.8;

A=[m1*cos(t*pi/180),-m1,-sin(t*pi/180),0;m1*sin(t*pi/180),0,cos(t*pi/180),0;0,m2,-sin(t*pi/180),0;0,0,-cos(t*pi/180),1]; B=[0;m1*g;0;m2*g]; X=inv(A)*B;

%在命令窗口调用该函数文件: X=mat2(1,1,60)

%第三题

function flag=mat3(x) flag=1;

for i=2:sqrt(x) if rem(x,i)==0 flag=0; break; end end

%在命令窗口调用该函数文件: for i=10:99

j=10*rem(i,10)+fix(i/10); if mat3(i)&mat3(j) disp(i) end end

%第四题

function y=fx(x)

y=1./((x-2).^2+0.1)+1./((x-3).^4+0.01);

%在命令窗口调用该函数文件: y=fx(2)

a=[1,2;3,4]; y=fx(a)

f2=0;

for i=1:n

f2=f2+i*(i+1); end

%在命令窗口中调用该函数文件如:

y=mat6(40)/(mat6(30)+mat6(20)) %(2)方法二

function f2=mat7(n) i=1:n;

m=i.*(i+1); f2=sum(m); end

%在命令窗口中调用该函数文件如:

y=mat7(40)/(mat7(30)+mat7(20))

%实验六 高层绘图操作

%第一题:

x=linspace(0,2*pi,101);

y=(0.5+3*sin(x)./(1+x.^2)).*cos(x);

plot(x,y)

%第二题: %(1)

x=linspace(-2*pi,2*pi,100); y1=x.^2;

y2=cos(2*x); y3=y1.*y2;

plot(x,y1,'b-',x,y2,'r:',x,y3,'y--');

text(4,16,'\\leftarrow y1=x^2'); text(6*pi/4,-1,'\\downarrow y2=cos(2*x)');

text(-1.5*pi,-2.25*pi*pi,'\%uparrow y3=y1*y2');

%(2)

x=linspace(-2*pi,2*pi,100);

6

y1=x.^2;

y2=cos(2*x); y3=y1.*y2;

subplot(1,3,1);%分区 plot(x,y1);

title('y1=x^2');%设置标题 subplot(1,3,2); plot(x,y2);

title('y2=cos(2*x)'); subplot(1,3,3); plot(x,y3);

title('y3=x^2*cos(2*x)'); %(3)

x=linspace(-2*pi,2*pi,20); y1=x.^2;

subplot(2,2,1);%分区 bar(x,y1);

title('y1=x^2的条形图');%设置标题 subplot(2,2,2); stairs(x,y1);

title('y1=x^2的阶梯图'); subplot(2,2,3); stem(x,y1);

title('y1=x^2的杆图'); subplot(2,2,4);

fill(x,y1,'r');%如果少了'r'则会出错

title('y1=x^2的填充图'); %其他的函数照样做。 %第三题

x=-5:0.01:5;

y=[];%起始设y为空向量 for x0=x

if x0<=0 %不能写成x0=<0

y=[y,(x0+sqrt(pi))/exp(2)]; %将x对应的函数值放到y中 else

y=[y,0.5*log(x0+sqrt(1+x0^2))]; end end

plot(x,y) %第四题:

a=input('a=');

b=input('b='); n=input('n=');

t=-2*pi:0.01:2*pi; r=a*sin(b+n*t); polar(t,r)

%第五题

x=linspace(-5,5,21); y=linspace(0,10,31);

[x,y]=meshgrid(x,y);%在[-5,5]*[0,10]的范围内生成网格坐标 z=cos(x).*cos(y).*exp(-sqrt(x.^2+y.^2)/4);

subplot(2,1,1); surf(x,y,z); subplot(2,1,2);

contour3(x,y,z,50);%其中50为高度的等级数,越大越密 %第六题

ezsurf('cos(s)*cos(t)','cos(s)*sin(t)','sin(s)',[0,0.5*pi,0,1.5*pi]); %利用ezsurf隐函数

shading interp %进行插值着色处理

%实验七 低层绘图操作

%第一题

h=figure('MenuBar','figure','color','r','WindowButtonDownFcn','disp(''Left Button Pressed'')') %第二题

x=-2:0.01:2;

y=x.^2.*exp(2*x); h=line(x,y);

set(h,'color','r','linestyle',':','linewidth',2)

text(1,exp(2),'y=x^2*exp(2*x)') %第三题

t=0:0.00001:0.001; [t,x]=meshgrid(t);

v=10*exp(-0.01*x).*sin(2000*pi*t-0.2*x+pi);

axes('view',[-37.5,30]); h=surface(t,x,v);

title('v=10*exp(-0.01*x).*sin(2000*pi*t-0.2*x+pi)');

7

xlabel(Ct'),ylabel('x'),zlabel('v')

%第四题

x=0:0.01:2*pi; y1=sin(x); y2=cos(x); y3=tan(x); y4=cot(x);

subplot(2,2,1); plot(x,y1);

subplot(2,2,2); plot(x,y2);

subplot(2,2,3); plot(x,y3);

subplot(2,2,4); plot(x,y4);

%第五题

cylinder(5);

light('Position',[0,1,1]); material shiny

%实验八 数据处理与多项式运算

%第一题 %(1)

A=rand(1,30000); b=mean(A) std(A,0,2) %(2) max(A) min(A) %(3) n=0;

for i=1:30000 if A(i)>0.5 n=n+1; end end

p=n/30000

%第二题 %(1)

A=45+51*rand(100,5); [Y,U]=max(A)

[a,b]=min(A) %(2)

m=mean(A) s=std(A) %(3)

sum(A,2)

[Y,U]=max(ans) [a,b]=min(ans) %(4)

[zcj,xsxh]=sort(ans) %第三题 h=6:2:18;

x=6.5:2:17.5;

t1=[18,20,22,25,30,28,24]; t2=[15,19,24,28,34,32,30]; T1=spline(h,t1,x) T2=spline(h,t2,x) %第四题

x=1:0.1:101; y1=log10(x);

p=polyfit(x,y1,5) y2=polyval(p,x);

plot(x,y1,':',x,y2,'-') %第五题 %(1)

p1=[1,2,4,0,5]; p2=[1,2]; p3=[1,2,3];

p=p1+[0,conv(p2,p3)] %为使两向量大小相同,所以补0 %(2)

A=roots(p) %(3)

A=[-1,1.2,-1.4;0.75,2,3.5;0,5,2.5];

polyval(p,A) %(4)

polyvalm(p,A)

实验十

程序:

x=sym('6'); y=sym('5');

z=(x+1)/(sqrt(3+x)-sqrt(y))

8

1、 分解因式 (1) 程序: syms x y; A=x^4-y^4; factor(A) (2) 程序:

factor(sym('5135')) 3、化简表达式 (1) 程序:

syms beta1 beta2

y=sin(beta1)*cos(beta2)-cos(beta1)*sin(beta2) simple(y) (2) 程序:

syms x

y=(4*x^2+8*x+3)/(2*x+1) simple(y)

5、用符号方法求下列极限或导数 (1) 程序:

syms x

f=(x*(exp(sin(x))+1)-2*(exp(tan(x))-1))/(sin(x)) limit(f) (2) 程序:

syms x

y=(sqrt(pi)-sqrt(acos(x)))/(sqrt(x+1));

limit(f,x,-1,'right') (3) 程序:

syms x

y=(1-cos(2*x))/x; y1=diff(y) y2=diff(y,x,2)

6、用符号方法求下列积分 (1) 程序: syms x

f=1/(1+x^4+x^8) int(f) (2) 程序:

syms x

f=1/(((asin(x))^2)*sqrt(1-x^2)) int(f) (3) 程序:

syms x

f=(x^2+1)/(x^4+1) int(f,x,0,inf) (4) 程序:

syms x

f=exp(x)*(1+exp(x))^2 y=int(f,x,0,log(2)) double(y)

实验十一 级数与方程符号求解 1. 级数符号求和。 (1) 计算 。

(2) 求级数 的和函数,并求 之和。 解:

M文件: clear all;clc;

n=sym('n');x=sym('x');

S1=symsum(1/(2*n-1),n,1,10) S2=symsum(n^2*x^(n-1),n,1,inf)

S3=symsum(n^2/5^n,n,1,inf) %vpa(S3)可以转化成小数 运行结果: S1 =

31037876/14549535 S2 =

piecewise([abs(x) < 1, -(x^2 + x)/(x*(x - 1)^3)]) S3 = 15/32

2. 将lnx在x=1处按5次多项式展开为泰勒级数。 解:

M文件: clear all;clc; x=sym('x');

9

f=log(x); clear all;clc; taylor(f,x,6,1) dsolve('D2y+4*Dy+29*y','y(0)=0','Dy(0)=15','

x') 运行结果:

ans = x - (x - 1)^2/2 + (x - 1)^3/3 - (x - 1)^4/4 + (x - 运行结果: 1)^5/5 - 1 ans =

(3*sin(5*x))/exp(2*x) 3. 求下列方程的符号解。

解: 5. 求微分方程组的通解。 M文件: 解: clear all;clc; M文件: x1=solve('log(x+1)-5/(1+sin(x))=2') clear all;clc; x2=solve('x^2+9*sqrt(x+1)-1') [x y z]=dsolve('Dx=2*x-3*y+3*z',... x3=solve('3*x*exp(x)+5*sin(x)-78.5') 'Dy=4*x-5*y+3*z','Dz=4*x-4*y+2*z','t') [x4 运行结果: y4]=solve('sqrt(x^2+y^2)-100','3*x+5*y-8') x =

C1/exp(t) + C2*exp(2*t) 运行结果:

x1 = y = 521.67926389905839979437366649258 C1/exp(t) + C2*exp(2*t) + C3/exp(2*t) x2 = z =

C2*exp(2*t) + C3/exp(2*t) -1 实验九 数值微积分与方程数值求解 (3^(1/2)*i*(4/(9*(6465^(1/2)/2 + 1. 求函数在指定点的数值导数。 2171/54)^(1/3)) - (1/2*6465^(1/2) + 解:M文件: 2171/54)^(1/3)))/2 - (6465^(1/2)/2 + clc;clear; 2171/54)^(1/3)/2 - 2/(9*(6465^(1/2)/2 + x=1; 2171/54)^(1/3)) + 1/3 i=1; 1/3 - (6465^(1/2)/2 + 2171/54)^(1/3)/2 - f=inline('det([x x^2 x^3;1 2*x 3*x^2;0 2 (3^(1/2)*i*(4/(9*(6465^(1/2)/2 + 6*x])'); 2171/54)^(1/3)) - (1/2*6465^(1/2) + while x<=3.01 2171/54)^(1/3)))/2 - 2/(9*(6465^(1/2)/2 + g(i)=f(x); 2171/54)^(1/3)) i=i+1; x3 = x=x+0.01; %以0.01的步2.3599419584772910151699327715486 长增加,可再缩小步长提高精度 x4 = end 12/17 - (10*21246^(1/2))/17 g; (10*21246^(1/2))/17 + 12/17 t=1:0.01:3.01; y4 = dx=diff(g)/0.01; %差分法近似求导 (6*21246^(1/2))/17 + 20/17 f1=dx(1) %x=1的数值倒数 20/17 - (6*21246^(1/2))/17 f2=dx(101) %x=2的数值倒数 4. 求微分方程初值问题的符号解,并与数值f3=dx(length(g)-1) %x=3的数值倒数 解进行比较。 运行结果: f1 =

6.0602 解:

f2 = M文件:

10

24.1202 f3 =

54.1802

2. 用数值方法求定积分。 (1) 的近似值。 (2)

解:M文件: clc;clear;

f=inline('sqrt(cos(t.^2)+4*sin(2*t).^2+1)'); I1=quad(f,0,2*pi)

g=inline('log(1+x)./(1+x.^2)'); I2=quad(g,0,2*pi) 运行结果:

3. 分别用3种不同的数值方法解线性方程组。

解:M文件: clc;clear;

A=[6 5 -2 5;9 -1 4 -1;3 4 2 -2;3 -9 0 2]; b=[-4 13 1 11]'; x=A\\b

y=inv(A)*b [L,U]=lu(A); z=U\\(L\\b) 运行结果:

4. 求非齐次线性方程组的通解。 解:M文件

function [x,y]=line_solution(A,b) [m,n]=size(A); y=[ ];

if norm(b)>0 %非齐次方程组 if rank(A)==rank([A,b]) if rank(A)==n

disp('有唯一解x'); x=A\\b; else

disp('有无穷个解,特解x,基础解系y');

x=A\\b;

y=null(A,'r'); end else

disp('无解'); x=[ ];

11

end

else %齐次方程组 disp('有零解x'); x=zeros(n,1); if rank(A)

disp('有无穷个解,基础解系y'); y=null(A,'r'); end end

clc;clear; format rat

A=[2 7 3 1;3 5 2 2;9 4 1 7]; b=[6 4 2]';

[x,y]=line_solution(A,b) 运行结果:

有无穷个解,特解x,基础解系y

Warning: Rank deficient, rank = 2, tol = 8.6112e-015.

> In line_solution at 11 x =

-2/11 10/11 0 0 y =

1/11 -9/11 -5/11 1/11 1 0 0 1 所以原方程组的通解是: ,其中 为任意常数。 5. 求代数方程的数值解。

(1) 3x+sinx-ex=0在x0=1.5附近的根。 (2) 在给定的初值x0=1,y0=1,z0=1下,求方程组的数值解。 解:M文件: function g=f(x)

g=3*x+sin(x)-exp(x); clc;clear; fzero('f',1.5) 结果是: ans =

1289/682

(2). M文件: function F=fun(X) x=X(1); y=X(2); z=X(3);

F(1)=sin(x)+y^2+log(z)-7; F(2)=3*x+2-z^3+1; F(3)=x+y+z-5;

X=fsolve('myfun',[1,1,1]',optimset('Display','off'))

运行结果:

6. 求函数在指定区间的极值。 (1) 在(0,1)内的最小值。

(2) 在[0,0]附近的最小值点和最小值。 解:M文件: function f=g(u) x=u(1); y=u(2);

f=2*x.^3+4*x.*y^3-10*x.*y+y.^2; clc;clear; format long

f=inline('(x^3+cos(x)+x*log(x))/exp(x)'); [x,fmin1]=fminbnd(f,0,1)

[U,fmin2]=fminsearch('g',[0,0]) 运行结果

7. 求微分方程的数值解。 解:M文件:

function xdot= sys( x,y) xdot=[y(2);(5*y(2)-y(1))/x]; clc;clear;

x0=1.0e-9;xf=20;

[x,y]=ode45('sys',[x0,xf],[0 0]); [x,y]

运行结果:

8. 求微分方程组的数值解,并绘制解的曲线。

解: 令y1=x,y2=y,y3=z; 这样方程变为: ,自变量是t M文件:

function xdot=sys(x,y)

xdot=[y(2)*y(3);-y(1)*y(3);-0.51*y(1)*y(2)]; clc;clear; t0=0;tf=8;

12

[x,y]=ode23('sys',[t0,tf],[0,1,1]) plot(x,y)