我正在使用matplotlib绘制日志图.我的值从1到35.
fig=plt.figure(figsize=(7,7))
fig.subplots_adjust(top=0.75, right=0.9)
ax=fig.add_subplot(111)
ax.plot(x, y, marker='o', color='black', ls='')
ax.set_xscale('log')
ax.set_yscale('log')
Run Code Online (Sandbox Code Playgroud)
我想从低于1的值开始设置x轴和y轴,但是如果我使用的话
ax.axis([-10,45,-10,45])
Run Code Online (Sandbox Code Playgroud)
它不起作用.我知道这是因为我使用的是对数刻度,但有没有办法解决问题,获得我想要的轴?
我想在用 pyplot 绘制的图中有一个圆,但我需要在 x 轴上使用对数刻度。
我愿意:
ax = plt.axes()
point1 = plt.Circle((x,y), x, color='r',clip_on=False,
transform = ax.transAxes, alpha = .5)
plt.xscale('log')
current_fig = plt.gcf()
current_fig.gca().add_artist(point1)
Run Code Online (Sandbox Code Playgroud)
如您所见,我希望圆的半径等于 x 坐标。
我的问题是,如果我使用,就像这里写的那样transAxes,那么我得到的圆实际上是一个圆(否则它在x上拉伸,看起来像一个切成两半的椭圆),但x坐标是0。如果,另一方面,我使用transData代替transAxes,然后我得到了 x 坐标的正确值,但圆再次被拉伸并切成两半。
我不太介意拉伸,但我不喜欢切割,我希望它至少是一个完整的椭圆。
知道如何获得我想要的东西吗?
我正在研究lua的基本转换器,它可以将任何数字的基数转换为另一个基数.为此,我需要一个对数计算器.示例函数(其中logarithm(100, 10)等于log 10(100),等于2):
function logarithm(value, base)
... -- Algorithm here
end
print(logarithm(100, 10))
Run Code Online (Sandbox Code Playgroud)
哪个会输出:
2
Run Code Online (Sandbox Code Playgroud)
PS:我希望算法接受任何基数,任何值.
我想在两个轴上显示对数刻度的等高线图。我找到了这个很好的例子来执行这个任务:
http://plnkr.co/edit/f1VThUpkHxUzxOBXmTCr?p=preview
但是,当我将刻度更改为对数刻度时
var x = d3.scale.log()
.range([0, width]);
Run Code Online (Sandbox Code Playgroud)
代替
var x = d3.scale.linear()
.range([0, width]);
Run Code Online (Sandbox Code Playgroud)
轴只是消失了。我认为问题在于 log(0) = -infinity 但是如果我从 1 开始它不会改变任何东西。
问题是什么?
我正在尝试学习如何计算我通过 scanf 输入到我的代码中的任何数字的对数以 10 为底。我想我可以计算出 ln(a) a 是输入的数字。我有一个计算这个的工作代码;但是现在我只想将我的 ln(a) 代码输出的任何数字除以定义的 LN10。这是因为数字的自然对数除以 10 的自然对数将输出我正在努力实现的所需的以 10 为底的对数值。这是我目前的混乱情况。非常感谢任何帮助!
#define _CRT_SECURE_NO_WARNINGS
#define ALMOSTZERO 0.0000000000000000001
#define LN10 2.3025850929940456840179914546844
#include <stdio.h>
double log10(double);
double ln(double);
void main()
{
{
double x, a;
printf("Enter value: ");
scanf("%lf", &x);
while (x > 0)
{
double log10 = ln(x) * LN10;
printf("log10(%lf)=%lf\n", x, a);
printf("Enter value: ");
scanf("%lf", &x);
}
}
}
double ln(double x)
{
double sum = 0.0;
double xmlxpl = (x - 1) / (x + …Run Code Online (Sandbox Code Playgroud) 我有一个数字(64位int),并想知道它是否是10的纯函数.也就是说,1跟随0或0以上的零.有没有一种有效的方法来做到这一点,而不涉及将其变成一个字符串?
目前我这样做:
科特林
fun isPowerOf10(n: Long): Boolean {
val logN = Math.log10(myInt.toDouble())
return logN != Math.floor(logN)
}
Run Code Online (Sandbox Code Playgroud)
Java的
static boolean isPowerOf10(long n) {
double logN = Math.log10((double) myInt);
return logN != Math.floor(logN);
}
Run Code Online (Sandbox Code Playgroud)
但它失败了isPowerOf10(999_999_999_999_999_999)(和负面版本),因为在转换为double并且log10正确输出时精度损失18.0.
我知道以前也有人问过类似的问题,但我认为我的情况略有不同。我有一个具有对数值的列,我正在尝试使用以下公式反转它们:
SELECT POWER(10,CAST(9.695262723 AS NUMERIC(30,15)))
假设该值9.695262723是该列的值之一。尝试运行此查询时,我得到一个Arithmetic overflow error for type int, value = 4957500001.400178.
另一方面,相同的查询适用于较小的值,例如 SELECT POWER(10,CAST(8.662644523 AS NUMERIC(30,15)))
我如何克服该错误并计算我拥有的 log10 条目的倒数值?仅供参考,表中存在的较大值(以 log10 为单位)是12.27256096。
我发现计算矩阵的日志而不是矩阵的每个组件的唯一函数是scipy的logm()函数,但它找到了带有基数e的日志,我需要基数为2的日志.
我需要在 0.5 到 1 的对数空间中生成数字。
这段代码实现了:
IN: np.geomspace(.5, 1, num=10)
OUT: [0.5, 0.540029869446153, 0.5832645197880583, 0.6299605249474366, 0.6803950000871885, 0.7348672461377994, 0.7937005259840997, 0.8572439828530728, 0.9258747122872905, 1.0]
然而,较小的增量接近 0.5。我希望它们接近 1(因此,向后看,我只是不完全确定正确的术语是什么)。
我已经尝试过了np.geomspace(1, .5, num=10),但它只是以相反的顺序给了我相同的输出。
我正在尝试解决有关两个整数的幂的问题。问题描述如下:
给定一个适合 32 位有符号整数的正整数,找出它是否可以表示为 A^P,其中 P > 1 和 A > 0。A 和 P 都应该是整数。
示例:
输入:n = 8
输出:true
8 可以表示为 2^3输入:n = 49
输出:true
49 可以表示为 7^2
现在,我按照以下方法来解决问题。
int Solution::isPower(int A) {
if(A == 1)
{
return true;
}
for(int x = 2; x <= sqrt(A); x++)
{
unsigned long long product = x * x;
while(product <= A && product > 0)
{
if(product == A)
{
return true;
}
product = product * x;
} …Run Code Online (Sandbox Code Playgroud)