小编skr*_*rat的帖子

用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
查看次数

从python中的嵌套数组访问元素

假设我有以下数组

test=np.asarray([
    [[ 0.26139668,  0.271985  ,  0.89647514,  0.10352486],
    [ 0.30488212,  0.31384717,  0.84089744,  0.15910256],
    [ 0.32112577,  0.32958562,  0.79216727,  0.20783273]],
    [[ 0.6017121 ,  0.60530397,  0.49432092,  0.50567908],
    [ 0.61610247,  0.61954059,  0.49649699,  0.50350301],
    [ 0.63149809,  0.63477652,  0.49945702,  0.50054298]],
    [[ 0.6017121 ,  0.60530397,  0.49432092,  0.50567908],
    [ 0.61610247,  0.61954059,  0.49649699,  0.50350301],
    [ 0.63149809,  0.63477652,  0.49945702,  0.50054298]],
    [[ 0.6017121 ,  0.60530397,  0.49432092,  0.50567908],
    [ 0.61610247,  0.61954059,  0.49649699,  0.50350301],
    [ 0.63149809,  0.63477652,  0.49945702,  0.50054298]]])
Run Code Online (Sandbox Code Playgroud)

现在我正在寻找的结果位于test. 所以基本上我需要test[0][:,0]test[1][:,0]...最后test[3][:,0]

我确定这可以在没有 for 循环的情况下完成,或者不?

由于符号 …

python arrays numpy

3
推荐指数
1
解决办法
4822
查看次数

FreePascal中Max函数的意外结果

正在运行的示例非常简单易懂:

program Project1;

uses
SysUtils, Math;

var
  fValue: double;
  fValueMax: double;
begin
  fValue := 7.0207503445953527;
  fValueMax := Max(0, fValue);
  writeln(fValue);
  writeln(fValueMax);
  readln;
end.   
Run Code Online (Sandbox Code Playgroud)

然而,结果完全出乎意料.出于某种原因,Max函数不仅返回两个参数中的较大数字,还会更改其值.

在上面的示例代码中,fValueMax的预期值恰好是fValue,而fValueMax则更大.差异大约是E-7,如此之小,但仍然出乎意料并且崩溃了我的下面的代码(这里没有公布这个问题以保持问题的清晰和简单).

delphi freepascal

2
推荐指数
1
解决办法
108
查看次数

Mathematica和Python的超越方程解决方案不匹配

我正在解决一个超越方程组:

  1. cos(x) / x = 0.48283 + a*3.46891
  2. cos(y) / y = 0.47814 + b*28.6418
  3. a + b = 1
  4. 1.02 * sinc(x) = 1.03 * sinc(y)

事实上,我尝试用两种独立的编程语言(Mathematica和Python)解决上述系统

数学

运行代码

FindRoot[{Cos[x]/x == 0.482828 + a*3.46891, 
  Cos[y]/y == 0.47814 + b*28.6418, a + b == 1, 
  1.02*Sinc[x] == 1.03*Sinc[y]}, {{x, .2}, {y, .2}, {a, 0.3}, {b, 
   0.3}}, PrecisionGoal -> 6]
Run Code Online (Sandbox Code Playgroud)

回报

{x -> 0.261727, y -> 0.355888, a -> 0.924737, b -> 0.0752628}
Run Code Online (Sandbox Code Playgroud)

蟒蛇

运行代码:

import numpy as np
from scipy.optimize …
Run Code Online (Sandbox Code Playgroud)

python wolfram-mathematica numpy root

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

使用h5py从h5文件中的同一组读取多个数据集

我的h5文件中有几个组:'group1', 'group2', ...每个组有3个不同的数据集:'dataset1', 'dataset2', 'dataset3',所有都是具有数值的数组,但数组的大小不同。

我的目标是将每个数据集从组保存到一个numpy数组。

例:

import h5py
filename = '../Results/someFileName.h5'
data = h5py.File(filename, 'r')
Run Code Online (Sandbox Code Playgroud)

现在,我可以轻松地遍历所有组

for i in range(len(data.keys())):
    group = list(data.keys())[i]
Run Code Online (Sandbox Code Playgroud)

但我不知道如何访问组中的数据集。所以我正在寻找类似MATLAB的东西:

hinfo = h5info(filename);
for i = 1:length(hinfo.Groups())
     datasetname = [hinfo.Groups(i).Name '/dataset1'];
     dset = h5read(fn, datasetname);
Run Code Online (Sandbox Code Playgroud)

dset现在哪里是数字数组。

有什么办法可以对h5py做同样的事情吗?

python matlab hdf5 h5py

0
推荐指数
1
解决办法
812
查看次数