如何加速vpasolve?

27次观看(过去30天)
芬恩埃里森
芬恩埃里森 2021年8月12日
评论道: 芬恩埃里森2021年8月12日
我有下面这个没有解析逆的方程
在哪里 是常数。然而,我希望能够找到 对于给定条件 z
我可以用下面的代码做到这一点,
信谊z thetaz
A = 1;
B = 2;
Theta0 = 0;
eqn = (* sin (theta0) - b * sin (thetaz))。/ (a * cos (theta0) + b * cos (thetaz)) = = z;
V = 0.12;%给定z的值
S = vpasolve(eqn,z == v);
vv = S.thetaz% thetaz的关联值
vv =
但是我有成千上万的v值,所以这要花很长时间。
我尝试使用matlabFunction来加快速度,但我不确定如何输入z值来返回thetaz值。
信谊z thetaz
A = 1;
B = 2;
Theta0 = 0;
z = (a * sin (theta0) - b * sin (thetaz))。/ (a * cos (theta0) + b * cos (thetaz));
f1 = matlabFunction(z);
Check = f1(0.12)
Check = -0.0802
上面的代码认为我想从thetaz找到z,有没有一种方法从z使用matlabFunction找到thetaz ?
或者有没有加速vpasolve的方法?
多谢。

接受的答案

约翰D 'Errico
约翰D 'Errico 2021年8月12日
编辑:约翰D 'Errico 2021年8月12日
说真的,它没有解?天啊,我很惊讶。这有什么用呢?
信谊z thetaz
A = 1;
B = 2;
Theta0 = 0;
eqn = (* sin (theta0) - b * sin (thetaz))。/ (a * cos (theta0) + b * cos (thetaz)) = = z;
Thsol = solve(eqn,thetaz,“returnconditions”,真正的)
thsol =带字段的结构:
Thetaz: [3×1 sym] parameters: [1×1 sym] conditions: [3×1 sym]
thsol.thetaz
ans =
thsol.parameters
ans =
k
thsol.conditions
ans =
所以有无穷多个解。万博 尤文图斯它们之间的距离都是2*的倍数。我们可以任意选择主解,因此k==0。万博 尤文图斯
信谊k
Thsol = subs(Thsol。thetaz,k,0)
thsol =
仍然不是很有趣,但现在如果我们这样做:
thsol = matlabFunction(thsol);
thsol (0.12)
ans =
3.0818 - 0.0000i -0.1790 - 0.0000i 3.1416 + 0.6931i
现在我们找到三个简单的解,其中两个是实解,一个是复解。万博 尤文图斯
但我猜不存在解析解,因为你说过。:)
1评论
芬恩埃里森
芬恩埃里森 2021年8月12日
是的,我应该想到的!谢谢你的解释和迅速的回复。

登录评论。

更多答案(0)

s manbetx 845


释放

R2020a

社区寻宝

在MATLAB Central中找到宝藏,并发现社区如何帮助您!

开始狩猎!