简单问题,意在给分!

Lotsof 2002-03-31 07:22:44
如何用C语言编一 个sqrt()的函数?
自定义函数!
...全文
33 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
Jupin 2002-05-08
  • 打赏
  • 举报
回复
如果你仅想得到平方根的整数,有这么的一个算法可供参考:

void main()
{
int a, result=0;
int i=1;
scanf("a=%d", &a);
while(a>=0)
{
a-=i;
i+=2;
result++;
}
printf("sqrt(a)=%d", result);
return;
}



colacoca 2002-05-08
  • 打赏
  • 举报
回复
to:LeeMaRS(小菜虎)
哈哈,我是delphi来的

快速弦截法和你的牛顿法差不多啊,

牛顿法突出优点是收敛的速度快。但它有个明显的缺点:需要计算导数f'(x),如果函数f(x)比较复杂,使用牛顿法是不方便的。
为了避开导数计算,就用差商:
(f(Xk)-f(X0))/(Xk-X0)
......
用以替换牛顿公式中得导数f'(Xk)
最后得

Xk+1=Xk-f(Xk)*(Xk-X0)/(f(Xk)-f(X0))
求得的Xk+1其实就是弦线与X轴的交点,所以上面的算法称弦截法

然后又是一阵推导.....
......
最后,为了加快收敛速度,改用差商
(f(Xk)-f(Xk-1))/(Xk-Xk-1)
得出快速弦截法的公式:
Xk+1=Xk-f(Xk)*(Xk-Xk-1)/(f(Xk)-f(Xk-1))

注:上面的Xk,Xk+1,Xk-1中的k,k-1,k+1都是X的下标,不是变量Xk减去1的意思

所以才有我的
x1=x0;
x0=x;
x=x0-(x0-x1)*(x0^2-A)/((x0^2-A)-(x1^2-A));
这3个式子

(呵呵,上面的话,抄了书本了,哈哈哈<<工程数学--算法语言*计算方法>>高等教育出版社1978年8月第一版,1999.7第27次印刷,RMB8.20元)


sdav 2002-05-07
  • 打赏
  • 举报
回复
#include "iostream.h"
void main()
{
float A,x,x0;
A=25;
x=A;
do
{
x0=x;
x=(x0+A/x0)/2;
}while (x<x0);
cout<<x;
}
LeeMaRS 2002-04-05
  • 打赏
  • 举报
回复
To colacoca :
能介绍一下你的解法吗?
你的程序似乎是Pascal和C++的结合体啊...
jwyhit 2002-04-04
  • 打赏
  • 举报
回复
colacoca :
谢谢你的想法!
nicholas_87 2002-04-04
  • 打赏
  • 举报
回复
gz
挺拔的劲松 2002-04-04
  • 打赏
  • 举报
回复
gz

但我想既然有现成的函数何必自找麻烦呢?
yyt7529 2002-04-04
  • 打赏
  • 举报
回复
这个问题有这么难吗,计算器是怎么求的啊
colacoca 2002-04-04
  • 打赏
  • 举报
回复
#include "iostream.h"
void main()
{
float A,x,x0,x1;
A=99;
x=A;
x0=A/2
do
{
x1=x0;
x0=x;
x=x0-(x0-x1)*(x0^2-A)/((x0^2-A)-(x1^2-A));
}while (x-x0<0.0000000001);
cout<<x;
}



快速弦截法
colacoca 2002-04-04
  • 打赏
  • 举报
回复
你可以把randomize看成是一个取得系统时间精确到毫秒的函数
Lotsof 2002-04-04
  • 打赏
  • 举报
回复
tc20的方法
jwyhit 2002-04-03
  • 打赏
  • 举报
回复
gz
更想知道randomize怎么弄出来的
kbsoft 2002-04-03
  • 打赏
  • 举报
回复
gz
LeeMaRS 2002-03-31
  • 打赏
  • 举报
回复
用牛顿迭代法解方程X^2-A=0

A是要开方的数

#include "iostream.h"
void main()
{
float A,x,x0;
A=25;
x=A;
do
{
x0=x;
x=(x0+A/x0)/2;
}while (x<x0);
cout<<x;
}
wkoji 2002-03-31
  • 打赏
  • 举报
回复
不好意思,是我比较苯,这点都没注意。;)
这个函数我是想到了怎么做,但是求解精度和时间复杂度都感觉不够理想,
也想看看一些经典的算法
shenhong0 2002-03-31
  • 打赏
  • 举报
回复
楼上的大哥,人家是一个人!!
wkoji 2002-03-31
  • 打赏
  • 举报
回复
楼上的大哥,你说的这个东西谁不知道啊,人家是来求源程序的!!!
Lotsof 2002-03-31
  • 打赏
  • 举报
回复
也就是求平方根的函数!

33,028

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