注册 登录
编程论坛 VB6论坛

完全开平方公式

yuma 发布于 2022-07-20 17:23, 2134 次点击
这个完全开平方公式什么时候学的,我怎么看不懂?

只有本站会员才能查看附件,请 登录
20 回复
#2
独木星空2022-07-22 06:24
复习笔算开方就可以了。原理基于(a+b)^2=a^2+2ab+b,因为a在高位(可始终认为它是十位),b在低位(可认为它在个位),反复进行,就可以手动开方了。已经是三四十年的事情,忘记的也差不多了。
#3
独木星空2022-08-21 19:35
笔算开平方
今天给一个当家的中学生讲解了笔算开平方,初中都接触了(a+b)^2=a^2+2ab+b^2,  假设ab表示一个广义2位数,b代表个位数,a代表十位数,则ab=10a+b,然后(10a+b)^2=100a^2+20ab+b^2,  我们理解不清时,把100a^2不去考虑,仅仅考虑20ab+b^2形式,提出公因子b,则为20a+b,然后先以20a作为试商,开始第一步不用考虑,只考虑某一个数的平方即可,从第二步,考虑(20a+b)*b的值,以20a作为先前考虑的倍值,忘了说一件事情,笔算开平方,与多位数除法类似,只不过,第一步是先划分,从个位开始,两位数划分一个段落,确定开方数是几位数,划分的段落数即为开方数的位数,与多位数除法不同之处,多位数除法每次是一位一位的下拉,而笔算开平方是两位两位的下拉。现在讲解一个实例,比如125笔算开平方,先划段,1,25,说明开出来的方值是两位数的,第一步是1,1*1=1,所以第一个数上1,1-1=0,把25拉下来,这时,a=1,20a=20,25除20,最大试商是1,另b=1,20a+b=20*1+1=21,(20a+b)*b=21*1=21,25-21=4,补两位数,变成400,这时a=11,20a=220,用220作为试商,400/220=1.多,所以最大试商是1,20a+b=20*11+1=221,(20a+b)*b=221*1=221,400-221=179,再补两位数,变成17900,这时a=111,20a=2220,以2220作为试商,17900/2220=8.063,最大试商是8,另b=8,20a+b=111*20+8=2228,2228*8=17824,17900-17824=76,再次增加两位,变成7600,这时a=1118了,20a=22360,显然7600不是它的倍数,那么只能再扩大2位数,变成760000,........,一直下去,直到满足有效位即可(笔算开平方时要求精确到的位数)。
#4
独木星空2022-08-24 12:46
有时把数学语言用程序翻译出来并不容易。
#5
yuma2022-08-25 10:02
只有本站会员才能查看附件,请 登录


一直想找到这个开方的笔算方法,n=2时,网上还有完全开平方公式可以笔算。

当n等于其它数时,甚至是小数时,不知如何笔算。

网上找不到通用的计算方法,烦!!!!!!
#6
独木星空2022-08-25 11:06
回复 5楼 yuma
安照笔算开平方原理,(a+b)^2=a^2+2ab+b^2,把ab看成两位数,a占十位数,b占个位数,则广义二位数ab可写成10a+b的形式,那么(10a+b)^2=100a^2+20ab+b^2,我们暂时不要考虑高位的100a^2,仅仅考虑20ab+b^2,提出公因子b,小括里是(20a+b)这个式子,以20a作为试商,最大值不超9,然后逐步递减。
    当n=3时,原理一样,此时是:(a+b)^3=a^3+3a^2b+3ab^2+b^3,同样不要考虑最高位的a^3,如果也安广义2位数去理解,则把a用10a代替,其结果是1000a^3+300a^2b+30ab^2+b^3,去掉最高位的1000a^3,同样提出提出公因子b,则小括里(300a^2+30ab+b^2),以300a^2作为试商,同理是从个位开始划分段落,每三位一段,小数点后,每次增大三位数,即三位三位的下拉,这是与多位数除法不一致的地方。
     笔算开平方没有统一的模式,至于小数点的就不要强求了。
     知道方法就好,没有必要伤脑筋,2,3,4可以玩一玩,再高,笔算开方也没有多大实际意义。
