由买买提看人间百态

topics

全部话题 - 话题: sqrt
1 2 3 4 5 6 7 8 9 10 下页 末页 (共10页)
o**a
发帖数: 76
1
来自主题: Mathematics版 - what's the genus of cos(sqrt(z))?
the roots of cos(sqrt(z)) is (n*pi+pi/2)^2
and \sum 1/(n*pi+pi/2)^2 converges
so I set
cos(sqrt(z)) = g(z) * \prod (1-z/(n*pi+pi/2)^2)
and take logrithmic derivative on both side to solve for g(z)
but I finally got g(z) = 1/cos(sqrt(z))
What's the problem here? What's the genus of cos(sqrt(z)) indeed?
w******o
发帖数: 442
2
来自主题: Mathematics版 - what's the genus of cos(sqrt(z))?
the roots of cos(sqrt(z)) is (n*pi+pi/2)^2
so cos(sqrt(z)) = prod (1-z/(n*pi+pi/2)^2)
and cos(sqrt(z))^m = prod (1-z/(n*pi+pi/2)^2) m is positive integer.
so g(z) = cos(sqrt(z))^(1-m)
Q****a
发帖数: 296
3
来自主题: JobHunting版 - java Math.sqrt 的精度是?
我用牛顿迭代法和二分法都试过, precision 最小能设成 1e-15 (或者9e-16),再
小(比如1e-16) 就死循环了 = =
可是我用precision = 1e-15做,返回结果比java里面Math.sqrt() 精度少一位 (比如
sqrt(2.0) 我return 1.414213562373095, 而java math return 1.
4142135623730951)。
请问大牛Math。sqrt怎么能精度多一位的?
s****d
发帖数: 56
4
来自主题: JobHunting版 - Sqrt牛顿法一问
Sqrt(a)可以用牛顿法公式迭代得到:
x=(x+a/x)/2.0 (1)
我用Java实现时,用了另一个“等价”公式:
x=(x*x+a)/(2.0*x) (2)
x我用的时double,leetcode测试表明公式(1)总是能收敛到一个固定的value,而公式(
2)却有时会出现最后在两个value跳跃的情况。
比如sqrt(3),用公式(1)的收敛序列是:
3.0 2.0
2.0 1.75
1.75 1.7321428571428572
1.7321428571428572 1.7320508100147274
1.7320508100147274 1.7320508075688772
1.7320508075688772 1.7320508075688772
sqrt(3),用公式(2)最后在两个值之间跳跃:
3.0 2.0
2.0 1.75
1.75 1.7321428571428572
1.7321428571428572 1.7320508100147274
1.7320508100147274 1.7320508075688772
1.732050807... 阅读全帖
w******o
发帖数: 442
5
来自主题: Mathematics版 - what's the genus of cos(sqrt(z))?
first the roots of cos(sqrt(z)) is (n*pi+pi/2)^2 not (n*pi+pi/2)
second the roots of cos(sqrt(z))^m is (n*pi+pi/2)^2 too.
so prod(1-z/(n*pi+pi/2)^2) is the root expandation of cos(sqrt(z))^m
o**a
发帖数: 76
6
来自主题: Mathematics版 - what's the genus of cos(sqrt(z))?
我知道了,我的无穷乘积是从-\infty到\infty
实际上
cos(\sqrt(z))=\prod_{1}^{\infty} (1-z/(n*pi-pi/2)^2)
所以我得到了含根号的式子:
cos(\sqrt(z))=\sqrt[\prod_{-\infty}^{\infty} (1-z/(n*pi-pi/2)^2)]
S******w
发帖数: 195
7
来自主题: Mathematics版 - Is Z[sqrt(3)] a PID?
Z[sqrt(3)] is the ring of algebraic integers in the algebraic number field Q[sqrt(3)]. Such a ring is PID if and
only if it is UFD, if and only if its class group is trivial. And Z[sqrt(3)] satisfies this condition. You can find the
proof in any fundamental book on algebraic number theory.
h**6
发帖数: 4160
8
来自主题: JobHunting版 - 关于sqrt函数超出定义域问题
看到版上有些面友被问到写sqrt函数的问题,现请教一下:
sqrt(x)
当x>=0的时候可以用牛顿公式逼近,当x<0的时候除了设定错误参数EDOM,返回值应该
是多少呢?
g*********s
发帖数: 1782
9
来自主题: JobHunting版 - sqrt的数值解法 (转载)
【 以下文字转载自 Programming 讨论区 】
发信人: gandjmitbbs (Nothing), 信区: Programming
标 题: sqrt的数值解法
发信站: BBS 未名空间站 (Wed Jan 26 18:44:22 2011, 美东)
如果用Newton's method,是否sqrt函数性质(单增且二阶连续可导)能保证任意初值
都可收敛?
c******w
发帖数: 102
10
来自主题: JobHunting版 - 写了个sqrt,请点评
if (mid * mid > i) {
high = mid;
} else {
low = mid;
}
这个地方可能出现溢出。 因为 double low = 1, high = i; 如果i的值本身比较大,
那么 mid*mide 的值很可能会比i的值大。 举个例子来说, 如果这个函数是求一个int
i的sqrt.假定 i= 2147483647, 那么你的mid值就会是 mid = low + (high - low) /
2 = 1073741823, 显然 1073741823* 1073741823的值比最大的int数要大多了。 类
似的问题也会发生到double类型上来。
比较好的办法是不是应该在初始化high的时候选择个适当大小的数字。 比如说 high =
1 << 32 如果是求double类型数字的sqrt。
c******w
发帖数: 102
11
来自主题: JobHunting版 - 写了个sqrt,请点评
if (mid * mid > i) {
high = mid;
} else {
low = mid;
}
这个地方可能出现溢出。 因为 double low = 1, high = i; 如果i的值本身比较大,
那么 mid*mide 的值很可能会比i的值大。 举个例子来说, 如果这个函数是求一个int
i的sqrt.假定 i= 2147483647, 那么你的mid值就会是 mid = low + (high - low) /
2 = 1073741823, 显然 1073741823* 1073741823的值比最大的int数要大多了。 类
似的问题也会发生到double类型上来。
比较好的办法是不是应该在初始化high的时候选择个适当大小的数字。 比如说 high =
1 << 32 如果是求double类型数字的sqrt。
o***d
发帖数: 313
12
来自主题: JobHunting版 - leetcode:这题 int sqrt(int)??!!为啥用int
难道不是float/double么?
而且test case: sqrt(3)=1 ???
sqrt(3)=1.732 ===> 2
y****n
发帖数: 743
13
来自主题: JobHunting版 - Sqrt(X) 的time complexity 是多少呢
牛顿迭代的算法要远好于Binary Search的O(lgn)。
贴个Sqrt(double)的算法。
static double Sqrt(double num)
{
double root = 1;
double diff = num - root * root;
double oldDiff = double.MaxValue;
int loop = 0;
while ((loop < 2) || (Math.Abs(diff) < Math.Abs(oldDiff)))
{
root = root + diff / root / 2;
oldDiff = diff;
diff = num - root * root;
loop++;
}
return root;
}
Q****a
发帖数: 296
14
来自主题: JobHunting版 - java Math.sqrt 的精度是?
说是implement sqrt like math.sqrt, 我就好奇问问,找不到答案就算了~~

