project Euler 15 可改进,用杨辉三角


时间是 0ms。
/**
 * Created by Administrator on 2015/5/21.
 */
public class E15 {
    public static long compute(long bigNumber,long smallNumber)
    {
        long result=1;
        long cycleIndex=bigNumber-smallNumber;
        int devide=1;
        for(long i=0;i<cycleIndex;i++)
        {
            result*=bigNumber--;
            result/=devide++;
        }
        return result;
    }

    public static void main(String[] args) {
        long stareTime=System.currentTimeMillis();
        long result=compute(40,20);
        System.out.println(result);
        long endTime=System.currentTimeMillis();
        System.out.println(endTime-stareTime+" ms");
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 对于Euler公式,Matlab代码如下: syms theta euler = exp(i*theta) == cos(theta) + 1i*sin(theta) 这段代码使用了符号变量来表示复数中的theta,并使用了符号计算工具箱中的exp函数。然后使用三角函数cos和sin来表示实部和虚部。输出结果为: euler = exp(i*theta) == cos(theta) + 1i*sin(theta) 对于改进Euler公式,Matlab代码如下: syms theta euler_improved = exp(i*theta) == cos(theta) + 1i*sin(theta) - (1/2)*exp(-i*theta)*((cos(theta))^2 + (sin(theta))^2) 这段代码同样使用了符号变量来表示复数中的theta,并使用了改进Euler公式。输出结果为: euler_improved = exp(i*theta) == cos(theta) - (cos(theta)^2*exp(-i*theta))/2i - (sin(theta)^2*exp(-i*theta))/2i + sin(theta) ### 回答2: Euler公式和改进Euler公式是求解常微分方程数值解的重要方法。 Euler公式是一种简单的数值积分方法,其基本思想是通过离散化的步长逐步逼近微分方程的解。给定一个微分方程dy/dx = f(x, y),可以通过对初始条件y(x0)=y0进行迭代计算,得到一系列离散点的近似解。 Euler公式的近似计算公式为:yn+1 = yn + h * f(xn, yn), 其中,h为步长,xn和yn分别表示当前的x值和对应的近似解y值。 改进Euler公式是在基本Euler公式的基础上做了改进,通过使用初始点和迭代点之间的斜率的平均值来计算近似解。改进Euler公式的近似计算公式为:yn+1 = yn + h * (f(xn, yn) + f(xn+1, yn+h*f(xn, yn))) / 2, Matlab代码实现Euler公式的示例: ``` function [x, y] = eulerMethod(f, x0, y0, h, n) x = zeros(1, n+1); y = zeros(1, n+1); x(1) = x0; y(1) = y0; for i = 1:n x(i+1) = x(i) + h; y(i+1) = y(i) + h * f(x(i), y(i)); end end ``` Matlab代码实现改进Euler公式的示例: ``` function [x, y] = improvedEulerMethod(f, x0, y0, h, n) x = zeros(1, n+1); y = zeros(1, n+1); x(1) = x0; y(1) = y0; for i = 1:n x(i+1) = x(i) + h; y_temp = y(i) + h * f(x(i), y(i)); y(i+1) = y(i) + h * (f(x(i), y(i)) + f(x(i+1), y_temp)) / 2; end end ``` 以上是利用Matlab实现Euler公式和改进Euler公式的简单示例代码。根据实际需求,可以根据微分方程的形式和要求进行相应的改进和扩展。 ### 回答3: Euler公式是数学中的一个重要公式,可以用于近似计算微分方程的解。Euler公式通过把微分方程的导数近似为差商来进行计算,具体实现如下: 1. 首先,定义微分方程的初始条件,并确定时间步长和计算时间总长。 2. 使用一个循环来迭代计算微分方程的近似解。在每一步循环中,根据当前时间和解的值,计算微分方程的导数。 3. 根据导数计算差商,并根据差商和当前解的值,更新解的值。通过不断迭代,最终可以得到微分方程的近似解。 改进Euler公式是对Euler公式的一种改进,通过在计算差商时使用更准确的导数值来提高近似解的精度。具体实现如下: 1. 首先,定义微分方程的初始条件,并确定时间步长和计算时间总长。 2. 使用一个循环来迭代计算微分方程的近似解。在每一步循环中,根据当前时间和解的值,计算微分方程的导数。 3. 根据当前时间和解的值,计算导数的值,并将其作为差商的近似值。 4. 根据差商和当前解的值,更新解的值。通过不断迭代,最终可以得到微分方程的近似解。 改进Euler公式相比于普通Euler公式的优势在于,它使用更准确的导数值来进行近似计算,能够得到更精确的解。但是改进Euler公式的计算复杂度较高,因此在某些情况下可能并不适用。实际应用中,需要根据具体情况选择合适的数值方法来进行微分方程的近似计算。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值