工程软件基础—实验二

本文详细介绍了Matlab程序设计的基本概念,包括实验目的、使用M语言实现算法、编写函数文件以及具体应用实例,如分支程序、随机数处理、Fibonacci数列计算、向量排序和迭代公式求解。通过实例展示了如何在Matlab中进行数值计算和算法设计。
摘要由CSDN通过智能技术生成

实验二:Matlab 程序设计

目录

一、 实验目的:

1. 理解 Matlab 程序设计方法;

2. 能采用 M 语言实现算法设计与验证;

3. 设计编写 Matlab 函数文件。

二、实验器材:

安装 MATLAB 软件的 PC 机

三、实验内容及结果

1. 编制分支程序实现以下计算,a, b, c, x的值从键盘输入,其中:a为自己学号的第1-3位,b为自己学号的第4-6位,c位为自己学号的第7-9位,x位为自己学号的10-12位。

​编辑

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

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

 4. 编写一个函数文件,求小于任意自然数n的Fibnacci数列各项,Fibnacci数列定义如下:

​编辑

5. 编写一个函数文件,以向量为参数,对向量元素进行排序并输出。

四、思考题 

编写程序,用如下迭代公式求​编辑,其中,a=113。迭代终止条件为​编辑,迭代初值​编辑,迭代次数不超过100次。分别对迭代结果和准确值进行比较,并统计迭代次数。

​编辑

​编辑

 ​编辑

当​编辑时,有​编辑,可得迭代公式如下:


一、 实验目的:

1. 理解 Matlab 程序设计方法;
2. 能采用 M 语言实现算法设计与验证;
3. 设计编写 Matlab 函数文件。

二、实验器材:

安装 MATLAB 软件的 PC 机

三、实验内容及结果

1. 编制分支程序实现以下计算,a, b, c, x的值从键盘输入,其中:a为自己学号的第1-3位,b为自己学号的第4-6位,c位为自己学号的第7-9位,x位为自己学号的10-12位。

程序设计:

a=input('输入a:');
%请求用户输入
b=input('输入b:');
c=input('输入c:');
x=input('输入x:');
if x>=0 &&x<10
    y=a*x^2+b*x+c;
elseif x>=10 && x<20
    y=a*sin(b)^c+x;
else
    y=log(abs(b+c/x));
end
disp("计算结果为:"+y);

 实验结果及分析:

 分析:

根据 x 的取值,判断使用哪一个计算公式,因为 x=223 大于20,所以使用y=ln|b+c/x|,带入计算得出y约为5.3536

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

 程序设计:

 n=randi([10,99],[1,20]);
 %产生在10到99之间的1行20列的随机整数
 a=mean(n);%计算平均数
 num=1;%建立索引
 for i=1:20
    if n(i)<a && rem(n(i),2)==0
     %rem求除后的余数
             s(num)=n(i);
             num=num+1;
    end
end
disp("20个两位随机整数为:");
disp(n);
disp("20个两位随机整数的平均数为:");
disp(a);
disp("20个两位随机整数中低于平均值的偶数为:");
disp(s);

实验结果及分析:

 分析:

通过 rendi 函数产生在 10 到 99 之间的 1 行 20 列的随机整数,通过 mean 函数计 算出平均值,进入 for 循环,经过 if 语句判断条件 n(i)

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

 程序设计:

第一种:使用MATLAB函数

clc
clear
%使用Matlab的max和min函数
for i=1:20
	A(i)=input('输入20个数:');
end
disp("最大值:"+max(A));
disp("最小值:"+min(A));

第二种:循环结构

%循环结构
for i=1:20
	A(i)=input('输入20个数:');
end
maxa=A(1);
mina=A(1);
for i=2:20
	if maxa<A(i)
		maxa=A(i);
	end
	if mina>A(i)
		mina=A(i);
	end
end
disp("最大值:"+ maxa);
disp("最小值:"+ mina);

实验结果及分析:

分析:

循环结构通过现将第一个数赋到 maxa(mina) 中,然后一个数与一个数进行比较,若遇到比其大(小) 的数,则将其存到 maxa(mina)中,将原来的数覆盖, 最后结束循环,输出 maxa(mina)

 4. 编写一个函数文件,求小于任意自然数n的Fibnacci数列各项,Fibnacci数列定义如下:

函数文件内容:

function f = Fibnacci(n)
% fibonacci 计算小于n的Fibonacci数列
% 输入参数:n - 自然数
% 输出参数:f - 小于n的Fibonacci数列
f = [1, 1];
i = 2;
while f(i) + f(i-1) < n
    f(i+1) = f(i) + f(i-1);
    i = i + 1;
end

脚本中调用函数的语句

 Fibnacci(3)         %参数3,可改变参数多次测试

实验结果及分析:

分析:

Fibnacci 数列中,f(1)=f(2)=1,f(3)=2, f(4)=3,在脚本调用函数时所给自然数 n=3,可知输出结 果应为 1 1 2,对应实验结果,与预测一致。 

5. 编写一个函数文件,以向量为参数,对向量元素进行排序并输出。

 函数文件内容:

function f = sort_vector(vec)
    f= sort(vec);
end

脚本调用函数:

disp("原序列为")
vec = [10,454,1,2151,6,98]

disp("排序后为");
disp(sort_vector(vec));

实验结果及分析:

 分析:

B = sort(A) 按升序 对 A 的元素进行排序。 如果 A 是向量,则 sort(A) 对向量元素进行排序。


四、思考题 

编写程序,用如下迭代公式求,其中,a=113。迭代终止条件为,迭代初值,迭代次数不超过100次。分别对迭代结果和准确值进行比较,并统计迭代次数。
 
时,有,可得迭代公式如下:

程序设计:

a=113;x0=1.0;
xn=x0;z=1e-5;
n=0;
while 1
        xn1=xn/2+a/(2*xn);
        n=n+1;%迭代次数
        if abs(xn1-xn)<=z break
        end
        xn=xn1;
   if n>100 break 
        end 
end  
   disp("结果为");
   disp(num2str(xn));
   disp("准精确值为");
   disp(num2str(sqrt(a)));
   disp("迭代次数为");
   disp(num2str(n));
  

实验结果及分析:

分析

程序中有两个跳出循环的条件,一个是,一个是迭代次数超过100次。

当a=113时,通过迭代的法求根号a的值,是因为跳出循环,并且求出了其根号值。

  • 19
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值