QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2050|回复: 5
打印 上一主题 下一主题

循环求指导

[复制链接]
字体大小: 正常 放大

19

主题

5

听众

104

积分

升级  2%

  • TA的每日心情
    开心
    2012-11-14 09:11
  • 签到天数: 14 天

    [LV.3]偶尔看看II

    自我介绍
    学生
    跳转到指定楼层
    1#
    发表于 2012-8-13 10:13 |只看该作者 |倒序浏览
    |招呼Ta 关注Ta
    >> for i=1:5,
    for j=1,5,
    a(i,j)=1/(i+j-1)
    end
    end

    ans =

         5


    a =

        1.0000    0.5000    0.3333    0.2500    0.2000
        0.5000    0.3333    0.2500    0.2000    0.1667
        0.3333    0.2500    0.2000    0.1667    0.1429
        0.2500    0.2000    0.1667    0.1429    0.1250
        0.2000    0.1667    0.1429    0.1250    0.1111


    ans =

         5


    a =

        1.0000    0.5000    0.3333    0.2500    0.2000
        0.5000    0.3333    0.2500    0.2000    0.1667
        0.3333    0.2500    0.2000    0.1667    0.1429
        0.2500    0.2000    0.1667    0.1429    0.1250
        0.2000    0.1667    0.1429    0.1250    0.1111


    ans =

         5


    a =

        1.0000    0.5000    0.3333    0.2500    0.2000
        0.5000    0.3333    0.2500    0.2000    0.1667
        0.3333    0.2500    0.2000    0.1667    0.1429
        0.2500    0.2000    0.1667    0.1429    0.1250
        0.2000    0.1667    0.1429    0.1250    0.1111


    ans =

         5


    a =

        1.0000    0.5000    0.3333    0.2500    0.2000
        0.5000    0.3333    0.2500    0.2000    0.1667
        0.3333    0.2500    0.2000    0.1667    0.1429
        0.2500    0.2000    0.1667    0.1429    0.1250
        0.2000    0.1667    0.1429    0.1250    0.1111


    ans =

         5


    a =

        1.0000    0.5000    0.3333    0.2500    0.2000
        0.5000    0.3333    0.2500    0.2000    0.1667
        0.3333    0.2500    0.2000    0.1667    0.1429
        0.2500    0.2000    0.1667    0.1429    0.1250
        0.2000    0.1667    0.1429    0.1250    0.1111

    为什么a(i,j)=1/(i+j-1)后面不加分号,就会产生这样的结果???
    i=1 运行五次 i=2 运行五次 。。。。
    之后它输出怎么控制的,怎么重复了5次相同的,这里的ans 默认为什么?
    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
    gaoxian 实名认证       

    2

    主题

    6

    听众

    1265

    积分

  • TA的每日心情
    难过
    2012-10-26 11:15
  • 签到天数: 58 天

    [LV.5]常住居民I

    新人进步奖

    群组Matlab讨论组

    群组建模军团

    群组数学建摸协会

    群组数模应用

    群组B题讨论群

    你这里的j=1:5还是j=1和5?
    j=1,5,这行导致了i每循环一次就会出现一个ans=5
    如果这样写
    for i=1:5
    for j=1:5
    a(i,j)=1/(i+j-1)
    end
    end那么每循环一次就会出现一次a=
    如果加了分号,那么在最后再输出一遍a就可以得到最后结果
    a =

        1.0000    0.5000    0.3333    0.2500    0.2000
        0.5000    0.3333    0.2500    0.2000    0.1667
        0.3333    0.2500    0.2000    0.1667    0.1429
        0.2500    0.2000    0.1667    0.1429    0.1250
        0.2000    0.1667    0.1429    0.1250    0.1111
    已有 1 人评分体力 收起 理由
    darker50 + 4 感谢指导会员!!

    总评分: 体力 + 4   查看全部评分

    回复

    使用道具 举报

    19

    主题

    5

    听众

    104

    积分

    升级  2%

  • TA的每日心情
    开心
    2012-11-14 09:11
  • 签到天数: 14 天

    [LV.3]偶尔看看II

    自我介绍
    学生
    gaoxian 发表于 2012-8-13 10:26
    你这里的j=1:5还是j=1和5?
    j=1,5,这行导致了i每循环一次就会出现一个ans=5
    如果这样写

    谢谢您的回复,我这里可能抄错了,j=1:5。
    但是我这里没有搞懂的是2个问题:假设这里的j=1,5的时候

    第一个:
    这里的ans 应该是默认变量名,最近一次操作运算结果。那么最后一次运算的结果应该是a(i,j)啊,怎么是j=5吗???这里ans不应该选取a(i,j)的最后值嘛(当i=5,j=5的时候)

    第二个:这里为什么会出现5个 ans ,不是应该出现2*5 个ans吗?

    期待回复!
    回复

    使用道具 举报

    gaoxian 实名认证       

    2

    主题

    6

    听众

    1265

    积分

  • TA的每日心情
    难过
    2012-10-26 11:15
  • 签到天数: 58 天

    [LV.5]常住居民I

    新人进步奖

    群组Matlab讨论组

    群组建模军团

    群组数学建摸协会

    群组数模应用

    群组B题讨论群

    爱的侍者 发表于 2012-8-13 17:19
    谢谢您的回复,我这里可能抄错了,j=1:5。
    但是我这里没有搞懂的是2个问题:假设这里的j=1,5的时候

    第一个问题:你这里j=1,5,并不是j=1和j=5其实你这样写的作用是这个意思
    for i=1:5
    for j=1
    5
    a(i,j)=1/(i+j-1)
    end
    end
    也就是说其实j是一个确定的值为1,然而i每循环一次都会输出一次ans=5,这个5并不是j=5
    ans是matlab中默认的结果变量. 每次matlab进行运算后, 结果都要储存在指定的变量中. 如果你只是输入表 达式, 却不指定把表达式的运算结果储存在那个变量里面, 那么matlab就自 动地将结果储存在ans变量中. 直到下一次不带指定存储变量的运算结束前, ans中 所储存的值不变.
    意思就是你现在程序中有两个表达式5和1/(i+j-1),但是第一个表达式5你没有存储到变量里,那么就直接存在ans中,第二个表达式你将结果存在了a里,所以循环结束时候ans=5而不是你说的a的最后值。
    第二个问题:你这里的j=1,5,应该你运行的程序就是这样写的,也许你的本意是j=1:5,让j循环的,但是由于疏忽把冒号写成了逗号,这样就只循环i=1:5循环五次,其实j这时候根本就不循环,所以就会出现5个ans,还是那个理由就是j=1,5,不是j=1和j=5,可能我一楼的疑问让你误解了。
    这样回复应该能明白了吧。。。
    回复

    使用道具 举报

    19

    主题

    5

    听众

    104

    积分

    升级  2%

  • TA的每日心情
    开心
    2012-11-14 09:11
  • 签到天数: 14 天

    [LV.3]偶尔看看II

    自我介绍
    学生
    gaoxian 发表于 2012-8-13 18:24
    第一个问题:你这里j=1,5,并不是j=1和j=5其实你这样写的作用是这个意思
    for i=1:5
    for j=1

    感谢您的如此详细的回复~ 完全明白啦 谢谢~!~
    回复

    使用道具 举报

    gaoxian 实名认证       

    2

    主题

    6

    听众

    1265

    积分

  • TA的每日心情
    难过
    2012-10-26 11:15
  • 签到天数: 58 天

    [LV.5]常住居民I

    新人进步奖

    群组Matlab讨论组

    群组建模军团

    群组数学建摸协会

    群组数模应用

    群组B题讨论群

    爱的侍者 发表于 2012-8-14 10:57
    感谢您的如此详细的回复~ 完全明白啦 谢谢~!~

    互相学习~~~
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册地址

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

    关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

    手机版|Archiver| |繁體中文 手机客户端  

    蒙公网安备 15010502000194号

    Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

    GMT+8, 2025-5-26 09:17 , Processed in 0.907095 second(s), 81 queries .

    回顶部