matlab习题文档格式.docx

上传人:b****3 文档编号:17931352 上传时间:2022-12-12 格式:DOCX 页数:17 大小:79.38KB
下载 相关 举报
matlab习题文档格式.docx_第1页
第1页 / 共17页
matlab习题文档格式.docx_第2页
第2页 / 共17页
matlab习题文档格式.docx_第3页
第3页 / 共17页
matlab习题文档格式.docx_第4页
第4页 / 共17页
matlab习题文档格式.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

matlab习题文档格式.docx

《matlab习题文档格式.docx》由会员分享,可在线阅读,更多相关《matlab习题文档格式.docx(17页珍藏版)》请在冰豆网上搜索。

matlab习题文档格式.docx

function[x,y]=line_solution(A,b)

[m,n]=size(A);

y=[];

ifnorm(b)>

0

ifrank(A)==rank([A,b])

ifrank(A)==n

disp('

原方程组有唯一解x'

);

x=A\b;

else

原方程组有无穷个解,特解为x,齐次方程组的基础解系为y'

y=null(A,'

r'

end

else

方程组无解'

x=[];

else

原方程组有零解x'

x=zeros(n,1);

ifrank(A)<

n

方程组有无穷个解,基础解系为y'

end

程序:

A=[21-11;

42-21;

21-1-1];

b=[121]'

[x,y]=line_solution(A,b)

A=[2731;

3522;

9417];

b=[642]'

rank(A)

ans=

2

rank([A,b])

x=pinv(A)*b

x=

-0.0571

0.7429

0.3429

-0.1143

3、求下列方程的根。

附近的根。

f=inline('

x-sin(x)./x'

x=fzero(f,0.5)

0.8767

(sin(x).^2).*exp(-0.1.*x)-0.5.*abs(x)'

x=fzero(f,1.5)

x=1.6738

(3)在给定的初值

下,求方程组的数值解

functionF=myfun(X)

x=X

(1);

y=X

(2);

z=X(3);

F

(1)=sin(x)+y^2+log(z)-7;

F

(2)=3*x+2^y-z^3+1;

F(3)=x+y+z-5;

X=fsolve('

myfun'

[1,1,1],optimset('

Display'

'

off'

))

X=

0.59912.39592.0050

4、求非线性方程组在(0.5,0.5)附近的数值解。

functionf=fxy(u)

x=u

(1)

y=u

(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('

fxy'

[0.5,0.5],optimset('

0.63540.3734

5、求函数在指定区间上的极值。

在(0,1)内的最小值。

functionf=f(x)

f=(x^3+cos(x)+x*log(x))/exp(x);

[x,fval]=fminbnd(f,0,1)

在[0,0]附近的最小值点和最小值。

functionfxy(u)

x=u

(1);

y=u

(2);

f=2.*x.^3+4.*x.*(y.^3)-10.*x.*y+y.^2;

[U,fmin]=fminsearch('

[0,0])

6、求常微分方程数值解

functiony=funt(x,y)

y=2*x/y+2*x;

x0=0;

xf=20;

y1=0;

[x,y]=ode45('

funt'

[x0,xf],y1);

functionydot=sys1(x,y)

ydot=[(-4*x*y

(1)-2*y

(2))/(x^2);

y

(1)];

[t,x]=ode45('

sys'

[x0,xf],[-3,2]);

7、已知线性方程组

,其中

运用稀疏存储矩阵的方式求解。

A=[-120;

-12-1;

02-1];

d=[-1;

0;

1];

B=spdiags(A,d,5,5);

b=[10000]'

x=(inv(B)*b)'

0.83330.66670.50000.33330.1667

1、从键盘输入一个4位整数,按照如下规则加密后输出。

加密规则:

每位数字都加上7,然后用和除以10的余数取代该数字;

再把第一位与第三位交换,第二位与第四位交换。

a=input('

请输入一个4位数:

'

while(a<

1000|a>

9999)

a=input('

输入错误,请重新输入一个4位数:

b=fix(a/1000);

c=rem(fix(a/100),10);

d=rem(fix(a/10),10);

e=rem(a,10);

b=b+7;

c=c+7;

d=d+7;

e=e+7;

b=rem(b,10);

c=rem(c,10);

d=rem(c,10);

e=rem(e,10);

g=b;

b=d;

d=g;

g=c;

c=e;

e=g;

a=1000*b+100*c+10*d+e;

disp(['

加密后:

num2str(a)])

1234

9189

2、分别用if和switch语句实现以下计算,其中a、b、c的值从键盘输入。

If语句法:

请输入a:

'

b=input('

请输入b:

c=input('

请输入c:

forx=0.5:

1:

5.5

ifx>

=0.5&

x<

1.5

y=a.*(x.^2)+b.*x+c

elseifx>

=1.5&

3.5

y=a*(sin(b)^c)+x

=3.5&

y=log(abs(b+c./x))

switch语句法:

switchfloor(x/0.5)

case{1,2}

y=a.*(x.^2)+b.*x+c;

case{3,4,5,6}

y=a*(sin(b)^c)+x;

case{7,8,9,10}

y=log(abs(b+c./x));

disp(y)

3、产生20个两位随机整数,输出其中小于平均值的偶数。

x=fix(rand(1,20)*89)+10;

x1=mean(x);

n=find(rem(x,2)==0&

x1);

disp(['

小于平均数的偶数是:

num2str(x(n))]);

306450644646

4、输入20个数,求其中最大数和最小数。

要求分别用循环结构和调用Matlab的max函数、min函数来实现。

(1)循环结构法:

A=input('

请输入20个数的一个行向量:

a=A

(1);

b=A

(1);

form=A

ifa>

=m

a=m;

elseifb<

b=m;

最小数是:

最大数是:

num2str(b)])

[12232312157834452672323234782567]

1

78

(2)调用法:

maxval=max(A)

minval=min(A)

maxval=

78

minval=

1

5、已知:

分别用循环结构和调用Matlab的sum函数求

的值。

s=0;

fora=0:

63

c=2^a;

s=s+c;

2的0次方到63次方的和是:

num2str(s)])

184********709552000

k=0:

n=2.^k

s=sum(n)

6、当n分别取100、1000、10000时,求下列各式的值。

(1)

(2)

(3)

要求分别用循环结构和向量运算(使用sum或prod函数)来实现。

sum1=0;

forn=1:

100

x=(-1)^(n+1)*(1/n);

sum1=sum1+x;

当n取100时:

sum='

num2str(sum1)])

sum2=0;

1000

sum2=sum2+x;

当n取1000时:

num2str(sum2)])

sum3=0;

10000

x=(-1)^(n+1)*(1/n);

sum3=sum3+x;

当n取10000时:

sum='

num2str(sum3)])