#7
yuma2022-08-25 12:54
只有本站会员才能查看附件,请 登录
#8
独木星空2022-08-26 00:11
回复 7楼 yuma
这样玩的有点大,不过只要你有耐心,还是可以进行的。
无非就是(10a+b)^10=∑C(n,m)(10a)^(n-m)b^m,n=10,m∈[0,10],也就是11项连加,仍就撇开最高位的10^10*a^10,把后边的式子提出公共因子b来,然后以10*10^9a^9作为试商(最大值为9),试商后计算多项式的值,乘b后不大于拉下的值(每次增位是10位数),计算量有点大,可借助计算机(实际上借助计算机也无济于事,因为位数不够),光靠笔算,真是比登天还难,怕是用A4纸都不够看,要用8裁的纸才能写下,而且保留有效位数不能太多。
    所以,笔算开平方只是加强对二项式展开式的深度理解,这种苛刻的笔算开平方没有更多现实意义,玩它没有什么必要,降降级,玩个n=5,6的情形也可以,锻炼计算的马虎性。
#9
yuma2022-08-26 18:37
请教了无数的大学生,请教如何笔算
只有本站会员才能查看附件,请 登录
的值,结果所有大学生都被难住了。
#10
yuma2022-08-26 18:39
目前还没有找到这个小数乘方的快速、简单笔算方法。
#11
独木星空2022-08-26 20:29
回复 7楼 yuma
我也没有细心计算,1.2^13=10.6993205379072

[此贴子已经被作者于2022-8-26 20:50编辑过]

#12
独木星空2022-08-26 21:35
10.6993205379072,第一步,上个1(即,最高位是1,也就是a=1),不能上2,因为2的10次方是1024,从个位往高位划段,每10位数划分一段,10就能划分1段,所以,开方数是一个个位小数。第二步,就步入正规,10-1^10=9,然后拉下10位数,为96993205379,最大试商是2(3就是负数了)。
10a次方    b次方    C(10,i)    系数*(10a)^j    *a^j    *b^i    1    2    积
9    1    10    10000000000    a^9    b^1    1    2    20000000000
8    2    45    4500000000    a^8    b^2    1    4    18000000000
7    3    120    1200000000    a^7    b^3    1    8    9600000000
6    4    210    210000000    a^6    b^4    1    16    3360000000
5    5    252    25200000    a^5    b^5    1    32    806400000
4    6    210    2100000    a^4    b^6    1    64    134400000
3    7    120    120000    a^3    b^7    1    128    15360000
2    8    45    4500    a^2    b^8    1    256    1152000
1    9    10    100    a^1    b^9    1    512    51200
0    10    1    1    a^0    b^10    1    1024    1024
                            减数    51917364224
                            被减数    96993205379
                            差值    45075841155
假设另b=3,
10a次方    b次方    C(10,i)    系数*(10a)^j    *a^j    *b^i    1    3    积
9    1    10    10000000000    a^9    b^1    1    3    30000000000
8    2    45    4500000000    a^8    b^2    1    9    40500000000
7    3    120    1200000000    a^7    b^3    1    27    32400000000
6    4    210    210000000    a^6    b^4    1    81    17010000000
5    5    252    25200000    a^5    b^5    1    243    6123600000
4    6    210    2100000    a^4    b^6    1    729    1530900000
3    7    120    120000    a^3    b^7    1    2187    262440000
2    8    45    4500    a^2    b^8    1    6561    29524500
1    9    10    100    a^1    b^9    1    19683    1968300
0    10    1    1    a^0    b^10    1    59049    59049
                            减数    127858491849
                            被减数    96993205379
                            差值    -30865286470
差值已经是负数了,所以小数点后第一位小数是2,
当是2时,差值为:45075841155,再拉10位数,紧跟着还有0720000000,就成了450758411550720000000,这是个21位的大数,此时a=12,12的9次方,再扩大10^10倍作为试商,你能做到吗?也就是第三步就进行不下去了,如果得到了第三步结果,当第四步时,a是个三位数,它的9次方,再扩大10^10倍作为此时的试商,空拍此时大脑已经快爆炸了,如果毅力够坚强,这一步闯过去了,来到第五步,a是4位数,它9次方,扩大10^10倍作为试商(仅仅给你举了最大项,其实还有9项连加的),.......,如此反复进行,你能精确到小数点后几位数?恐怕不敢贪大。
    所以,原则上笔算开方是可行的,实际上,没有多大的进展。
