pstate0 vid数值意义_天体运动的简单数值计算

(建议阅读全文)

预备知识 万有引力, 弹簧振子受迫运动的简单数值计算    下面我们来用一种极其简单的算法对单个天体在中心天体的万有引力作用下的运动进行数值计算. 事实上该问题存在解析解(见开普勒三定律), 所以以下的算法只是用于演示数值解常微分方程的大致原理. 这种方法可以轻易地拓展到多个天体的情况, 而多体情况没有一般的解析解. 一种效率更高的常见常微分方程数值算法可参考 “四阶龙格库塔法”.    直角坐标系中, 设中心天体质量为

, 固定在原点不动.根据牛顿万有引力定律,质量为
的行星受到中心天体的力为

其中

为行星的位矢(设行星在
平面上运动). 根据牛顿第二定律, 加速度为

以及
, 其中
看成
的函数. 考虑到
, 可以列出二阶微分方程组(变量上方两点表示关于时间的二阶导数)

假设已知初值条件

. 下面用 “弹簧振子受迫振动的简单数值计算” 中类似的方法求接下来行星的运动轨迹.    1.将初始条件代入式 3 ,得到初始加速度

  

2.设经过一段极微小的时间步长

(例如
, 数值越小误差越小), 根据微分近似(微分近似在这里的物理意义是在
内速度和加速度都近似为常数)

  

3.把

再次代入式 3 , 得到
, 再次利用微分近似求出
如此循环下去就可以得到每隔
的数值解. 代码 1:kepler.m
% 参数设定
GM = 1; % 万有引力常数乘以中心天体质量
x0 = 1; y0 = 0; % 初始位置
vx0 = 0; vy0 = 0.7; % 初始速度
T = 4; Nstep = 4000; % 总时间和步数
dt = T/Nstep; % 步长% 矩阵预赋值
x = nan(Nstep,1); y = x;
x1 = x;  y1 = x;
x2 = x; y2 = x;% 初始位置,速度,加速度
x(1) = x0; y(1) = y0; % 初位置
x1(1) = vx0; y1(1) = vy0; % 初速度
x2(1) = -GM*x(1)/(x(1)^2+y(1)^2)^(3/2); % 代入方程得到 x''(0)
y2(1) = -GM*y(1)/(x(1)^2+y(1)^2)^(3/2); % 代入方程得到 y''(0)% 迭代循环
for ii = 2:Nstepx(ii) = x(ii-1)+x1(ii-1)*dt; % x的微分y(ii) = y(ii-1)+y1(ii-1)*dt; % y的微分x1(ii) = x1(ii-1)+x2(ii-1)*dt; % x' 的微分y1(ii) = y1(ii-1)+y2(ii-1)*dt; % y' 的微分x2(ii) = -GM*x(ii)/(x(ii)^2+y(ii)^2)^(3/2); % 代入微分方程求出 x''y2(ii) = -GM*y(ii)/(x(ii)^2+y(ii)^2)^(3/2); % 代入微分方程求出 y''
end% 画图
plot(x,y); % 画行星轨道
axis equal; % xy坐标长度一致
hold on; % 继续画图
scatter(0,0); % 标出中心天体程序运行结果如图 1  所示. 注意行星轨道并不是一个闭合的椭圆, 这是由于这种算法误差较大, 为了减小误差, 可以增加程序中 Nstep 的值. 

b2951512fc4216fcf3de0a9a80dc73aa.png
图 1:运行结果

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

集合框架

