matlab语言转化为python语言_fsolve on python(将matlab代码转换为python代码)

我在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(msg,RuntimeWarning)

(-167792.68841940007,-1096453.7938717711)

有人说为什么它不适用于python?

EDIT =>我在程度上改变了问题的python代码.但是我没有好的价值,(python返回-4263.77780373 -272.257364385,它远离matlab值).

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值