写mathematica程序求二维映射x(n+1)=y(n),y(n+1)=(a+bx(n))y(n)^2的逆映射
时间: 2023-11-18 11:04:19 浏览: 77
好的,以下是Mathematica程序求二维映射x(n+1)=y(n),y(n+1)=(a+bx(n))y(n)^2的逆映射:
首先,我们来定义这个映射和它的逆映射:
```mathematica
f[{x_, y_}, a_, b_] := {y, (a + b x) y^2};
fInverse[{x_, y_}, a_, b_] := {x, Sqrt[y/(a + b x)]};
```
其中,`f`为这个映射的函数,输入为点的坐标`(x,y)`和映射的参数`a`、`b`,输出为映射后的坐标。`fInverse`为这个映射的逆映射,输入为点的坐标`(x,y)`和映射的参数`a`、`b`,输出为逆映射后的坐标。
接下来,我们可以通过迭代来求这个映射的逆映射:
```mathematica
fIterateInverse[{x_, y_}, a_, b_, n_] :=
Nest[fInverse[#, a, b] &, {x, y}, n];
```
其中,`fIterateInverse`为迭代求逆映射的函数,输入为点的坐标`(x,y)`、映射的参数`a`、`b`、迭代次数`n`,输出为迭代后的坐标。
最后,我们可以测试一下这个程序:
```mathematica
a = 1.4;
b = 0.3;
p = {0.5, 0.5};
q = f[p, a, b];
r = fIterateInverse[q, a, b, 1000];
Norm[p - r]
```
这段代码中,我们定义了映射的参数`a`、`b`,并取初始点`(0.5,0.5)`,通过这个映射将其映射到另一个点`q`,然后再通过1000次迭代求出逆映射后的点`r`,最后计算初始点与逆映射后的点之间的距离。如果程序运行正确,输出的结果应该很接近0。
阅读全文