MATLAB中文论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 226|回复: 4|关注: 0

[已解决] 请教一个递推运算的编程问题

[复制链接]

新手

14 麦片

财富积分


050


43

主题

90

帖子

0

最佳答案
新建位图图像.jpg
请教如图所示递推运算如何编程。
a为一个向量比如,a=[8 9 10],按照上图进行递推运算,当a范数norm(a)<1时,这个分支就停止运算。将所有最终的向量a提取出来。
谢谢!

论坛优秀回答者

权威

6241 麦片

财富积分



5

主题

7542

帖子

1431

最佳答案
  • 关注者: 316
发表于 2017-10-12 07:44:53 | 显示全部楼层
想这样吗?
  1. a=[8 9 10]
  2. while(norm(a)>1)
  3.     a=0.5*a;
  4.     a=0.6*a;
  5. end
  6. a
  7. norm(a)
复制代码

新手

14 麦片

财富积分


050


43

主题

90

帖子

0

最佳答案
 楼主| 发表于 2017-10-12 15:49:37 | 显示全部楼层
本帖最后由 star19831106 于 2017-10-12 15:59 编辑

谢谢答复!但是不是这个样子的,比这个要复杂很多。您说的这个应该相当于a=0.5*0.6*a
请高手指点一下思路!
我想实现的是,
第一步递推,获得
a=0.5*a;a=0.6*a 两个向量
第二步递推,在第一步递推的基础上,获得
a=0.5*a;a=0.5*a;a=0.5*a;a=0.6*a,四个向量这里面的a是第1步递推分别求出来的a,
如果某个分支的norm(a)<1了这个分支就不继续推导下去了,而其他的还继续推导。

谢谢!

论坛优秀回答者

入门

344 麦片

财富积分


50500


9

主题

751

帖子

69

最佳答案
  • 关注者: 11
发表于 2017-10-12 15:55:10 | 显示全部楼层 |此回复为最佳答案
star19831106 发表于 2017-10-12 15:49
谢谢答复!但是不是这个样子的,比这个要复杂很多。

哪里复杂了。。。就是个简单的递归。
  1. a = [7,8,9];
  2. f(a);
  3. function f(x)
  4. if norm(x)<1
  5.     disp(x);
  6. else
  7.     x1 = x*0.5;
  8.     x2 = x*0.6;
  9.     f(x1);
  10.     f(x2);
  11. end
  12. end
复制代码

新手

14 麦片

财富积分


050


43

主题

90

帖子

0

最佳答案
 楼主| 发表于 2017-10-12 16:03:26 | 显示全部楼层
zhangqinghao 发表于 2017-10-12 15:55
哪里复杂了。。。就是个简单的递归。

谢谢!十分感谢!我觉得也是递归,但是之前没用过递归,所以总也想不明白。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

快速回复 返回顶部 返回列表