问题标签 [transcendental-equation]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 提高超越方程解的精度
我有一个特定的运动学作为更复杂机器的一部分,需要计算一些物理参数,这些参数很难(更像是不可能)用我可以使用的仪器以适当的精度进行测量
[运动学]
乍一看,它是一个简单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 的近似值]
近似值基于我的此类:
它通过一些初始步骤搜索单个变量的全部范围,然后找到最小偏差点。之后更改范围和步长以关闭该点的区域并递归提高精度。
解决方案本身如下所示:
这导致解决方案接近测量值,但在模拟内部,结果仍然不够准确。根据点数和角度范围,它从 0.1 毫米到 0.5 毫米不等。如果我正确测量z0
并忽略其近似值,则精度会显着提高,而y0
不会出现错误(在模拟中)并且a0
误差约为 0.3 度
Q1 如何进一步提高解决方案的准确性?
我无法增加角度范围。点数100
越多越好,但超过 150 则结果不稳定(对于某些半径,它完全关闭)。完全不知道为什么。上面的递归数6
影响不大
可以帮助根据角度距离对偏差进行加权0 degree
吗?但遗憾a(t)
的是范围并不一定包括0 degrees
所需的精度是0.01 mm
fory0,z0
和0.01 degree
fora0
Q2 有什么我错过的吗?
像错误的嵌套近似或一些数学简化或不同的方法
[笔记]
角度必须是 ,a(t)+a0
因为它是由 IRC 用 SW 复位 ( 16000 steps/round
) 测量的。当a0
我不计算振动和校准管偏心时,它会被重置,它们已经被处理过了,我的第一个目标是在没有它们的情况下在模拟中进行这项工作。管子y(t)
可以随意放置,a(t)
测量可以随意进行。
现在校准过程沿y
轴扫描点(从a0
下移动)。6
递归计算大约需要35
几秒钟(所以请耐心等待)。5
递归大约需要22
几秒钟
[edit1] 这里是如何完成模拟的
[edit2] 一些值
刚刚意识到我4
在模拟代码中只有递归来匹配输入 IRC 精度,那么必须有6
递归。更改后(也在以前的编辑中)这里有一些结果
因此,测量的精度z0
几乎在所需的范围内,但在z0
未知的情况下,误差仍然比~10
需要的大几倍。提高模拟精度对6
递归没有影响,也没有意义,因为真实输入数据也不会更准确。
这里是使用上述模拟设置进行测试的模拟/测量点:
[edit3] 进度更新
对@Ben 的一些说明
这个怎么运作
第一个图像下的彩色方程为您提供r0
了由 2 个连接90 degree
三角形组成的半径(基本三角学)
红色的东西:
y(t)
是电机位置,已知a(t)
是 IRC 状态也被称为
绿色的东西:
a0,y0,z0
是机械尺寸,已知但不精确,因此我使用已知校准管测量a(t)
不同位置的许多尺寸,并从中计算出更高的精度y(t)
r0
a0,y0,z0
进一步提高准确性
实际上,我设法通过精确测量y1=y0+z0*cos(a0)
特殊校准运动来使其更精确,而且精度0.03 mm
更高。它是a0
就位臂与管y
运动轴线的交点高度。它是从当管子从上到下时手臂第一次接触时的情况进行测量和插值的,但实际位置必须通过使用的半径重新计算a0
......因为接触点不在这个轴上......(除非r0=0.0
)。这也从校准中消除了一个近似循环,因为y1,a0,z0
它们是相互依赖的并且可以相互计算。由于不连续的测量方式,还消除了 IRC 测量中的双重混叠和a(t),y(t)
位置有助于提高精度和计算稳定性(在真机上)。我现在不能可靠地评估准确性,因为通过对许多测量周期的分析,我发现了机器上的一些机械问题,所以我等到它修好。r0=80.03 mm
无论如何,计算这两种方法的校准与模拟精度_irc_calib_n=30
现在是:
校准越大,r0
精度越低(由于a(t)
范围更有限),这是通过计算a0,y0,(y1),z1
直接测量或已知的所有内容。这已经是可以接受的,但正如我之前所写的,当机器准备好时需要检查机器。在这里要完整的是模拟测量现在的样子:
[edit4] 查看近似搜索的工作原理
matlab - Matlab中包含贝塞尔函数的矩阵的行列式形成的超越方程的根
我需要找到通过取以下矩阵的行列式形成的超越方程的根。如您所见,它充满了贝塞尔函数。我厌倦了使用“fzero”命令,但它不起作用。所有贝塞尔函数输入,如 gamma 和 eta 都是 beta 的函数。
请让我知道如何找到主题超越方程的值根。谢谢
python - (python)求解超越方程
我需要解决以下等式:
给出了 alpha 和 beta,我只需要迭代 x 直到一定程度。
我不是一个伟大的 python 程序员,但喜欢实现这个。这怎么可能?
此致
python - 用python找到超越方程的根
我必须解决以下超越方程
cos(x)/x=c
对于给定的常数 c。
例如,我在 Mathematica 中做了一个简短的代码,在那里我为常数 c 生成了一个随机值列表
比我定义的功能
并开始寻找根源:
现在我很想在 python 中编写类似的东西(可能使用 numpy?),但我真的找不到任何好的现有答案来解决这样的问题。有人可以帮忙吗?
python - 用python求解超越方程组
假设我有以下四个方程:
- cos(x)/x = a
- cos(y)/y = b
- a + b = 1
- c sinc(x) = d sinc(y)
对于未知变量x, y, a
和b
. 请注意,cos(x)/x=a
有多种解决方案。变量也类似y
。我只对x
和y
价值观感兴趣,它们是第一个积极的根源(如果重要的话)。
你可以放心地假设a, b, c
并且d
是已知的实常数,都是正数。
在 Mathematica 中,解决此问题的代码如下所示:
结果返回
虽然这很容易,但我不知道如何在 python 中做类似的事情。因此,如果有人可以指导我(或简单地告诉我如何)解决这个问题,我将不胜感激。
matlab - 在matlab中求解超越方程
寻求帮助解决Matlab中的超越方程。例如,这是一个等式:
1/2 = cos(x)cos(2x) ; 0<=x<=pi/2 求解 x:
x = acos((1/2)(秒(2x))
我尝试过使用 intersect() 以及其他各种 Matlab 函数。当我使用以下代码进行绘图时,很容易看到 ~.48 的近似值:
如何让 Matlab 返回 x == f(x) 在一定容差内的值?
c++ - 不同语言的浮点精度
我目前正在计算坐标之间的距离,并且根据所使用的语言,得到的结果略有不同。
部分计算正在计算cosine
给定的radian
. 我得到以下结果
我想尝试了解原因。如果您看过去16dp
c
,就四舍五入而言,这是唯一的“正确”答案。令我惊讶的是python
有不同的结果。
这种微小的差异目前正在被放大,并且超过 000 的位置增加了一个不小的距离。
不太确定这是如何重复的。此外,我更多地要求一个整体的答案,而不是特定于语言的答案。我没有计算机科学学位。
更新
我接受这个问题可能太宽泛了,我想我很好奇为什么我的背景不是 CS。我很欣赏评论中发布的博客链接。
更新 2
这个问题源于将服务移植nodejs
到go
. Go
甚至更奇怪,因为我现在无法运行测试,因为距离的总和随多个值而变化。
给定坐标列表并计算距离并将它们加在一起,我会得到不同的结果。我不是在问问题,但似乎很疯狂,go
会产生不同的结果。
为了完整起见,这里是我正在使用的距离计算:
matlab - 如何使用超越方程拟合绘图?
我有标准化y_val
的透射值(如方程)和入射注量值(x_val
如方程)。这是一个非常熟悉且经常使用的公式,尤其是用于非线性光学中的光学限制器的公式。
我需要拟合Normalized_T
vsEnergy per pulse
线并导出两个参数,F_sat
并且k
. 我有Normalized_T
和Energy per pulse
价值观(1X10 矩阵)。
在绘制作为实验数据的黄线时,计算红线。但我不明白为什么盒子颜色有不同的颜色。
我的问题是如何将这个超越方程拟合到数据集。到目前为止,我已经能够以数值方式求解方程并导出参数,但它似乎不是一个合适的,而是一个插值。
如果我没记错的话,参数可以用数值推导出来。但是,我的问题是拟合实际数据并且必须得出包含误差范围的拟合曲线。
我的代码:
function - 如何证明 log(1+x) 和 (1+x^2) 不相交?
我尝试转换为指数,e^(1+x^2) -x -1 = 0 然后找到矛盾但没有找到。然后我区分找到一个最小值 > 0. 2xe^(1+x^2) -1 = 0 但没有找到解决方案,因为术语 2xe^(1+x^2) 不等于 1点 x。再次,即使有任何它仍然是一个局部最小值。
matlab - 你能告诉我如何解决四个未知数的四个超越方程吗?
我尝试在 MATLAB 和 Mathematica 中求解 4 个具有 4 个未知数的方程。我使用 vpasolve 在 MATLAB 中查找未知数。这是MATLAB代码。
对于相同的方程,我在 Mathematica 中编写了以下代码。
但是两者都给了我不同的解决方案,而这些都不是必需的解决方案。我想我应该使用其他函数来求解方程。谁能帮我找出如何解决这些方程?非常感谢您的帮助。谢谢你。
编辑
如果我使用下面的代码来查找根,我可以找到解决方案,但我只想要正根。我尝试了您提到的用于获得正根的代码,但它不适用于此,我不知道为什么。你能检查一下吗?