集合框架包含的内容: 集合框架的接口: List接口实现类 ArrayList 1 package com.jredu.ch01;3 import java.util.ArrayList;5 import java.util.List;7 public class ArrayListTest {9 public static void main(String[] args) { 10 // TODO…

使用CSS实现无滚动条滚动

我们都知道,撸页面的时候当我们的内容超出了我们的div,往往会出现滚动条,影响美观。 尤其是当我们在做一些导航菜单的时候。滚动条一出现就破坏了UI效果。 我们不希望出现滚动条,也不希望超出去的内容被放逐,就要保留…

Java中的类型安全的空集合

我之前曾在Java Collections类的实用程序上进行过博客撰写,并且特别地在使用Usings Collections Methods上的博客emptyList(),emptyMap()和emptySet()上进行了博客撰写。 在本文中&a…

php cpu mac,PHP 获得计算机的唯一标识[CPU,网卡 MAC地址]

//获取电脑的CPU信息function OnlyU(){$a ;$b array();if(function_exists(exec)){if(mailto:!exec( /all",$b)){return false;}}elseif(function_exists(system)){ob_start();if(mailto:!system( /all")){return false;}else{}$b ob_get_contents();ob_end_clean…

剑指offer二十二之从上往下打印二叉树

一、题目 从上往下打印出二叉树的每个节点,同层节点从左至右打印。 二、思路 二叉树的层次遍历,可以借助队列实现。具体思路详见注释。 三、代码 import java.util.ArrayList; import java.util.LinkedList; /** public class TreeNode {int val 0;Tree…

arduino i2c 如何写16位寄存器_arduino入门

硬件:Arduino Uno是基于ATmega328P(数据表)的微控制器板。它具有14个数字输入/输出引脚(其中6个可用作PWM输出),6个模拟输入,工作电压5v,输入电压7-12v。串行:0(RX)和1(TX)用于接收(RX)和发送(TX)TTL串行数据。这些引脚…

原生JS实现banner图的滚动与跳转

HTML部分&#xff1a; <div id"banner"><!--4张滚动的图片--><div id"inside"><img src"../../img/14072415363339_0.jpg"><img src"../../img/14072415383924_0.jpg" id"img2" /><img sr…

Java中的紧凑堆外结构/组合

在上一篇文章中&#xff0c;我详细介绍了代码对主内存的访问方式的含义。 从那时起&#xff0c;我对使用Java可以做什么以实现更可预测的内存布局有很多疑问。 有些模式可以使用数组支持的结构来应用&#xff0c;我将在另一篇文章中讨论。 这篇文章将探讨如何模拟Java中非常缺少…

java字符集编码是,java字符集与编码有关问题

java字符集与编码问题没想到自己的第一篇javaeye博客就是让人头痛的java字符集转码问题&#xff0c;下面是我个人的一些认识与网上收集的代码。在java中String在JVM里是unicode的&#xff0c;任何byte[]到String以及String到byte[]都涉及到字符集编码转换。基本规则是&#xff…

mysql序列号生成_一文看懂mycat的6种全局序列号实现方式

概述在实现分库分表的情况下&#xff0c;数据库自增主键已无法保证自增主键的全局唯一。为此&#xff0c;MyCat 提供了全局sequence&#xff0c;并且提供了包含本地配置和数据库配置等多种实现方式。下面对这几种实现方式做一下介绍。1、本地文件方式原理&#xff1a;此方式 My…

android.graphics.Paint方法setXfermode (Xfermode x...

[java] view plaincopymPaint new Paint(); mPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SCREEN)); 常见的Xfermode&#xff08;SRC为原图&#xff0c;DST为目标图&#xff09;&#xff0c;把代码中的SRC_IN换成下图指定的模式就会出现对应的效果图…

从零开始的全栈工程师——html篇1

全栈工程师也可以叫web 前端 H5主要是网站 app 小程序 公众号这一块 HTML篇 html(超文本标记语言&#xff0c;标记通用标记语言下的一个应用。) “超文本”就是指页面内可以包含图片、链接&#xff0c;甚至音乐、程序等非文字元素。 超文本标记语言的结构包括“头”部分&am…

二分+树的直径 [Sdoi2011]消防

问题 D: [Sdoi2011]消防 时间限制: 1 Sec 内存限制: 512 MB 提交: 12 解决: 6 [提交][状态][讨论版] 题目描述 某个国家有n个城市&#xff0c;这n个城市中任意两个都连通且有唯一一条路径&#xff0c;每条连通两个城市的道路的长度为zi(zi<1000)。 这个国家的人对火焰…

使用MRUnit测试Hadoop程序

这篇文章将略微绕开使用MapReduce实现数据密集型处理中的模式&#xff0c;以讨论同样重要的测试。 汤姆•惠勒 &#xff08; Tom Wheeler&#xff09;在纽约2012年Strata / Hadoop World会议上参加的一次演讲给了我部分启发。 处理大型数据集时&#xff0c;想到的并不是单元测试…

android之 TextWatcher的监听

以前用过android.text.TextWatcher来监听文本发生变化&#xff0c;但没有仔细去想它&#xff0c;今天兴致来了就发个疯来玩玩吧&#xff01; 有点担心自己理解错&#xff0c;所以还是先把英文API解释给大家看看 1、什么情况下使用了&#xff1f; When an object of a type is a…

php 秒杀并发怎么做,PHP实现高并发下的秒杀功能–Laravel

namespace App\Http\Controllers\SecKill;use App\Http\Controllers\Controller;use Exception;use Illuminate\Support\Facades\DB;use Illuminate\Support\Facades\Redis;class SecKillController extends Controller{/*** 往redis的隊列中添加庫存(用於測試的數據)**/public…

苹果mp3软件_优秀的Apple音乐转换器,将任何iTunes M4P,AAX,AA转换为MP3

Macsome iTunes Converter是一款优秀的音频转换工具&#xff0c;这款音频转换软件能够帮助大家快速进行音频格式转换&#xff0c;使得您可以自由的播放和分享自己喜爱的音频文件。同时这款软件与大多数音频转换软件一样&#xff0c;将受到保护DRM的Apple音乐转换转换成MP3, AAC…

Vuejs开发环境搭建及热更新

一、安装NPM 1.1最新稳定版本&#xff1a; npm install vue 二、命令行工具安装 国内速度慢&#xff0c;使用淘宝镜像&#xff1a; npm install -g cnpm --registryhttps://registry.npm.taobao.org 注意&#xff1a;以后使用npm的地方就替换成cnpm 1、全局安装vue-vli ​ …

线索二叉树的C语言实现

#include "string.h"#include "stdio.h" #include "stdlib.h" #include "io.h" #include "math.h" #include "time.h" #define OK 1#define ERROR 0#define TRUE 1#define FALSE 0 #define MAXSIZE 100 /* 存储空…

发送带有接缝的活动邀请

这些天来&#xff0c;我的一位同事在使用带有接缝&#xff08;2.x版&#xff09;的邮件模板发送事件邀请时遇到了问题。 从根本上讲&#xff0c;这不是一个艰巨的任务&#xff0c;因此我将简要说明使用接缝邮件模板发送事件邀请需要做什么。 发送邮件邀请时&#xff0c;您需要发…