我必须解决以下先验方程
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?),但是我真的找不到像这样的问题的任何现有的好答案。有人可以帮忙吗?
假设我有以下数组
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 循环的情况下完成,或者不?
由于符号 …
正在运行的示例非常简单易懂:
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,如此之小,但仍然出乎意料并且崩溃了我的下面的代码(这里没有公布这个问题以保持问题的清晰和简单).
我正在解决一个超越方程组:
cos(x) / x = 0.48283 + a*3.46891cos(y) / y = 0.47814 + b*28.6418a + b = 11.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) 我的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做同样的事情吗?