| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1519 人关注过本帖
标题:一个很简单的程序。但觉得有问题。
取消只看楼主 加入收藏
复旦
Rank: 3Rank: 3
等 级:论坛游侠
威 望:2
帖 子:81
专家分:124
注 册:2018-10-29
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:1 
一个很简单的程序。但觉得有问题。
写了一个模拟一个粒子的布朗运动的程序。
加速度,速度,位置之间有相关的公式。(代码里)
然后对时间,做统计模拟。得到的结果应该是类似与随机行走。
但是运行这个程序,结果是粒子逐渐远离远点,而且输出的数有时候是整数。
问题在哪?

#include "stdafx.h"
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <string>
#include <ctime>
#define DT 2
#define STEP 9900
#define CON 0.5
using namespace std;

double random()
{
    static bool isFirst = true;
    if (isFirst)
    {
        isFirst = false;
        srand((unsigned)time(NULL));
    }
        double result;
        result = rand() / 10000;
        return result;
}

void initial_Array(double other[STEP])
{
    for (int i = 0; i < STEP; i++)
        other[i] = 0;
}

void calculate()
{
    int i;
    double rX[STEP], rY[STEP], rZ[STEP], vX[STEP], vY[STEP], vZ[STEP], aX[STEP], aY[STEP], aZ[STEP];
    initial_Array(rX);
    initial_Array(rY);
    initial_Array(rZ);
    initial_Array(vX);
    initial_Array(vY);
    initial_Array(vZ);
    initial_Array(aX);
    initial_Array(aY);
    initial_Array(aZ);
   
    for (i = 2; i < STEP / 2 * DT - 4; i += DT)
    {
        aX[i] = -CON * vX[i - (DT / 2)] + random();
        aY[i] = -CON * vY[i - (DT / 2)] + random();
        aZ[i] = -CON * vZ[i - (DT / 2)] + random();

        vX[i + DT / 2] = vX[i - DT / 2] + aX[i] * DT;
        vY[i + DT / 2] = vY[i - DT / 2] + aY[i] * DT;
        vZ[i + DT / 2] = vZ[i - DT / 2] + aZ[i] * DT;

        rX[i+DT]=rX[i]+vX[i+DT/2]*DT;
        rY[i+DT]=rY[i]+vY[i+DT/2]*DT;
        rZ[i+DT]=rZ[i]+vZ[i+DT/2]*DT;

    }
    for (i = 2; i < STEP * DT-2; i += (DT/2))
        cout << "Location:" << rX[i] << "    " << rY[i] << "    " << rZ[i] << "    " << endl;
}

int main()
{
    calculate();
    return 0;
}
搜索更多相关主题的帖子: include STEP double random for 
2018-11-24 01:06
复旦
Rank: 3Rank: 3
等 级:论坛游侠
威 望:2
帖 子:81
专家分:124
注 册:2018-10-29
收藏
得分:0 
我回答了你两个问题。你不跟我说点什么吗?
2018-11-24 17:31
快速回复:一个很简单的程序。但觉得有问题。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016912 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved