24小时热门版块排行榜    

查看: 900  |  回复: 15

Torreso9

新虫 (初入文坛)

[求助] 一个简单的程序求分析 已有2人参与

clc
clear
b=0.1;
sum=0;
N=input('请输入N的值:');
for i=1:N
    x=2.0;
    y=0.0;
    r=sqrt(x*x+y*y);
    while(r>1&&r<3)
        deg = rand(1);
        if(deg<0.25)
            x=x+b;
        elseif(deg<0.5)
            x=x-b;
        elseif(deg<0.75)
            y=y+b;
        else
            y=y-b;
        end
        r=sqrt(x*x+y*y);
        if(r<=1)
            sum=sum+4;break;
        end
        if(r>=3)
            sum=sum+6;break;
        end
    end
end

我对程序基本不太懂,论文里有个小程序,前半部分能看懂,后半部分不太明白。

发自小木虫IOS客户端
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
回帖支持 ( 显示支持度最高的前 50 名 )

smitest

木虫 (小有名气)

程序的目的不明确,尤其是+4.+6哪里,你的工作背景是啥呢

发自小木虫Android客户端
6楼2017-06-05 09:31:57
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通回帖

Torreso9

新虫 (初入文坛)

2楼2017-06-04 02:43:46
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

独孤神宇

版主 (知名作家)

【答案】应助回帖

感谢参与,应助指数 +1
clc
clear
b=0.1;
sum=0;
N=input('请输入N的值:');
for i=1:N
    x=2.0;
    y=0.0;     %% 赋初始值
    r=sqrt(x*x+y*y);
    while(r>1&&r<3)
        deg = rand(1);    %%生成 0-1之间的随机数
        if(deg<0.25)
            x=x+b;
        elseif(deg<0.5)
            x=x-b;
        elseif(deg<0.75)
            y=y+b;
        else
            y=y-b;
        end                  %%%  一系列判断 赋值
        r=sqrt(x*x+y*y);
        if(r<=1)
            sum=sum+4;break;     %%  r<=1  输出 4   
        end
        if(r>=3)
            sum=sum+6;break;       %%  r>=3  输出 6
        end
    end                                      %%  1<r<3  开始下一轮循环
end

这个给N赋个值 自己运行一下就知道了
数值计算
3楼2017-06-04 20:38:57
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

Torreso9

新虫 (初入文坛)

引用回帖:
3楼: Originally posted by 独孤神宇 at 2017-06-04 20:38:57
clc
clear
b=0.1;
sum=0;
N=input('请输入N的值:');
for i=1:N
    x=2.0;
    y=0.0;     %% 赋初始值
    r=sqrt(x*x+y*y);
    while(r>1&&r<3)
        deg = rand(1);    %%生成 0-1之 ...

谢谢,这个程序我用来答辩,我的理解是是用来产生随机数,然后求和的,我不知道如何在答辩时老师问程序我该怎么说给他听,是一句一句像你这样翻译嘛,我一辨没过就是没说好这东西,老师就说我是抄的,没有自己动脑想,换个数据。

发自小木虫IOS客户端
4楼2017-06-04 22:51:49
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

Torreso9

新虫 (初入文坛)

引用回帖:
3楼: Originally posted by 独孤神宇 at 2017-06-04 20:38:57
clc
clear
b=0.1;
sum=0;
N=input('请输入N的值:');
for i=1:N
    x=2.0;
    y=0.0;     %% 赋初始值
    r=sqrt(x*x+y*y);
    while(r>1&&r<3)
        deg = rand(1);    %%生成 0-1之 ...

i=1:N是什么意思我这里不太懂

发自小木虫IOS客户端
5楼2017-06-04 22:53:55
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

Torreso9

新虫 (初入文坛)

引用回帖:
6楼: Originally posted by smitest at 2017-06-05 09:31:57
程序的目的不明确,尤其是+4.+6哪里,你的工作背景是啥呢

4和6是圆环的边界电位,用蒙特卡洛法求电位值,就是圆环里的任意点的点位的期望可以推导出来表示电位值,等于边界电位的平均值,我是个程序渣,里面的循环我看不明白

发自小木虫IOS客户端
7楼2017-06-05 09:45:54
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

smitest

木虫 (小有名气)

如果是这样,程序最后要加个sum=sum/N.i=1:N表示循环

发自小木虫Android客户端

» 本帖已获得的红花(最新10朵)

8楼2017-06-05 10:04:07
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

smitest

木虫 (小有名气)

不是任意一点吧,这个程序是(2,0)的吧

发自小木虫Android客户端
9楼2017-06-05 10:08:39
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

Torreso9

新虫 (初入文坛)

送红花一朵
引用回帖:
8楼: Originally posted by smitest at 2017-06-05 10:04:07
如果是这样,程序最后要加个sum=sum/N.i=1:N表示循环

好的我在自己运行看看,谢谢

发自小木虫IOS客户端
10楼2017-06-05 10:22:43
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 Torreso9 的主题更新
信息提示
请填处理意见