找到给定两个点的指数函数
find exponential function given two points
我知道我可以使用下面的命令求解最大值方程,但我该如何求解两个不同的方程。
kill(all);
r:.5; a:1; b:-5.7; theta:theta; solve(a*e^(b*theta)=r,theta);
tex(''%);
我想在给定两个点的情况下得到指数函数的方程。我该怎么做。示例点 1 在 (2,12),点 2 在 (8,768)
Maxima 需要一些帮助来解决这个问题,但这是可以做到的。从表达问题数据开始。
(%i1) [x1,y1]:[2,12];
(%o1) [2, 12]
(%i2) [x2,y2]:[8, 768];
(%o2) [8, 768]
(%i3) eq1:y1 = a*exp(b*x1);
2 b
(%o3) 12 = a %e
(%i4) eq2:y2 = a*exp(b*x2);
8 b
(%o4) 768 = a %e
现在尝试求解 a 和 b 的 eq1 和 eq2。
(%i5) solve([eq1, eq2], [a, b]);
(%o5) []
嗯,这不令人满意。我猜如果我们取对数使其呈线性,Maxima 可以解决它。
(%i6) log([eq1, eq2]);
2 b 8 b
(%o6) [log(12) = log(a %e ), log(768) = log(a %e )]
应用logexpand
标志来简化。注意%
表示上一个结果。
(%i7) %, logexpand;
2 b 8 b
(%o7) [log(12) = log(a %e ), log(768) = log(a %e )]
嗯,那没有做到。 logexpand
有多种形式,换一种试试
(%i8) %, logexpand=super;
(%o8) [log(12) = 2 b + log(a), log(768) = 8 b + log(a)]
好的,很好。现在尝试解决它。
(%i9) solve (%, [a, b]);
(%o9) []
好吧,还是不行。但是我看到它在 log(a)
中是线性的,所以改为解决这个问题。
(%i10) solve (%o8, [log(a), b]);
4 log(12) - log(768) log(12) - log(768)
(%o10) [[log(a) = --------------------, b = - ------------------]]
3 6
太棒了。以下是数值:
(%i11) float (%);
(%o11) [[log(a) = 1.09861228866811, b = 0.6931471805599454]]
我会尽量简化精确值。
(%i12) %o10, logexpand=super;
4 log(12) - log(768) log(12) - log(768)
(%o12) [[log(a) = --------------------, b = - ------------------]]
3 6
嗯,没用。我会尝试另一个功能:
(%i13) radcan(%);
(%o13) [[log(a) = log(3), b = log(2)]]
好吧,这是一点点工作,但无论如何可能会有帮助。
我知道我可以使用下面的命令求解最大值方程,但我该如何求解两个不同的方程。
kill(all);
r:.5; a:1; b:-5.7; theta:theta; solve(a*e^(b*theta)=r,theta);
tex(''%);
我想在给定两个点的情况下得到指数函数的方程。我该怎么做。示例点 1 在 (2,12),点 2 在 (8,768)
Maxima 需要一些帮助来解决这个问题,但这是可以做到的。从表达问题数据开始。
(%i1) [x1,y1]:[2,12];
(%o1) [2, 12]
(%i2) [x2,y2]:[8, 768];
(%o2) [8, 768]
(%i3) eq1:y1 = a*exp(b*x1);
2 b
(%o3) 12 = a %e
(%i4) eq2:y2 = a*exp(b*x2);
8 b
(%o4) 768 = a %e
现在尝试求解 a 和 b 的 eq1 和 eq2。
(%i5) solve([eq1, eq2], [a, b]);
(%o5) []
嗯,这不令人满意。我猜如果我们取对数使其呈线性,Maxima 可以解决它。
(%i6) log([eq1, eq2]);
2 b 8 b
(%o6) [log(12) = log(a %e ), log(768) = log(a %e )]
应用logexpand
标志来简化。注意%
表示上一个结果。
(%i7) %, logexpand;
2 b 8 b
(%o7) [log(12) = log(a %e ), log(768) = log(a %e )]
嗯,那没有做到。 logexpand
有多种形式,换一种试试
(%i8) %, logexpand=super;
(%o8) [log(12) = 2 b + log(a), log(768) = 8 b + log(a)]
好的,很好。现在尝试解决它。
(%i9) solve (%, [a, b]);
(%o9) []
好吧,还是不行。但是我看到它在 log(a)
中是线性的,所以改为解决这个问题。
(%i10) solve (%o8, [log(a), b]);
4 log(12) - log(768) log(12) - log(768)
(%o10) [[log(a) = --------------------, b = - ------------------]]
3 6
太棒了。以下是数值:
(%i11) float (%);
(%o11) [[log(a) = 1.09861228866811, b = 0.6931471805599454]]
我会尽量简化精确值。
(%i12) %o10, logexpand=super;
4 log(12) - log(768) log(12) - log(768)
(%o12) [[log(a) = --------------------, b = - ------------------]]
3 6
嗯,没用。我会尝试另一个功能:
(%i13) radcan(%);
(%o13) [[log(a) = log(3), b = log(2)]]
好吧,这是一点点工作,但无论如何可能会有帮助。