Chapter 4. MATLAB语法基础

来源:互联网 发布:java中空格怎么表示 编辑:程序博客网 时间:2024/06/06 04:16

第四章课后习题解答

转载请注明链接:http://blog.csdn.net/i_love_home/article/details/17340341

1. 从键盘输入一个4位证书,按如下规则加密后,输出。加密规则:每位数字都加上7,然后用和除以10的余数取代该数字;再把第一位和第三位交换,第二位和第四位交换。

x = 0;x = input('Enter a number of four:');a = zeros(1, 4);a(1) = floor(x / 1000)a(2) = floor(rem(x/100, 10));a(3) = floor(rem(x, 100) / 10);a(4) = rem(x, 10);a = rem(a + 7*ones(size(a)), 10);A = [a(3), a(4), a(1), a(2)];disp(['A = ' num2str(A)]);

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


x = 0.5;a = 0;b = 0;c = 0;x = input('Enter an number[0.5, 5.5):');a = input('a = ');b = input('b = ');c = input('c = ');y = 0;  % ifif x>=0.5 & x<1.5    y = a*x^2 + b*x + c;elseif x>=1.5 & x<3.5    y = a*(sin(b)^c) + x;elseif x>=3.5 & x<5.5    y = log(abs(b+c/x));enddisp(['y = ' num2str(y)]);  % switch switch floor(x*2)    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));enddisp(['y = ' num2str(y)]);

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

A = 10 + floor(90*rand(1, 20));ave = sum(A) / size(A, 2);p = find(A<ave & rem(A, 2)==0);disp(['solution: ' num2str(A(p))]);

4. 输入20个数,求其中最大数和最小数。要求分别用循环结构和调用MATLAB的max函数,min函数来实现。

x = rand(1, 20);x = input('Enter 20 numbers of matrix:');  % min(), max()disp(['min = ' num2str(min(x))]);disp(['max = ' num2str(max(x))]);  % forminc = inf;maxc = -inf;for i = 1 : size(x, 2)    if x(i) < minc        minc = x(i);    end    if x(i) > maxc        maxc = x(i);    endenddisp(['min = ' num2str(minc)]);disp(['max = ' num2str(maxc)]);

5. 已知:


n = 0 : 63;s = 0;  % sums = sum(2.^n);disp(['1 + 2 + 2^2 + … + 2^63 = ' num2str(s)]);  % fors = 0; temp = 1;for i = 1 : size(n, 2)    s = s + temp;    temp = temp * 2;enddisp(['1 + 2 + 2^2 + … + 2^63 = ' num2str(s)]);

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


n = 1000;n = input('n = ');% sum + pro% (1)i = 1 : n;s = sum((-1).^(i+1).*(1./i));disp(['s = ' num2str(s)]);% (2)i = 2*(1:n)-1;s = sum((-1).^(0:n-1).*(1./i));disp(['s = ' num2str(s)]);% (3)s = sum(1./(4.^(1:n)));disp(['s = ' num2str(s)]);% (4)i = 1 : n;s = prod(((2*i).*(2*i))./((2*i-1).*(2*i+1)));disp(['s = ' num2str(s)]);% for% (1)s = 0;for i = 1 : n    s = s + (-1)^(i-1)*(1/i);enddisp(['s = ' num2str(s)]);% (2)s = 0;for i = 1 : n    s = s + (-1)^(i-1)*(1/(2*i-1));enddisp(['s = ' num2str(s)]);% (3)s = 0;for i = 1 : n;    s = s + 1/(4^i);enddisp(['s = ' num2str(s)]);% (4)s = 1;for i = 1 : n    s = s * (4*i*i)/((2*i-1)*(2*i+1));enddisp(['s = ' num2str(s)]);

7. 编写一个函数文件,求小于任意自然数n的斐波那契(Fibnacci)数列各项。斐波那契数列定义如下:


n = 1;n = input('n = ');disp(['f(n) = ' num2str(Fibnacci_2_7( n ))]);
function F = Fibnacci_2_7( n )if n == 1    F = 1;elseif n == 2    F = 1;else    F = Fibnacci_2_7( n-1 ) + Fibnacci_2_7( n-2 );end

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

A = eye(4);B = magic(4);[C, P] = matmulCP_2_8(A, B);
// matmulCP_2_8.mfunction [C, P] = matmulCP_2_8( A, B );C = A * B;P = A .* B;

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


disp(['s = ' num2str(sum_2_9(100, 1) + sum_2_9(50, 2) + sum_2_9(10, -1))]);
// sum_2_9.mfunction fun = sum_2_9( n, m )i = 1 : n;fun = sum( i.^m );

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


// First:s = 108// Secondx = 3   9  15y = 2  4  6// codes = 0;a = [12:14;     15:17;     18:20;     21:23];for k = a    for j = 1 : 4        if rem(k(j), 2) ~= 0            s = s + k(j);        end    endenddisp(['s = ' num2str(s)]);global gx;gx = 1 : 2 : 5;y = 2 : 2 : 6;sub_2_10(y);disp(['x = ' num2str(gx)]);disp(['y = ' num2str(y)]);
// sub_2_9.mfunction fun = sub_2_10( z )global gx;z = 2 * gx;gx = gx + z;

0 0
原创粉丝点击