❶ 用二分法设计求出a的N次幂
#include <stdio.h>
#include <stdlib.h>
double pow(double a,int N)
{
double ans = 1;
int i;
for(i = 30;i >= 0 && !(N & (1 << i));i--);
for(;i >= 0;i--)
{
ans *= ans;
if(N & (1 << i))
ans *= a;
}
return ans;
}
int main()
{
int N;
double a;
while(scanf("%lf%d",&a,&N) == 2)
printf("%lf\n",pow(a,N));
system("PAUSE");
return 0;
}
❷ 有谁会编程
用C的话,应该是可以实现的!你去找找贪婪算法吧,如果不懂就去查查书吧!
❸ 递归与分治求a的n次方
你想问什么呢?你的算法就是递归+分治求a的n次方的方法呀。f()函数里有调用了f()函数,就是递归,a的n次方被分解成a的n/2次方和a的n-n/2次方的两个小问题,就是分治。你想问什么问题呢?
❹ 求助贴 使用Java程序进行二分法计算a的n次幂
double pow(double a, int n) {
if (n == 0) {
return 1.0;
}
double b = pow(a, n / 2);
b *= b;
if (n % 2 == 1) {
b *= a;
}
return b;
}
❺ 计算方法里面矩阵A的n次方怎么算
一般有以下几种方法:
计算A^2,A^3 找规律,然后利用归纳法证明。
2.若r(A)=1,则A=αβ^T,A^n=(β^Tα)^(n-1)A
注:β^Tα =α^Tβ = tr(αβ^T)
3.分拆法:A=B+C,BC=CB,用二项式公式展开
适用于 B^n 易计算,C的低次幂为零:C^2 或 C^3 = 0.
4.用对角化 A=P^-1diagP
A^n = P^-1diag^nP
5.若r(A)=1则A能分解为一行与一列的两个矩阵的乘积,用结合律就可以很方便的求出A^n
6.若A能分解成2个矩阵的和A = B + C而且BC = CB则A^n = (B+C)^n可用二项式定理展开,当然B,C之中有一个的方密要尽快为0
7.当A有n个线性无关的特征向量时,可用相似对角化来求A^n
8.通过试算A^2 A^3,如有某种规律可用数学归纳法
拓展资料
在数学中,矩阵(Matrix)是一个按照长方阵列排列的复数或实数集合 ,最早来自于方程组的系数及常数所构成的方阵。这一概念由19世纪英国数学家凯利首先提出。
矩阵是高等代数学中的常见工具,也常见于统计分析等应用数学学科中。 在物理学中,矩阵于电路学、力学、光学和量子物理中都有应用;计算机科学中,三维动画制作也需要用到矩阵。 矩阵的运算是数值分析领域的重要问题。将矩阵分解为简单矩阵的组合可以在理论和实际应用上简化矩阵的运算。对一些应用广泛而形式特殊的矩阵,例如稀疏矩阵和准对角矩阵,有特定的快速运算算法。关于矩阵相关理论的发展和应用,请参考矩阵理论。在天体物理、量子力学等领域,也会出现无穷维的矩阵,是矩阵的一种推广。
❻ 分治法求x的n次方的JAVA程序
计算X的n次方
public static int power(int x, int n)
{
int y = 0;
if (n == 0)
y = 1;
else
{
y = power(x , n/2); //递归
y = y * y;
if (y % 2 == 1)
y = y * x;
}
return y;
}
❼ 应用从左到右的二进制制幂算法计算a的n次幂
你说了是二进制的,那a只有1和0的可能了,我通常用的方法是把它化为十进制再n次幂,但有时也非常麻烦,不过你可试下用计算器来解决,因为就算是十进制的n次幂也有时候是非常难算出来的。
❽ 利用分治算法求解、
对于这种已知不合格硬币比正常银币偏重(或偏轻)的问题,可以用分治法。 以下算法可以用数学归纳法证明:假设有3枚硬币,则称一次,如果a边重则是a,……,平衡则是c。同理如果有N块硬币,我们可以把它分成三堆,称一次后,这样问题规模缩小至n/3。重复以上操作,直至称出。需要次数为log3 n。这是典型的分治法,如果想了解更多,可参考《算法导论》 谢谢采纳我的答案