基于MATLAB的数论运算与编写函数(附完整代码)
目录
一. 基本数论运算
例题1
例题2
例题3
例题4
二. 循环结构
2.1 for 结构
2.2 while结构
例题5
例题6
例题7
三. 转移结构
例题8
四. 开关结构与试探结构
4.1 开关结构
4.2 试探结构
五. 函数的编写
例题9
一. 基本数论运算
函数名 | 调用格式 | 解释 |
floor() | n=floor(x) | 下取整 |
ceil() | n=ceil(x) | 上取整 |
round() | n=round(x) | 四舍五入 |
fix() | n=fix(x) | 离0近方向取整 |
rat() | [n,d]=rat(x) | 最简有理数 |
rem() | B=rem(A,C) | 求模的余数 |
gcd() | k=gcd(n,m) | 最大公约数 |
lcm() | k=lcm(n,m) | 最小公倍数 |
factor() | factor(n) | 质因数分解 |
isprime() | v1=isprime(v) | 判断是否为质数 |
例题1
对下面的数据进行取整运算:
-0.2765,0.5772,1.4597,2.1091,1.191,-1.6187
解:
MATLAB代码如下:
clc;clear;
A=[-0.2765,0.5772,1.4597,2.1091,1.191,-1.6187];
A1=floor(A) %向-inf方向取整
A2=ceil(A) %向+inf方向取整
A3=round(A) %取最近的整数
A4=fix(A) %向0的方向取整
运行结果:
A1 = -1 0 1 2 1 -2
A2 = 0 1 2 3 2 -1
A3 = 0 1 1 2 1 -2
A4 =0 0 1 2 1 -1
例题2
对 Hilbert矩阵,试用rat()函数变换。
解:
MATLAB代码如下:
clc;clear;
A=hilb(3);
[n,d]=rat(A) %将元素变换成最小有理数,n,d分别为分子,分母矩阵
运行结果:
n =
1 1 1
1 1 1
1 1 1
d =
1 2 3
2 3 4
3 4 5
例题3
对1856120,1483720,求最大公约数,最小公倍数,质因子分解。
解:
MATLAB代码如下:
clc;clear;
format long
m=1856120; n=1483720;
[gcd(m,n),lcm(m,n)] %求m,n的最大公约数,最小公倍数
factor(lcm(m,n)) %对lcm(m,n)进行质因子分解
运行结果:
ans =
1.0e+09 *
0.000001960000000 1.405082840000000
ans =2 2 2 5 7 7 757 947
例题4
求1-100之间的质数
解:
MATLAB代码如下:
clc;clear;
A=1:1:100;
A1=isprime(A); %若向量A中某个整数为质数,则相应位置为1,其他为0
B=A(A1)
运行结果:
B =
2 3 5 7 11 13 17 19 23 29
31 37 41 43 47 53 59 61 67 71
73 79 83 89 97
二. 循环结构
2.1 for 结构
for i=V循环结构体
end
2.2 while结构
while (条件式)循环结构体
end
例题5
用循环求解如下:
解:
MATLAB代码如下:
clc;clear;%方法1
s1=0;
for i=1:100s1=s1+i;
end
s1%方法2
s2=0;
i=1;
while(i<=100)s2=s2+i;i=i+1;
end
s2%方法3
s3=sum(1:100)
运行结果:
s1 =5050
s2 = 5050
s3 = 5050
例题6
用循环求解,求最小的m
解:
clc;clear;s=0;
m=0;
while(s<=10000),m=m+1;s=s+m;
end
[s,m] %求出的m即为要求
例题7
求如下:
解:
clc;clear;tic,s1=0;
for i=1:100000,s1=s1+1/2^i+1/3^i;
end
toc
s1tic,i=1:100000;
s2=sum(1./2.^i+1./3.^i);
toc
s2%可比较两种方法的运行时间
运行结果:
历时 0.014148 秒。
s1 =1.500000000000000
历时 0.020827 秒。
s2 =1.500000000000000
三. 转移结构
if (条件1) %若条件1满足,则执行1语句组1 %也可以嵌套下级的if结构
elseif(条件2) %若满足条件2,则执行段落2语句组2
··· %可以设置多种转移条件
else %上面的条件均不满足,执行下面段落语句组n+1
end
形成流程图:
例题8
用转移结构求解最大的m。
解:
MATLAB代码:
clc;clear;
s=0;
for i=1:10000s=s+i;if s>10000,break;end
end
i
运行结果:
i =141
四. 开关结构与试探结构
4.1 开关结构
switch 开关表达式
case 表达式1语句段1
case {表达式2,表达式3,···,表达式m}语句段2
···
otherwise语句段n
end
形成流程图:
此开关结构与C语言的区别:
- 当开关表达式的值等于某表达式时,执行该语句后结束该结构,不用break;
- otherwise语句不是C语言中的default;
- 当需要在开关表达式满足若干个表达式之一时执行某一程序段,则用单元形式,即用大括号把这些表达式括起来,用逗号分隔;
- 程序执行的结构和各个case的顺序无关;
- case语句中条件不能重复,否则列在后面的条件将不能执行
4.2 试探结构
首先试探性执行语句1,若执行过程有错,将错误信息赋给保留的lasterr变量,并终止这段语句的执行,转而执行语句2。
try, 语句1,
catch 语句段2,
end
可以将不保险但快的算法放在语句1,保险的放在语句2;也可以在语句2处,说明语句1失效的原因。
五. 函数的编写
函数是MATLAB编程的主流方法,当然还可以采用M-script文件(M-脚本文件)。M-script适合于小规模运算。函数的基本结构如下:
function [返回变量列表]=函数名(输入变量列表)注释说明语句段,由”%“引导
输入,返回变量格式的检测
函数体语句
nargin,nargout分别表示输入和返回变量的实际个数,此为MATLAB的保留变量,只要进入该函数,MATLAB就会自动生成这两个变量。
varargin,varargout分别表示输入和输出变量列表,属于可变输入输出个数。
例题9
对于阶的Hilbert矩阵,元素满足:
尝试自己编写生成该矩阵的函数。
解:
若只给出一个输入参数,则会自动生成一个方阵。在编写函数时,需要给出合适的帮助信息,同时检测输入和返回变量的个数。
函数代码:
function A=myhilb(n,m)
if nargout>1,error('Too many output arguments.!!');
end
if nargin==1,m=n;
elseif nargin==0|nargin>2error('Wrong number of input arguments.');
end
A1=zeros(m,n);
for i=1:nfor j=1:mA1(i,j)=1/(i+j-1);end
end
if nargout==1,A=A1;
else if nargout==0,disp(A1);end
end
主运行代码:
clc;clear;
A1=myhilb(3,4)A2=myhilb(4)A=myhilb(3,4,5)
运行结果:
A1 =
1.000000000000000 0.500000000000000 0.333333333333333 0.250000000000000
0.500000000000000 0.333333333333333 0.250000000000000 0.200000000000000
0.333333333333333 0.250000000000000 0.200000000000000 0.166666666666667
0 0 0 0
A2 =
1.000000000000000 0.500000000000000 0.333333333333333 0.250000000000000
0.500000000000000 0.333333333333333 0.250000000000000 0.200000000000000
0.333333333333333 0.250000000000000 0.200000000000000 0.166666666666667
0.250000000000000 0.200000000000000 0.166666666666667 0.142857142857143
错误使用 myhilb
输入参数太多。
基于MATLAB的数论运算与编写函数(附完整代码)相关推荐
- 基于python nlp PyTorch智能对联生成系统 附完整代码 毕业设计
软件标题:智能对联生成系统 b 系统概述 使用项目:智能对联生成系统 软件用途:通过网页端可以获取到根据已有上联只能生成的下联. 开发历史:本项目未曾有前置版本.但在服务器搭建,Tensorflow ...
- Python基于tk界面的万年历+阳历阴历(附完整代码)
一.介绍tkinter并下载 tkinter tkinter(Tk interface)是Python的标准GUl库,支持跨平台的GUl程序开发.tkinter适合小型的GUl程序编写,也特别适合初学 ...
- 基于python图书馆管理系统和读者系统(附完整代码以及打包好的exe文件)
摘要: 本文基于python的图书馆管理系统和读者系统,实现了登录.注册.忘记密码.书籍查询.借阅.归还.修改等功能,通过csv文件将数据存储在本地.注册时采用了邮箱验证码,模拟了现实场景.(全部源代 ...
- 基于opencv的图像碎片拼接复原系统 附完整代码可作为毕设
C++ 开发环境:Microsoft VisualStudio 2017 Python 开发环境: PyCharm C++ 开源计算机视觉库: Opencv4.1.0 Python 开发语言版本: P ...
- 实战31:基于opencv的图像碎片拼接复原系统 附完整代码可作为毕设
C++ 开发环境:Microsoft VisualStudio 2017 Python 开发环境: PyCharm C++ 开源计算机视觉库: Opencv4.1.0 Python 开发语言版本: P ...
- 基于MATLAB的二维与三维插值拟合运算(附完整代码)
· 一. 一维插值 interp1函数在上个博客中(如下链接)已经更新了,此处再补充两个相关例题. 基于MATLAB的数据插值运算:Lagrange与Hermite算法(附完整代码)_唠嗑!的博客-C ...
- R语言使用caret包的confusionMatrix函数计算混淆矩阵、基于混淆矩阵的信息手动编写函数计算accuray、准确率指标
R语言使用caret包的confusionMatrix函数计算混淆矩阵.基于混淆矩阵的信息手动编写函数计算accuray指标 目录
- R语言使用caret包的confusionMatrix函数计算混淆矩阵、基于混淆矩阵的信息手动编写函数计算Specificity、特异度指标
R语言使用caret包的confusionMatrix函数计算混淆矩阵.基于混淆矩阵的信息手动编写函数计算Specificity指标 目录
- matlab编写fie滤波器,数字信号处理大作业mdash;mdash;基于matlab R2019a的男声变女声资料汇总与代码...
@数字信号处理大作业--基于matlab R2019a的男声变女声资料汇总与代码 概述 参考了很多前人的资料,发现很多函数已经过时了,而且从我通过VIP下载的代码来看,代码的逻辑不是很清晰,废话也多, ...
最新文章
- WINCE屏蔽NK的串口输出信息
- Objective-C知识总结(5)
- java反射机制原理详解_java反射机制的详细讲解
- 阿里大牛精心整理了46张PPT,教你弄懂JVM、GC算法和性能调优!
- c#连接sqlserver
- mysqldump: Got errno 28 on write
- vue string转date_进阶高级前端,这9种Vue技术你掌握了吗?
- 【HTML】【简易电子相册】超链接
- python 安装talib包
- html扫雷游戏代码,HTML5扫雷
- DaHua工业相机开发中调试遇到的相机断开问题
- AIAI告诉我谁最美
- C语言程序软件电脑版,C语言宝典PC版-C语言宝典电脑版下载 v1.7.3--PC6电脑版
- BZOJ3521: [Poi2014]Salad Bar
- wi ndows自带截图工具,不想装截图工具?这里有 5 个 Windows 自带截图小技巧
- kafka之Consumer消费者基本概念
- ARPSpoofing、arp欺骗性攻击、arpspoof源码分析
- Hold time 个人理解
- LUBANSO硬件钱包冷知识,逻辑与查询
- 激光三角测量法在工业视觉检测上的应用
热门文章
- 计算机网络大学生职业生涯范文,计算机网络专业大学生职业生涯规划书
- NEO4J-链路预测算法03-优先链接算法(Preferential Attachment)应用场景简介
- POJ 2579 Blurred Vision G++
- Hadoop fs 常用命令
- Java(老白再次入门) - Java集合
- Python: SQLAlchemy 处理 PostgreSQL on conflict
- can和could的用法_中学生的难题can和could有什么关系,只需三分钟让你轻松记
- 网易视频云: 网易平台级视频服务存储技术
- 【聚类算法】什么是聚类
- LeetCode 526. 优美的排列