斐波那契数列

目录

斐波那契数列

斐波那契数列和黄金分割率的关联

解析表达式

练习


斐波那契数列


一个人将一对兔子放到一个封闭的围墙内,并假设每对兔子每个月都繁殖出一对兔子,且新生兔子从第二个月开始有繁殖能力,那么一年以后这个封闭的围墙内有多少只兔子。

本月月底的兔子的对数等于月初兔子对数加上刚成熟的新生兔子的对数。

(bunny通常指的是小兔子)

persistent var1 ... varN 将变量 var1 ... varN 声明为持久变量。持久变量是声明它们的函数的局部变量;但其值保留在对该函数的各次调用所使用的内存中。当 MATLAB 首次遇到特定 persistent 语句时,它将持久变量初始化为空矩阵 ([])。

clf - 清空图窗
    此 MATLAB 函数 删除当前图窗中具有可见句柄的所有子级。

shg - 显示当前图窗
    此 MATLAB 函数 使当前图窗可见,并将其置于屏幕上所有其他图窗的前面。这与使用命令figure(gcf) 一样。

cat 当 A 和 B 具有兼容的大小(除运算维度 dim 以外的维度长度匹配)时,C = cat(dim,A,B) 沿维度 dim 将 B 串联到 A 的末尾。

C = cat(dim,A1,A2,…,An) 沿维度 dim 串联 A1A2、…、An

您可以使用方括号运算符 [] 进行串联。例如,[A,B] 或 [A B] 将水平串联数组 A 和 B,而 [A; B] 将垂直串联它们。

uicontrol - 创建用户界面控件

c = uicontrol 在当前图窗中创建一个普通按钮(默认用户界面控件),并返回 UIControl 对象。如果图窗不存在,则 MATLAB® 调用 figure 函数以创建一个图窗。

c = uicontrol(Name,Value) 创建一个用户界面控件,其中包含使用一个或多个名称-值对组参数指定的属性值。例如,'Style','checkbox' 会创建一个复选框。

c = uicontrol(parent) 在指定的父容器中创建默认用户界面控件,而不是默认为在当前图窗中。

c = uicontrol(parent,Name,Value) 指定用户界面控件的父容器和一个或多个名称-值对组参数。

uicontrol(c) 将焦点放在一个以前定义的用户界面控件上。

set 设置图形对象属性

set(H,Name,Value) 为 H 标识的对象指定其 Name 属性的值。使用时须用单引号将属性名引起来,例如,set(H,'Color','red')。如果 H 是对象的向量,则 set 会为所有对象设置属性。如果 H 为空(即 []),set 不执行任何操作,但不返回错误或警告。

set(H,NameArray,ValueArray) 使用元胞数组 NameArray 和 ValueArray 指定多个属性值。要为 m 个图形对象中的每个图形对象设置 n 个属性值,请将 ValueArray 指定为 m×n 的元胞数组,其中 m = length(H),而 n 等于 NameArray 中包含的属性名的数量。

set(H,S) 使用 S 指定多个属性值,其中 S 是一个结构体,其字段名称是对象属性名称,字段值是对应的属性值。

s = set(H) 返回 H 标识的对象的、可由用户设置的属性及其可能的值。s 是一个字段名称是对象属性名称且字段值是对应属性的可能值的结构体。如果您不指定输出参数,MATLAB 软件会在屏幕上显示该信息。H 必须为单个对象。

values = set(H,Name) 返回指定属性的可能值。如果可能的值为字符向量,则 set 会在元胞数组 values 的元胞中返回每个值。对于其他属性而言,set 会返回一个指示 Name 没有一组固定属性值的语句。如果您不指定输出参数,MATLAB 会在屏幕上显示该信息。H 必须为单个对象。

findobj 查找具有对应属性的图形对象

h = findobj 返回图形根对象及其所有后代。

h = findobj(prop,value) 返回层次结构中属性 prop 设置为 value 的所有对象。

h = findobj('-not',prop,value) 返回其指定属性未设置为指定值的所有对象。

h = findobj(prop1,value1,oper,prop2,value2) 将逻辑运算符 oper 应用于 prop,value 对组。例如,h = findobj('LineStyle','--','-and','Marker','o') 返回具有虚线线型和圆形标记的所有对象。

