- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我在 matlab 上有一个程序,但我想在 python 中转换,我的 matlab 代码是:
function [f]=equation1(x)
%options = optimoptions('fsolve','TolFun',1.1e-20,'TolX',1.1e-20,'maxIter',Inf,'MaxFunEvals',Inf);
c = 330 ;%speed of sound meters per second
% unknown variable :
% r1 => x(1)
% theta => x(2)
time2 = 0.455; % Microphone 1 to Microphone 2 time delay
time3 = 0.606; % Microphone 1 to Microphone 3 time delay
% gives :
r2 = 150 %time2*c;
r3 = 200 %time3*c;
r4 = 499.1; % Distance from Microphone 2 to Microphone 3
r5 = 1267.9;% Distance from Microphone 1 to Microphone 3
phi = 16.177; % Angle between Microphone 1 and Microphone 2 measured from Microphone 3
%
f(1)= (x(1) + r2)^2- (x(1)+r3)^2 -r4^2 +2*(x(1)+r3)*r4*cosd(x(2));
f(2)= x(1)^2 - (x(1)+r3)^2 - r5^2 + 2*(x(1)+r3)*r5*cosd(x(2)-phi);
我用 [x,feval]=fsolve(@equation1,[100 10]) 播放这段代码;他返回物有所值 ( 1620.7 076.4)但是在 python 上我已经制作了这个程序
from scipy.optimize import fsolve
import math
def cosd(x):
return math.cos(x * math.pi / 180);
def equations(p):
time2 = 0.455 # Microphone 1 to Microphone 2 time delay
time3 = 0.606 # Microphone 1 to Microphone 3 time delay
# gives :
r2 = 150. #time2*c;
r3 = 200. #time3*c;
r4 = 499.1 # Distance from Microphone 2 to Microphone 3
r5 = 1267.9 # Distance from Microphone 1 to Microphone 3
phi = 16.177 # Angle between Microphone 1 and Microphone 2 measured from Microphone 3
r1, theta = p
f1 = (r1 + r2)**2. -(r1+r3)**2 -r4**2 +2*(r1+r3)*r4*(cosd(theta))
f2 = r1**2 - (r1+r3)**2 - r5**2 + 2*(theta+r3)*r5*(cosd(theta-phi))
return (f1,f2)
x, y = fsolve(equations, (1000.0, 20.0), xtol=1e-06, maxfev=10000000)
print x,y, equations((x, y))
但是当我运行时,我有一个错误的错误值:
迭代没有取得很好的进展,通过 从最近五次雅可比评估中得到改进。 warnings.warn(消息,RuntimeWarning)(-167792.68841940007, -1096453.7938717711)
有人说为什么它在 python 上不起作用吗?
编辑 => 我更改了学位问题的 python 代码。但是我没有好的值(value),(python返回-4263.77780373 -272.257364385,它与matlab的值(value)相去甚远)。
最佳答案
我认为问题在于这个减法:
(theta-phi)
在 matlab 中,您要减去度数,但在 python 中,theta 的单位是 dregrees,而 phi 的单位是弧度。
关于python - fsolve on python(将matlab代码转换为python代码),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29767402/
为什么下面的代码会返回 ValueError? from scipy.optimize import fsolve import numpy as np def f(p,a=0): x,y =
我没有太多使用 Python 的经验,但我决定尝试用它来求解以下方程组: x = A * exp (x+y) y = 4 * exp (x+y) 我想求解这个系统并绘制 x 和 y 作为 A 的函数。
我用 Python 编写了一个脚本,它使用 fsolve 找到一个相当复杂的函数的零。它的工作方式如下。有一个类只是简单地存储函数的参数。该类有一个 evaluate 方法,它根据存储的参数返回一个值
有没有办法在 MATLAB 中使用 fsolve,指定解的边界?即所有解决方案变量 > 0 最佳答案 不是直接的,但解决这个问题的一个方法是在你的方程式中添加一个项来约束你的问题。 我没有优化工具箱,
每当 fsolve 完成时,它都会给出输出 Equation solved. fsolve completed because the vector of function values is nea
我正在求解一个包含许多常数的非线性方程。 我创建了一个函数来解决这样的问题: def terminalV(Vt, data): from numpy import sqrt ro_p,
我有下面的工作功能。我有一个函数,可以从中计算一阶和二阶导数。然后我需要找到一阶导数为零而第二个导数为负的 theta 值。我必须为大量点计算这个。点数等于K1和K2的长度。使用 sympy 我计算一
我想使用 fsolve 求解 alpha 和 beta(来自 Beta 发行版) import numpy as np from scipy.optimize import fsolve def me
我一直在尝试找到一种方法,使用另一个已知变量来求解函数的一个变量。例如。 def f(x,y): return x+y sol=scipy.optimize.fsolve(f(x,1),0)
有了函数 f(x,y,z),我需要求解限制 f(x,y,z) = 0,然后绘制它。我试图为每一对 (y,z) 找到 f(x,y,z) = 0 的值 x: from numpy import * fro
我试图通过在 python 2.7 中使用 scipy.optimize.fsolve 找到方程组的解。目标是计算化学系统的平衡浓度。由于问题的性质,一些常量非常小。现在对于某些组合,我确实得到了适当
我试图找到一个二维优化问题的根,形式如下(下面不是实际的方程,因为它很长,这只是问题类型的一个例子)。 def my_function(a,b): c = exp(a) + b d =
我目前正在尝试从我的代码(粘贴在下面)中找到 2 个方程的截距。我正在使用 fsolve 并且在一部分中成功地使用了它,但我无法让它在第二部分工作。 令人困惑的是,它没有显示错误,如果您将此代码粘贴到
根据我得到的帮助here我一直在尝试在我的脚本中实现它,但我未能巧妙地运行它。 我需要对 4072x3080 图像的每个像素使用此算法,整个过程大约需要 1 小时 30 秒,所以我尝试以某种方式强制它
scipy.optimize.fsolve 似乎不适用于调用自身的函数。这是一个 MWE from scipy.optimize import fsolve def f(x): if f.n=
我想使用 Python 求解 6 个非线性方程组。我发现我可以很容易地使用 scipy 的 fsolve 来求解 3 个非线性方程组。然而,当我将其扩展到更大的系统时,我发现该解并不能解决方程组。有什
我有以下功能: Eq = @(x1, x2) [x1-6, x2+3]; fsolve(Eq, [4 1]) 但出现以下错误: ??? Input argument "x2" is undefined
fsolve 从起始估计中找到非线性方程(系统)的解。我可以对我的函数调用进行矢量化,以在多个起点上使用 fsolve 并可能找到多个解决方案,如 here 所解释的那样。在 this问题描述了如何使
我正在使用此代码获取非线性函数的零点。最肯定的是,该函数应该有 1 个或 3 个零 import numpy as np import matplotlib.pylab as plt from sci
我在 matlab 上有一个程序,但我想在 python 中转换,我的 matlab 代码是: function [f]=equation1(x) %options = optimoptions('f
我是一名优秀的程序员,十分优秀!