![](https://iknow-base.cdn.bcebos.com/lxb/notice.png)
mathematica数据导出,求助高手
如图所示这里,我想把图上x[t]的实部(蓝色线),按t从0到1,存到ksi_r.data中,该怎么办?求助高手...
如图所示
这里,我想把图上x[t]的实部(蓝色线),按t从0到1,存到ksi_r.data中,该怎么办?
求助高手 展开
这里,我想把图上x[t]的实部(蓝色线),按t从0到1,存到ksi_r.data中,该怎么办?
求助高手 展开
展开全部
假定你有这样一个方程,直接调用NDSolve求解,解出来的结果可以画图
sol = NDSolve[{x'[t] == -y[t] - x[t]^2, y'[t] == 2 x[t] - y[t]^3, x[0] == y[0] == 1}, {x, y}, {t, 20}];Plot[Evaluate[{x[t], y[t]} /. sol], {t, 0, 20}]
但是x[t],y[t]没有函数表达式,得到的是这样的结果
InterpolatingFunction[{{0.,20.}},<>]
这种叫做插值函数。
现在你要把x[t]存储下来,因为没有表达式,所以不能直接保存。应该是按t从0到1,把x[t]的值存储下来,先求插值插值函数的值,再保存。
data = Table[{t, (x[t] /. s)[[1]]}, {t, 0, 20, 0.1}];Export["d:/ksi_r.dat", data]
你要恢复这个函数的时候,就这样
restore = Import["d:/data.dat"];
然后再重新计算插值函数ifun,画图,跟原来的x[t]基本上一模一样。
ifun = Interpolation[restore];Plot[ifun[x], {x, 0, 20}]
sol = NDSolve[{x'[t] == -y[t] - x[t]^2, y'[t] == 2 x[t] - y[t]^3, x[0] == y[0] == 1}, {x, y}, {t, 20}];Plot[Evaluate[{x[t], y[t]} /. sol], {t, 0, 20}]
但是x[t],y[t]没有函数表达式,得到的是这样的结果
InterpolatingFunction[{{0.,20.}},<>]
这种叫做插值函数。
现在你要把x[t]存储下来,因为没有表达式,所以不能直接保存。应该是按t从0到1,把x[t]的值存储下来,先求插值插值函数的值,再保存。
data = Table[{t, (x[t] /. s)[[1]]}, {t, 0, 20, 0.1}];Export["d:/ksi_r.dat", data]
你要恢复这个函数的时候,就这样
restore = Import["d:/data.dat"];
然后再重新计算插值函数ifun,画图,跟原来的x[t]基本上一模一样。
ifun = Interpolation[restore];Plot[ifun[x], {x, 0, 20}]
追答
你要保存实部,就
data = Table[{t, (Re[x[t]]/.First[sol])[[1]] }, {t, 0, 20, 0.1}];Export["d:/ksi_r.dat", data]
你自己试一下这个
{0.1, (Re[x[0.1]]/.First[sol])}
就明白了,多套了一层括号
{0.1, (Re[x[0.1]]/.First[sol])[[1]]}
这样就把那层括号给去掉了。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询