h = findobj('-regexp',prop,expr) 使用正则表达式来查找具有特定属性值的对象。函数返回属性值满足正则表达式的对象。

h = findobj('-property',prop) 返回具有指定属性的所有对象。

h = findobj(prop1,value1,...,propN,valueN) 返回层次结构中指定属性设置为指定值的所有对象。您可以用上述语法中的其他输入参数组合替换 prop,value 对组。

function rabbits(handle)
% RABBITS  Fibonacci's rabbit pen.
%   How fast does the population grow?
%   rabbits, with no arguments, initializes the simulation.
%   rabbits(handle) is the callback with each button click.

% Initialize with a blue bunny in the center of the figure.
% Clicking on a blue bunny turns it into a blue rabbit.
% Clicking on a blue rabbit creates a gray bunny and turns the rabbit gray.
% Clicking on a gray bunny or gray rabbit does nothing.
% When all the bunnies and rabbits are gray, count them and turn them all blue.

   % R = structure of rabbit images.
   % pos = history of positions.
   persistent R pos

   if nargin == 0
      % Initialize single blue bunny and uicontrols.
      init_graphics

   else
      % Process a button click.
      switch get(handle,'tag')
         case 'bluebunny'
            % A blue bunny turns into a gray rabbit.
            bluebunny(handle)
         case 'bluerabbit'
            % A blue rabbit creates a gray bunny and turns gray itself.
            bluerabbit(handle)
         case 'graybunny'
            % A gray bunny does nothing.
         case 'grayrabbit'
            % A gray rabbit does nothing.
      end

      % When all are gray, turn them all blue.
      update
      
   end

% ------------------------------

   function init_graphics
      clf reset
      shg

      R = load('rabbits.mat');
      R.graybunny = cat(3,R.bunny,R.bunny,R.bunny); 
      R.grayrabbit = cat(3,R.rabbit,R.rabbit,R.rabbit); 
      R.bluebunny = cat(3,R.bunny,R.bunny,255*ones(size(R.bunny),'uint8'));
      R.bluerabbit = cat(3,R.rabbit,R.rabbit,255*ones(size(R.rabbit),'uint8'));

      f = get(gcf,'position');
      p = .45*f(3:4);
      pos = p;

      % Single bunny
      uicontrol('style','pushbutton','position',[p 80 80], ...
         'background','white','cdata',R.bluebunny,'tag','bluebunny', ...
         'callback','rabbits(gcbo)');

      % Population counter
      uicontrol('style','text','fontsize',12,'fontweight','bold', ...
         'position',[f(3)/2-14 f(4)-40 28 28],'string','1')

      % Auto toggle
      uicontrol('style','toggle','position',[20 20 60 20], ...
         'string','auto','callback',@auto)
   end

% ------------------------------

   function bluebunny(handle)
      % A blue bunny turns into a gray rabbit.
      set(handle,'cdata',R.grayrabbit,'tag','grayrabbit', ...
         'callback','rabbits(gcbo)')
   end

% ------------------------------

   function bluerabbit(handle)
      % A blue rabbit creates a gray bunny and turns gray itself.
      p = find_good_position;
      uicontrol('style','pushbutton','position',[p 80 80], ...
         'background','white','cdata',R.graybunny,'tag','graybunny', ...
         'callback','rabbits(gcbo)');
      set(handle,'cdata',R.grayrabbit,'tag','grayrabbit', ...
         'callback','rabbits(gcbo)');
   end

