标签: transcendental-equation

提高超越方程解的精度

我有一个特定的运动学作为一个更复杂的机器的一部分,需要计算一些非常困难(更不可能)的物理参数,用我可以使用的仪器以适当的精度进行测量

[运动学]

在此输入图像描述

首先看它是一个简单1的自由度臂(黑色),它可以围绕x轴旋转.它有一个重量,迫使它一直向上,直到它达到机械终点(角度a0)或一些半径的管(蓝色)r0.手臂旋转中心位于y0.管可以移动到任何y(t)高度.

[用法]

这用于测量管的半径以进行进一步处理.可以计算半径(通过基本测角仪),这导致图像底部的方程.常数a0,y0,z0非常难以测量(它在复杂的机械内部),因此距离的测量精度是最小值0.1 mm和角度0.1 deg,甚至是有问题的.

[校准]

所以我决定尝试从机器本身完成的一组测量中计算这些参数(自动校准).所以我有已知半径的校准管r0.所有绿色参数都可以作为常量处理.现在我沿着y轴定位管子以尽可能多地覆盖手臂的角度.遗憾的是,该范围仅为20 degrees(对于当前的机器设置)记住测量a(t)的预设y(t)...作为n点数据集.这给了我n超越方程组.从此我尝试/猜测a0,y0,z0记住最佳解决方案的"所有"可能性(最接近r0)

[近似a0,y0,z0]

近似是基于这类矿井:

//---------------------------------------------------------------------------
class approx
    {
public:
    double a,aa,a0,a1,da,*e,e0;
    int i,n;
    bool done,stop;

    approx()            { a=0.0; aa=0.0; a0=0.0; a1=1.0; da=0.1; e=NULL; e0=NULL; i=0; n=5; done=true; }
    approx(approx& a)   { *this=a; …
Run Code Online (Sandbox Code Playgroud)

c++ math geometry approximation transcendental-equation

6
推荐指数
1
解决办法
527
查看次数

用python查找先验方程的根

我必须解决以下先验方程

cos(x)/ x = c

给定常数c。

例如,我在Mathematica中编写了一个简短的代码,在其中生成了常数c的随机值列表

const = Table[RandomReal[{0, 5}], {i, 1, 10}]

(*{1.67826, 0.616656, 0.290878, 1.10592, 0.0645222, 0.333932, 3.59584, \
2.70337, 3.91535, 2.78268}*)
Run Code Online (Sandbox Code Playgroud)

比我定义的功能

f[x_, i_] := Cos[x]/x - const[[i]]
Run Code Online (Sandbox Code Playgroud)

并开始寻找根源:

Table[FindRoot[f[x, i] == 0, {x, 0.1}][[1, 2]], {i, 1, Length[const]}]
(*{0.517757, 0.947103, 1.21086, 0.694679, 1.47545, 1.16956, 0.26816, \
0.347764, 0.247615, 0.338922}*)
Run Code Online (Sandbox Code Playgroud)

现在,我想用python编程类似的东西(可能使用numpy?),但是我真的找不到像这样的问题的任何现有的好答案。有人可以帮忙吗?

python numpy numeric transcendental-equation

4
推荐指数
2
解决办法
3564
查看次数