1、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=Ab; else 原方程组有无穷个解,特解为x,齐次方程组的基础解系为y y=null(A,r end else方程组无解 x=;else 原方程组有零解x x=zeros(n,1); if rank(A)n方程组有无穷个解,基础解系为yend程序: A=2 1 -1 1;4 2 -2 1;2 1 -1 -1; b=1 2 1 x,y=line_solution(A,b) A
2、=2 7 3 1;3 5 2 2;9 4 1 7; b=6 4 2 rank(A)ans = 2 rank(A,b) x=pinv(A)*bx = -0.0571 0.7429 0.3429 -0.11433、求下列方程的根。在附近的根。 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)在给定的初值下,求方程组的数值解function F=myfun(X)x=X(1);y=X(2);z=X(3);F(1)=sin(x)+y2+log
3、(z)-7;F(2)=3*x+2y-z3+1;F(3)=x+y+z-5; X=fsolve(myfun,1,1,1,optimset(Display,off)X = 0.5991 2.3959 2.00504、求非线性方程组在(0.5,0.5)附近的数值解。function f=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.6354 0.37345、求函数在指定区间上的极值。在(0,1)内的最小值。function f=f(x
4、)f=(x3+cos(x)+x*log(x)/exp(x); x,fval=fminbnd(f,0,1)在0,0附近的最小值点和最小值。function fxy(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、求常微分方程数值解function y=funt(x,y)y=2*x/y+2*x; x0=0; xf=20; y1=0; x,y=ode45(funt,x0,xf,y1);function ydot=sys1(x,y)ydot=(-4*x*y(1)-2*y(2)/(x2);y(1);
5、t,x=ode45(sys,x0,xf,-3,2);7、已知线性方程组,其中,运用稀疏存储矩阵的方式求解。 A=-1 2 0;-1 2 -1;0 2 -1; d=-1;0;1; B=spdiags(A,d,5,5); b=1 0 0 0 0 x=(inv(B)*b)0.8333 0.6667 0.5000 0.3333 0.16671、从键盘输入一个4位整数,按照如下规则加密后输出。加密规则:每位数字都加上7,然后用和除以10的余数取代该数字;再把第一位与第三位交换,第二位与第四位交换。 a=input(请输入一个4位数:while (a9999)a=input(输入错误,请重新输入一个4位数
6、: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)123491892、分别用if 和switch语句实现以下计算,其中a、b、c的值从键盘输入。If语句法:请输入a: b=input(请输入b:c=input(请输入c:for x=0.5
7、:1:5.5if x=0.5 & x=1.5 &3.5 y=a*(sin(b)c)+x=3.5 & y=log(abs(b+c./x)switch语句法:switch floor(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(小于平均数的偶数是:,n
8、um2str(x(n);30 64 50 64 46 464、输入20个数,求其中最大数和最小数。要求分别用循环结构和调用Matlab的max函数、min函数来实现。(1)循环结构法: A=input(请输入20个数的一个行向量:a=A(1);b=A(1);for m=A if a=m a=m; elseif b b=m;最小数是:最大数是:,num2str(b)12 23 23 12 1 5 78 34 45 2 67 23 23 2 34 78 2 5 6 7178(2)调用法:maxval=max(A)minval=min(A)maxval = 78minval = 15、已知: 分别用
9、循环结构和调用Matlab的sum函数求的值。 s=0;for a=0:63 c=2a; s=s+c;2的0次方到63次方的和是:,num2str(s)184*709552000 k=0:n=2.ks=sum(n)6、当n分别取100、1000、10000时,求下列各式的值。(1) (2) (3) 要求分别用循环结构和向量运算(使用sum或prod函数)来实现。 sum1=0;for n=1:100 x=(-1)(n+1)*(1/n); sum1=sum1+x;当n取100时: sum=,num2str(sum1)sum2=0;1000 sum2=sum2+x;当n取1000时:,num2st
10、r(sum2) sum3=0;10000x=(-1)(n+1)*(1/n);sum3=sum3+x;当n取10000时:sum=,num2str(sum3) sum=0.68817 sum=0.69265sum=0.6931n1=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.7849sum=0.78535 x=1/(4n); sum3=sum3+x; sum=0.33333sum=0.333337、编写一个函数文件,求
11、小于任意自然数n的Fibnacci数列各项。Fibnacci数列定义如下:function f=fibnacci(n)if n=1 | n=2 f=1;else f=fibnacci(n-1)+fibnacci(n-2);命令文件:shulie=;for k=1: shulie=shulie fibnacci(k);shulie8、编写一个函数文件,用于求两个矩阵的乘积和点乘,然后在命令文件中调用该函数。function f1,f2=juzhenji(x1,x2)f1=x1*x2;f2=x1.*x2;clear all请输入一个矩阵:请再输入一个矩阵:(注意:两矩阵要可以相乘)f1,f2=ju
12、zhenji(a,b);disp(f1)disp(f2)9、先用函数的递归调用定义一个函数文件求,然后调用该函数求。function sum=qiuhe(n,m)if n=1sum=0;sum=nm+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;for k=a for j=1:4 if rem(k(j),2)=0 s=s+k(j);ss=108(2)命令文件exe.m:global xx=1:5;y=2:6;exsub(y);xy函数文件sub.m:function fun=sub(z)z=3*x;x=x+z; 4 12 20y = 2 4 6
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1