#13
独木星空2022-08-26 21:49
10a次方    b次方    C(10,i)    系数*(10a)^j    *a^j    *b^i    12    6    积
9    1    10    10000000000    a^9    b^1    5159780352    6    3.09587E+20
8    2    45    4500000000    a^8    b^2    429981696    36    6.9657E+19
7    3    120    1200000000    a^7    b^3    35831808    216    9.2876E+18
6    4    210    210000000    a^6    b^4    2985984    1296    8.12665E+17
5    5    252    25200000    a^5    b^5    248832    7776    4.87599E+16
4    6    210    2100000    a^4    b^6    20736    46656    2.03166E+15
3    7    120    120000    a^3    b^7    1728    279936    5.80475E+13
2    8    45    4500    a^2    b^8    144    1679616    1.08839E+12
1    9    10    100    a^1    b^9    12    10077696    12093235200
0    10    1    1    a^0    b^10    1    60466176    60466176
                            减数    389394976646954000000
                            被减数    450758411550720000000
                            差值    61363434903766200000
非精确计算,因为电脑的有效位是15位数,已经是21位,借助电脑也无法进行下去。
#14
独木星空2022-08-26 21:51
10a次方    b次方    C(10,i)    系数*(10a)^j    *a^j    *b^i    12    7    积
9    1    10    10000000000    a^9    b^1    5159780352    7    3.61185E+20
8    2    45    4500000000    a^8    b^2    429981696    49    9.4811E+19
7    3    120    1200000000    a^7    b^3    35831808    343    1.47484E+19
6    4    210    210000000    a^6    b^4    2985984    2401    1.50556E+18
5    5    252    25200000    a^5    b^5    248832    16807    1.05389E+17
4    6    210    2100000    a^4    b^6    20736    117649    5.1231E+15
3    7    120    120000    a^3    b^7    1728    823543    1.7077E+14
2    8    45    4500    a^2    b^8    144    5764801    3.73559E+12
1    9    10    100    a^1    b^9    12    40353607    48424328400
0    10    1    1    a^0    b^10    1    282475249    282475249
                            减数    472360210833394000000
                            被减数    450758411550720000000
                            差值    -21601799282673500000
如果试商是7,则为负值。
#15
独木星空2022-08-26 21:53
实际上我们已经远离了轨道,在一个编程论坛讨论数学问题,有点偏离主题。
#16
yuma2022-08-26 23:07
回复 15楼 独木星空
非也,即然编程可以计算它,那肯定存在笔算它的方法。

而这种笔算的方法其实也可以作为编程计算它的一种算法。
#17
独木星空2022-08-27 07:45
回复 16楼 yuma
我其实对vb6一知半解。我一般是编写vfp程序获得数据。把笔算开平方发在了vfp编程论坛板块,20分的悬赏,可是快到期了,无一人问津,只好撤掉悬赏。
#18
yuma2022-08-27 08:32
回复 17楼 独木星空
我也是,软件编程我一般VBScript、VB6合作实现自已的目的。偶尔使用Python和C/C++来实现。

Web编程我一般 PHP、html+js来实现自己目的。
#19
独木星空2022-08-28 15:30
我们是不是可以先把多位数拆分,比如1234567890,表示成a=0,b=9,c=8,d=7,....,从个位倒着用字母表示,也可以统一用x1=0,x2=9,x3=8,....;用y1,y2,y3,....;来表示另一个整数,然后,就是它们分别相乘了,获得xi*yj个数据,用其角码表是位数(所以角码从0开始),这样角码之和就是位数(另角码之和加1确定),然后计算所有的角码之和相同的和,这样就完成笔算多位数相乘的汇总结果,最后把临近位再做处理(之和大于9的部分),最后输出一个处理好的数字文本(把各个位上的数字做倒排列而成)。
    只是一个初步设想,能不能实现是个问题。
#20
yuma2022-08-31 11:04
说的很复杂,不是很懂
#21
独木星空2022-08-31 13:00
在vfp编程版块都有几位已经给出了算法。
1