are
k****r
发帖数: 807
15
来自主题: JobHunting版 - how to calculate sqrt double?
function double sqrt(double d, int p). p is precision option. My code is as
follows. Please let me know if you see any error. Thanks,
public static double sqrt(double d, int p) {
if (d < 0) {
return Double.NaN;
}
double prec = Math.pow(10, - p);
double start = 0;
double end = d;
while (start < end) {
double mid = start + (end - start) / 2;
if (mid == 0) {
return mid;
}
if (... 阅读全帖
p****o
发帖数: 46
16
来自主题: JobHunting版 - 问个问题 求sqrt
求sqrt, 有人说用binary search tree. 不知道具体是怎么做的。
有没有人说一说大致的思路。谢谢
K******g
发帖数: 1870
17
来自主题: JobHunting版 - 请教怎么实现sqrt?
比如说sqrt(8)
4^2 > 8
2^2 <8
3^2 >8
2.5^2 < 8
2.75^2 < 8
2.875^2 >8
2.8125^2 < 8
...
util error < a certain value
l***i
发帖数: 1309
18
来自主题: JobHunting版 - 请教怎么实现sqrt?
Search between [x,n/x] if you are to compute sqrt(n)
q**r
发帖数: 611
19
来自主题: JobHunting版 - 如何计算sqrt
Sqrt(x) = ?
Find a, b, s.t., a^2 < x < b^2.
Then Bisection between a & b.
P***P
发帖数: 1387
20
来自主题: JobHunting版 - 写了个sqrt,请点评
google quake III inverse sqrt
P***P
发帖数: 1387
21
来自主题: JobHunting版 - 写了个sqrt,请点评
google quake III inverse sqrt
f*******t
发帖数: 7549
22
来自主题: JobHunting版 - 写了个sqrt,请点评
float sqrt( float number )
{
long i;
float x2, y;
const float threehalfs = 1.5F;
x2 = number * 0.5F;
y = number;
i = * ( long * ) &y; // evil floating point
bit level hacking
i = 0x5f3759df - ( i >> 1 ); // what the fuck?
y = * ( float * ) &i;
y = y * ( threehalfs - ( x2 * y * y ) ); // 1st iteration
// y = y * ( threehalfs - ( x2 * y * y ) ); // 2nd iteration, this can
be rem... 阅读全帖
o***d
发帖数: 313
23
来自主题: JobHunting版 - leetcode:这题 int sqrt(int)??!!为啥用int

,?很多case误差为1,比如sqrt(3), leetcode: results: 1, my results: 2
c***f
发帖数: 40
24
来自主题: JobHunting版 - Sqrt(X) 的time complexity 是多少呢
Implement int sqrt(int x).
Compute and return the square root of x.
这个问题的复杂度是多少呢,
both recursive way and Newton Raphson way
c***f
发帖数: 40
25
来自主题: JobHunting版 - Sqrt(X) 的time complexity 是多少呢
这道题的 返回值是不是要满足:
Min(r^2 - X) 其中r*r <= X ?
比如 sqrt(8) 返回2 而不是3?
p****e
发帖数: 3548
26
来自主题: JobHunting版 - Sqrt(X) 的time complexity 是多少呢
N是哪个数?
如果是这样的话,算多少
class Solution {
public:
int sqrt(int x) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
if(x < 0) return -1;
if(x == 0) return 0;
stack ss;
while(x > 0){
ss.push(x%100);
x = x/100;
}
int result = 0, t;
int residue = 0;
while(!ss.empty()){
int base = 20 * result;
t = ss.top() + residue*100;
ss.pop()... 阅读全帖
r**h
发帖数: 1288
27
来自主题: JobHunting版 - F一题:double sqrt如何优化
double sqrt是说输入输出都要是double吗?
那应该用牛顿法比较好吧?
c*******y
发帖数: 1630
28
来自主题: JobHunting版 - F一题:double sqrt如何优化
很小的时候,1/sqrt(1/x) 等价于很大
x很大的时候,可以把初始值猜得小一点。 肯定排除二分,起码newton-raphson
c******a
发帖数: 789
29
来自主题: JobHunting版 - F一题:double sqrt如何优化
newton就是优化。你画一画就明白了,比2分缩得还快。
在leetcode上,2分是过不了大oj的,非要newton,哪怕leetcode是int的sqrt。
i********y
发帖数: 153
30
public double sqrt(double x) {
double epsilon = 0.000001;
if (x < 0) {
throw new IllegalArgumentException();
}

double low = 0;
double high = x;
while (Math.abs(low-high) >epsilon) {
double mid = low + (high - low) / 2;
double divident = x / mid;
if (Math.abs(divident - mid) return mid;
} else if (divident < mid) {
high = mid;
... 阅读全帖
n****e
发帖数: 678
31
double sqrt(double x) {
if (x == 0.0) {
return 0.0;
}
double curr = 1.0;
double prev = 0.0;
while (curr != prev) {
prev = curr;
curr = (x/prev + prev)/2;
}
return curr;
}
Q****a
发帖数: 296
32
来自主题: JobHunting版 - java Math.sqrt 的精度是?
电面里面试官让写返回double的,可是我回去运行程序发现我的结果比Math.sqrt 精度
少一位,咋办?
S****e
发帖数: 127
33
来自主题: JobHunting版 - java Math.sqrt 的精度是?
Did he also ask you to have the same precision as math.sqrt? If not, you are
really zuan niu jiao jian now.
b*******g
发帖数: 57
34
来自主题: JobHunting版 - double sqrt(double x)的复杂度
请问如何评估下面代码的时间复杂度?谢谢。
double sqrt(double x) {
double y = x/2;
double sq = y*y;
double epsilon = DBL_EPSILON;
while (abs(x-sq) > epsilon) {
y = (y+x/y)/2;
sq = y*y;
}
return y;
}
c**z
发帖数: 669
35
class Solution {
public:
int sqrt(int x) {
int l = 0;
int r = x;

while( l<=r)
{
int m = l + (r-l)/2;
if ( m*m == x) return m;

else if ( m*m > x)
{
r = m -1;
}
else
{
l = m + 1;
}
}

return -1;
}
};
b******g
发帖数: 3616
36
非大牛,也在刷题。
看了你的code发现两个问题:
第一是溢出问题:当x很大时,你的第一轮m*m = x^2/4,很可能就已经溢出了。我想这
是造成为什么会time limit exceeded的原因。将乘法比较改为x/m的除法比较就可以避
免这个问题。
第二个问题:我的理解是这题求的是一个近似平方根,也就是sqrt(17)应该给出的答案
是4.但你的程序似乎对非完全平方数都会返回-1
m****r
发帖数: 6639
37
sqrt 怎么能就要整数? 还是我不理解你的问题? 这个api就是给你准确结果, 你要整
数就自己cast.
g*****g
发帖数: 34805
38
这个你没有说错,如果我有10个地方,需要做这个操作。
我会自己写一个utility method包一下Math.sqrt。
原则就是看几个,一是总代码更小/更简洁,二是看
改动的时候是否要改多个地方。
g*********s
发帖数: 1782
39
来自主题: Programming版 - sqrt的数值解法
如果用Newton's method,是否sqrt函数性质(单增且二阶连续可导)能保证任意初值
都可收敛?
c********a
发帖数: 10
40
来自主题: Computation版 - 求救, 怎样证明 n^sqrt(n) 属于 O(2^n)
ln (ln (n ^ sqrt(n) ) > 2 ln(n) == ln ln (2^n)
1 2 3 4 5 6 7 8 9 10 下页 末页 (共10页)