sum=0.68817

sum=0.69265

sum=0.6931

n1=0;

2:

x=(-1)^n1*(1/n);

n1=n1+1;

n2=0;

x=(-1)^n2*(1/n);

n2=n2+1;

sum3=0;

n3=0;

x=(-1)^n3*(1/n);

n3=n3+1;

sum=0.7804

sum=0.7849

sum=0.78535

x=1/(4^n);

sum3=sum3+x;

sum=0.33333

sum=0.33333

7、编写一个函数文件,求小于任意自然数n的Fibnacci数列各项。

Fibnacci数列定义如下:

functionf=fibnacci(n)

ifn==1|n==2

f=1;

else

f=fibnacci(n-1)+fibnacci(n-2);

命令文件:

shulie=[];

fork=1:

shulie=[shuliefibnacci(k)];

shulie

8、编写一个函数文件,用于求两个矩阵的乘积和点乘,然后在命令文件中调用该函数。

function[f1,f2]=juzhenji(x1,x2)

f1=x1*x2;

f2=x1.*x2;

clearall

请输入一个矩阵:

请再输入一个矩阵:

(注意:

两矩阵要可以相乘)'

[f1,f2]=juzhenji(a,b);

disp(f1)

disp(f2)

9、先用函数的递归调用定义一个函数文件求

,然后调用该函数求

functionsum=qiuhe(n,m)

ifn<

=1

sum=0;

sum=n^m+qiuhe(n-1,m);

y=qiuhe(100,1)+qiuhe(50,2)+qiuhe(10,-1);

10、写出下列程序的输出结果。

(1)s=0;

a=[12,13,14;

15,16,17;

18,19,20;

21,22,23];

fork=a

forj=1:

4

ifrem(k(j),2)~=0

s=s+k(j);

s

s=108

(2)命令文件exe.m:

globalx

x=1:

5;

y=2:

6;

exsub(y);

x

y

函数文件sub.m:

functionfun=sub(z)

z=3*x;

x=x+z;

41220

y=

246

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1