% ------------------------------

   function p = find_good_position
      % Avoid toggle and population counter.
      f = get(gcf,'position');
      ds = -Inf;
      % Choose best of several random positions.
      for k = 1:20
         p = .80*f(3:4).*rand(1,2);
         % Avoid toggle in lower right hand corner.
         if p(1) < 80 && p(2) < 40
            continue
         end
         % Avoid population counter centered near the top.
         f = get(gcf,'pos');
         if (p(2)+80 > f(4)-40) && (p(1)+80 > f(3)/2-14) ...
            && (p(1) < f(3)/2+14)
            continue
         end
         r = p(ones(size(pos,1),1),:);
         d = min(min(abs(pos-r)'));
         if d > ds
            ds = d;
            ps = p;
         end
      end
      p = ps;
      pos = [pos; p];
   end

% ------------------------------

   function update
      % When all are gray, turn them all blue.
      b = findobj(gcf,'style','pushbutton');
      n = length(b);
      c = get(b,'tag');
      if n == 1
         c = {c};
      end
      % Check for all gray.
      if length(findstr([c{:}],'gray')) == n
         pause(1.0)
         for k = 1:n
            if findstr(c{k},'graybunny')
               set(b(k),'cdata',R.bluebunny,'tag','bluebunny', ...
                  'callback','rabbits(gcbo)')
            else
               set(b(k),'cdata',R.bluerabbit,'tag','bluerabbit', ...
                  'callback','rabbits(gcbo)');
            end
         end
         % Update population counter.
         set(findobj(gcf,'style','text'),'string',n)
      end
   end

% ------------------------------

   function auto(handle,~)
      % Auto toggle callback
      % Complete one month's growth
      set(handle,'enable','off')
      b = [findobj(gcf,'tag','bluebunny')
          findobj(gcf,'tag','bluerabbit')];
      n = length(b);
      b = b(randperm(n));
      for k = 1:n
          rabbits(b(k))
          pause(.1)
      end
      set(handle,'enable','on','value',0)
   end

end % rabbits

 斐波那契数列实现

function f = fibnum(n)
%FIBNUM  Fibonacci number.
%   FIBNUM(n) demonstrates recursion by generating the n-th Fibonacci number.
%   Warning: FIBNUM(50) takes a very long time.

if n <= 1
   f = 1;
else
   f = fibnum(n-1) + fibnum(n-2);
end
function f = fibonacci(n)
%FIBONACCI  Fibonacci sequence
%   f = FIBONACCI(n) generates the first n Fibonacci numbers.
f = zeros(n,1);
f(1) = 1;
f(2) = 2;
for k = 3:n
   f(k) = f(k-1) + f(k-2);
end

斐波那契数列和黄金分割率的关联


斐波那契的兔子并非每个月增加一杯,而是在前一个月的基础上乘以一个黄金分割比。

n=40
f=fibonacci(n)
r=f(2:n)./f(1:n-1)
phi=(1+sqrt(5))/2
r-phi
%得出来值为1.618

解析表达式


n=(1:40)';
f=(phi.^(n+1)-(1-phi).^(n-1))/(2*phi-1)
f = round(f)

练习


tic - 启动秒表计时器
    此 MATLAB 函数 与 toc 函数结合使用,可以测量经过的时间。tic 函数记录当前时间,toc
    函数使用记录的值计算经过的时间。

 toc - 从秒表读取已用时间
    此 MATLAB 函数 读取由调用 tic 函数启动秒表计时器以来经过的时间。MATLAB 读取执行 toc函数时的内部时间,并显示最近一次不带输出调用 tic 函数以来经过的时间。经过的时间以秒为单位表示。


奇偶性

clear
n=100
f=fibonacci(n)
for k = 1:n 
    if mod(f(k),2)==1
        fprintf('第%d个斐波那契数为奇数\n',k)
    elseif mod(f(k),2)==0
         fprintf('第%d个斐波那契数为偶数\n',k)
    end
end

质数

isprime - 确定哪些数组元素为质数
    此 MATLAB 函数 返回与 X 大小相同的逻辑数组。如果 X(i) 为质数,则 TF(i) 的值为
    true。否则,值为 false。

for k = 1:n 
    if isprime(f(k))== 1
        fprintf('第%d个斐波那契数质数\n',k)
    elseif isprime(f(k))==0
         fprintf('第%d个斐波那契数不是质数\n',k)
    end
end

求解方程

mldivide - 求解关于 x 的线性方程组 Ax = B
    此 MATLAB 函数 对线性方程组 A*x = B 求解。矩阵 A 和 B 必须具有相同的行数。如果 A
    未正确缩放或接近奇异值,MATLAB 将会显示警告信息,但还是会执行计算。

    x = A\B
    x = mldivide(A,B)

Matlab学习笔记(6.2)线性方程组求解 - 知乎

clear
syms c1 c2 phi;
eq1=c1+c2-1
eq2=c1*phi+c2*(1-phi)-1
syms x y;
[c1,c2]=solve(eq1,eq2,c1,c2)
phi=(1+sqrt(5))/2
A=[1 1; phi 1-phi]
B=[-1 -1]
x=A/B

对数绘图


semilogy(fibonacci(18),'-o')

  semilogy - 半对数图(y 轴有对数刻度)
    此 MATLAB 函数 在 x 轴上使用线性刻度、在 y 轴上使用以 10 为底的对数刻度来绘制 x 和y 坐标。 要绘制由线段连接的一组坐标,请将 X 和 Y 指定为相同长度的向量。 要在同一组坐标轴上绘制多组坐标,请将 X 或 Y 中的至少一个指定为矩阵。

%%
semilogy(fibonacci(18),'-o')
%自变量
a1 = 1 : 18;
%因变量
b1 = log(fibonacci(18));
xiuu  = polyfit(a1,b1,1);
k = xiuu(1)
b=xiuu(2)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/35504.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

kotlin Flow系列之 - 冷流SafeFlow源码解析之 - Safe在那里?

本文涉及源码基于kotlinx-coroutines-core-jvm:1.7.1 kotlin 协成系列文章: 你真的了解kotlin中协程的suspendCoroutine原理吗? Kotlin Channel系列&#xff08;一&#xff09;之读懂Channel每一行源码 kotlin Flow系列之-冷流SafeFlow源码解析之 - Safe在那里&#xff1f; ko…

vue el-table的每行操作el-button添加单独的loading效果实现

vue el-table的每行操作el-button添加单独的loading效果实现 效果图&#xff1a;实现代码&#xff1a;结语 效果图&#xff1a; 实现代码&#xff1a; <tamplate><el-table :data"list" ><el-table-column fixed"right" label"操作&q…

服务负载均衡Ribbon

服务负载均衡Ribbon Ribbon 介绍Ribbon 案例Ribbon 负载均衡策略Ribbon 负载均衡算法设置自定义负载均衡算法 Ribbon 介绍 Ribbon 是一个的客服端负载均衡工具&#xff0c;它是基于 Netflix Ribbon 实现的。它不像 Spring Cloud 服务注册中心、配置中心、API 网关那样独立部署…

启动网站调试提示 HTTP 错误 403.14 – Forbidden Web 服务器被配置为不列出此目录的内容。

启动网站调试提示 HTTP 错误 403.14 – Forbidden Web 服务器被配置为不列出此目录的内容。 解决方案第一种.在网站的配置文件里添加第二种.ISS管理界面修改 解决方案 第一种.在网站的配置文件里添加 <system.webServer><directoryBrowse enabled"true" /&…

STM32+PWM+输入捕获测频

外部时钟&#xff0c;主频64M 定时器1 通道1发出PWM波 频率1K 定时器2 通道1输入捕获&#xff0c;上升沿触发 串口 /* USER CODE BEGIN 0 */ uint32_t time_up_num0;//上升沿计数 float time_frequency;//频率 /* USER CODE END 0 */ 初始换打开定时器 /* USER CODE BEGIN 2 …

跑深度学习nvidia驱动忽然实效的详细解决方法

由于经常跑深度学习&#xff0c;所以对于显卡驱动什么的都还是整的比较明白的不含糊&#xff0c;所以都能跑的起来。但是今天跑pytorch框架时&#xff08;用到cuda&#xff09;忽然给我报了个错&#xff1a; RuntimeError: No CUDA GPUs are available这给我整不会了&#xff…

解决uni-app微信小程序底部输入框,键盘弹起时页面整体上移问题

存在问题 做了一个记录页面&#xff08;类似单方聊天页&#xff09;&#xff0c;输入框在底部&#xff1b;当弹出键盘时&#xff0c;页面整体上移&#xff0c;页面头信息会消失不见 需要实现效果&#xff1a; 比如一个记录页面&#xff0c;需要在键盘弹出时&#xff1a; 底…

【SQL】群辉 NAS 安装 Mysql 远程访问连接

群辉安装MySQL具有高效、安全、可靠、灵活等优势&#xff0c;可以为用户提供一个优秀的数据管理和分析环境。同时具有良好的硬件性能和稳定性&#xff0c;可以保障MySQL数据库的高效运行和数据安全. cpolar 是一款内网穿透工具,通过简单的设置,我们即可实现远程访问群辉中mysq…

微信为什么使用 SQLite 保存聊天记录?

概要 SQLite 是一个被大家低估的数据库&#xff0c;但有些人认为它是一个不适合生产环境使用的玩具数据库。事实上&#xff0c;SQLite 是一个非常可靠的数据库&#xff0c;它可以处理 TB 级的数据&#xff0c;但它没有网络层。接下来&#xff0c;本文将与大家共同探讨 SQLite 在…

Element+Vue+OpenLayers的项目实战

WebGIS ElementVueOpenLayers的项目实战 使用npm配置开发环境Vue的安装npm安装vue-cli脚手架构建工具安装桥接工具运行项目 使用npm配置开发环境 开发是项目级别的&#xff0c;则需要使用npm来配置开发环境&#xff1b; 使用npm配置开发环境主要包括Vue、Element和OpenLayers的…

Linux·图解Linux网络包接收过程

因为要对百万、千万、甚至是过亿的用户提供各种网络服务&#xff0c;所以在一线互联网企业里面试和晋升后端开发同学的其中一个重点要求就是要能支撑高并发&#xff0c;要理解性能开销&#xff0c;会进行性能优化。而很多时候&#xff0c;如果你对Linux底层的理解不深的话&…

ContOS7 Oracle11g 安装配置

挂载镜像和配置本地yum源 mount /dev/cdrom /mnt cat <<EOF>/etc/yum.repos.d/local.repo [local] namelocal baseurlfile:///mnt gpgcheck0 enabled1 EOFSelinux配置 #selinux修改后需要重启主机生效&#xff1a; sed -i s/SELINUXenforcing/SELINUXdisabled/g /et…

python dataframe 时间格式处理

1&#xff0c;20230101 这种处理成 2023-01-01 这种 df1[apply_date] df1[apply_date].astype(str) df1[apply_dt] pd.to_datetime(df1[apply_date]).dt.strftime(%Y-%m-%d) 2、时间&#xff0c;截取年月日 如 &#xff1a;2023-01-01 12:01:01 &#xff0c;只取年月日 df[…

java中地址问题

//第一个大mapMap<String, Object> map new HashMap<>();HashMap<String, String> map2 new HashMap<>();map2.put("358","999");//给小map赋值并将其添加到map中map.put("666",map2);//获取小map并且修改对应的键值对…

基于springboot+vue框架的电影订票系统_wqc3k

随着网络科技的不断发展以及人们经济水平的逐步提高&#xff0c;计算机如今已成为人们生活中不可缺少的一部分&#xff0c;为电影订票方便管理&#xff0c;基于java技术设计与实现了一款简洁、轻便的管理系统。本系统解决了电影订票事务中的主要问题&#xff0c;包括个人中心、…

uniapp小程序订单页面UI

前言 之前用模板写了订单页面&#xff0c;由于需求改了导致这个页面做更新麻烦&#xff0c;弄了一下午&#xff0c;索性全部删除了自己写了&#xff0c;上面的tabs用的是b-ui框架写的&#xff0c;其他的都是原生写法。 &#x1f64f;如果这篇文章对你有帮助还请收藏点赞关注&…

Android Studio 和 Android Gradle 插件的已知问题

Android Studio 的已知问题 渲染 Compose 预览时出错 从 Android Studio Chipmunk 开始&#xff0c;如果您在问题面板中看到 java.lang.NoSuchFieldError: view_tree_saved_state_registry_owner 或 java.lang.ClassNotFoundException: androidx.savedstate.R$id&#xff0c;…

OpenCV库进行图像旋转、仿射变换和透视变换

#include <iostream> #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp>

SpringBoot教学补充资料3-Maven安装

Maven下载地址&#xff1a;https://maven.apache.org/download.cgi 下载后进行解压&#xff0c;记住解压路径。 mvn -v

文件共享平台Pingvin Share

本文完成于 2 月上旬。最近正好应网友要求折腾了 ClamAV&#xff0c;所以翻出来一起发了&#xff0c;可以作为 ClamAV 的一个应用示例&#xff1b; 什么是 Pingvin Share &#xff1f; Pingvin Share 是自托管文件共享平台&#xff0c;是 WeTransfer 的替代品。使用 Pingvin Sh…
最新文章