MATLAB-验证奋斗的发夹连根式 题目描述
原理分析
奋斗的发夹恒等式,简单地说,就是反复利用平方差公式把一个数展开成一个开方式
数学证明
算法分析
①既然是反复展开成一个式子,考虑利用循环即设计循环方式进行计算,最好的方式是一个函数的递归调用。
程序设计
写到这发现堂堂CSDN居然没有MATLAB代码块,我惊了!
function a=lama(n)num=60; %规定最大递归次数if nargin<1 n=2; %判断是否输入变量,如果没有输入变量,则默认为2endif n==num %如果变量等于最大递归次数,令a等于一个任意小的常数。防止调用次数太多,消耗太多内存 a=1; else a=sqrt(1+n*lama(n+1)); %公式①:递归调用end
代码调试
>> lamaans = 3>> lama(2)ans = 3>> lama(5)ans = 6.0000>> lama(10)ans = 11.0000>> lama(20)ans = 21.0000>> lama(30)ans = 31.0000>> lama(40)ans = 40.9998>> lama(50)ans = 50.7973>> lama(55)ans = 49.2884>> lama(57)ans = 34.7924>> lama(59)ans 便宜美国vps = 7.7460 >> lama(60)ans = 1
可以看出lama/lama(2)=3,程序成功运行。
由于规定了lama(60),函数lama(n)会先随着n的增大而增大,在靠近60的时候收敛于1。
27062605