公告:本站正式转型为非交互式静态网站!
转型:本站将通过笔记和博客的形式继续为大家服务,关于 Mathematica 问答服务请移步至QQ群:365716997
联系:如有问题请联系QQ群管理员,或发送邮件至:lixuan.xyz@qq.com。
感谢:最后非常感谢大家多年来的支持与帮助!
参考《互联网跟帖评论服务管理规定》《中华人民共和国网络安全法》《网络信息内容生态治理规定》《互联网用户账号信息管理规定》

—— 2022-11-27

欢迎来到 Mathematica 问答社区

提问时请贴上文本代码

语法高亮:在编辑器中点击

被禁止的话题:广告破解

请阅读:《提问的智慧》

备用域名:mma.ooo

支持LaTex数学公式
行内公式标识符:\$ 或“$\backslash ($”+“$\backslash )$”,
行间公式标识符:\$\$ 或 “$\backslash [$”+“$\backslash ]$”

社区建议QQ群:365716997

分类

0 投票
1.3k 浏览
(*1、提示标题中的错误后求Mf[[3]]也可以得到一个结果,但是似乎数值不对。 2、最后还要以Mi[[i]]为横坐标,Mf[[i]]为纵坐标作图拟合,这一步不知道应该用什么命令。 3、因为对mma了解很少,所以为了减少可能的报错,语句写的复杂,希望懂的前辈指教一二。 谢谢!*)

ClearAll;
Mi=Table[1,44];
g=7.25;
z13=2*10^9;
zi=10^10;
Mf=Table[1,44];
Do[{mi=10^(i+17);Mi[[i]]=mi;A=NDSolveValue[{M'[a]==M[a]^2*(2*10^(-68)+7*10^(-59)*g/a^3,M[1/(1+zi)]==mi},M,{a,(1/(1+zi),1/(1+z13)}];mf=A[1/(1+z13)]-mi;Mf[[i]]=mf},{i,1,44,1};
Plot

 

分类:矩阵 | 用户: 大胖 (31 分)
可是你的代码格式方面从头错到尾啊。。根本就不能运行。。

1个回答

0 投票
Do[{mi = 10^(i + 17); Mi[[i]] = mi; 
  A = NDSolveValue[{M'[a] == M[a]^2*(2*10^(-68) + 7*10^(-59)*g/a^3), 
     M[1/(1 + zi)] == mi}, M, {a, (1/(1 + zi)), 1/(1 + z13)}]; 
  mf = A[1/(1 + z13)] - mi; Mf[[i]] = mf}, {i, 1, 44, 1};]






Do::iterb: 迭代器 {{i,1,44,1};} 没有适当的边界. >>





Do[{mi = 10^(i + 17); Mi[[i]] = mi; 
  A = NDSolveValue[{Derivative[1][M][a] == 
      M[a]^2 (2/10^68 + (7 g)/(10^59 a^3)), M[1/(1 + zi)] == mi}, 
    M, {a, 1/(1 + zi), 1/(1 + z13)}]; mf = A[1/(1 + z13)] - mi; 
  Mf[[i]] = mf}, {{i, 1, 44, 1};}]

我适当的把你的括号给补充完整,但是并不明白你是要做什么,而且代码有问题。

用户: 落雨流觞 (1.1k 分)
谢谢你的回答,我从程序里截取了一部分出来,可能少写了,原代码太长了。这部分是这样的,我想从mi=10^18 到10^61计算每个mf值放在矩阵Mf[[i]]里,然后再画出Mf随Mi的变化曲线。我试过,Do循环中间的部分可以得到结果,但是外面加个Do循环就会错误,我试过有简到繁一句句往循环里加语句,应该是NDSolveValue那句的问题,如果把A的表达式改成18×z-mi也不会报错。多谢回答,以前没学过mma,用到才边查边写,所以希望有什么其他问题也请明确指出,语句繁琐类似幼稚错误也麻烦指教,谢谢。
...