• 实验四 循环结构程序设计(matlab)


    实验四 循环结构程序设计

    目录

    实验四 循环结构程序设计 2
    1.1实验目的 3
    1.2实验内容 3
    1.3流程图 4
    1.4程序清单 4
    1.5运行结果及分析 6
    1.6实验的收获与体会 8

    1.1实验目的

    1,掌握利用for语句实现循环结构的方法。
    2,掌握利用while语句实现循环结构的方法。
    3,熟悉利用向量代替循环

    1.2实验内容

    在这里插入图片描述

    1.3流程图

    在这里插入图片描述

    1.4程序清单

    %% 实验四
    clc
    clear
    %% 1.1
    fprintf('\n-----------1.1------------\n');
    for n=[100,1000,10000]
        x=1:n;
        value=sqrt(6*sum(1./x./x));
       fprintf('\nn=%d时结果为:%f\n',n,value);
    end 
     
    %% 1.2
    fprintf('\n-----------1.2------------\n');
    for n=[100,1000,10000]
        sum=0;
        for x=1:n
            sum=sum+1/(x.^2);
        end
        value=sqrt(6*sum);
        fprintf('\nn=%d时结果为:%f\n',n,value);
    end  
    %%  2 
    fprintf('\n-----------2------------\n');
    y=0;
    n=1;
    while y<3  
        y=y+1/(2*n-1);
        n=n+1;
    end
    n=n-1;
    y=y-1/(2*n-1);
    n=n-1;
    fprintf('\n最大n值:%d\n',n);
    fprintf('\n与(1)的n值对应的y值:%f\n',y);
    fprintf('\n\n');
    %% 3
    fprintf('\n---------3------------\n');
     
    a=[1,8,10];
    b=[1,3,0.1];
    for j=1:3
        xn(j)=1;
        for i=1:501
            xn1(j)=a(j)/(b(j)+xn(j));
            if abs(xn1(j)-xn(j))<=10e-5
                break;
            else
                xn(j)=xn1(j);
            end
        end
        if(i<=500)
            fprintf('\na=%f,b=%f时迭代%d次,收敛结果为%f,准确值为%f\n',a(j),b(j),i,xn1(j),(-b(j)+(b(j)^2+4*a(j))^(1/2))/2);
        else
            fprintf('\na=%f,b=%f时迭代次数超过500次\n',a(j),b(j));
        end
    end
    %% 4
    fprintf('\n-------------4--------------\n');
    f(1)=1;
    f(2)=0;
    f(3)=1;
    z=2;
    o=1;
    fu=0;
    for i=4:100
        f(i)=f(i-1)-2*f(i-2)+f(i-3);
        if(f(i)>0)
            z=z+1;
        elseif(f(i)==0)
            o=o+1;
        else
            fu=fu+1;
        end
    end
    fprintf('\n最大值 %f\n最小值 %f\n各数之和 %f\n正数个数 %d\n零的个数 %d\n负数个数 %d\n',max(f),min(f),sum(f),z,o,fu);
     
    %% 5
    fprintf('\n-------------5--------------\n');
    j=0;
    for i=2:50
        if(isprime(i*(i+1)-1))
            j=j+1;
            su(j,1)=i;
            su(j,2)=i+1;
            su(j,3)=i*(i+1)-1;
        end
    end
    fprintf('\n亲密数对的对数:%d\n所有亲密素数之和%d\n',j,sum(su(:,3)));
    
    • 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
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88

    1.5运行结果及分析

    1.
    在这里插入图片描述

    在这里插入图片描述

    3.迭代结果与准确值差不多,小数点前4位是绝对准确的。
    在这里插入图片描述

    在这里插入图片描述

    5.
    在这里插入图片描述

    1.6实验的收获与体会

    经过本次实验我掌握了for语句实现循环结构的方法和while语句实现循环结构的方法。熟悉并利用向量代替循环,matlab是一个矩阵运算工具,一些计算可以用向量来代替循环,这样可以达到更高的代码效率,使自己的代码整洁简练,可以用向量的肯定就不用循环。但while和for循环还是有他们的优势所在的,有一些向量完不成的运算,就必须要用到循环来实现。

  • 相关阅读:
    spark性能调优 | 内存优化
    如何精简 Prometheus 的指标和存储占用
    【Android】在渲染生效前提前测量View大小
    Vue插件的使用
    C# Onnx Yolov8 Detect 涉黄检测
    使用OAK-D相机跑ORB-SLAM3算法遇到的问题总结
    Spring Boot @Value读不到Nacos配置中心的值。(properties配置文件)
    Homography详解&&在MVSNet中的应用
    SAP ABAP 主动调用外部系统的REST接口(x-www-form-urlencoded)
    C++数据结构补充(双向链表)
  • 原文地址:https://blog.csdn.net/m0_51738372/article/details/127665196