【问题标题】:C++ taylor series estimation of initial value differential equation accuracyC++ 泰勒级数估计初值微分方程精度
【发布时间】:2016-03-06 10:24:00
【问题描述】:

我被要求用泰勒级数法估计x(t)'= tx(t) + t^4, x(5) = 3的初值问题。我必须编写代码以使用0<=t<=5 的泰勒级数方法显示估计值。

我被教导从t=0 开始,使用t=0 的初始条件来找到x0,然后通过计算x'', x''', etc0.01 递增到t=5 并找到下一个@987654329 @对应t+0.01

如何在 c++ 中向后执行此过程,如从 t=5 开始并递增到 0 ?

【问题讨论】:

    标签: c++ taylor-series


    【解决方案1】:

    你可以像这样使用while循环:

    double t = 5.0;
    while (t > 0.0) {
           /* Your Code of Taylor function */
           t = t -0.01;
    }
    

    此代码从 t 值 5.0 开始,并在循环的每次迭代中将 t 递减 0.01。当t值达到0.0时循环结束

    【讨论】:

    • 我想说的是这是一个递归,它需要前一个术语来计算下一个,我需要术语 1 来找到 2,但如果给定我不知道如何找到术语 1术语 2。在这种情况下,给我 t=5,我需要找到 t=4.99 倒退。
    • @B.Li 这个解决方案可以满足您的需求。有什么问题?
    • 在估计微分方程答案的泰勒级数中,它是一种递归,其中 xn+1 项在其计算中需要 xn 项。假设我得到 t0 = 1,那么我可以使用 t0 找到 x0,然后使用 x0 找到 x1。如果给我 xn+1 并且我需要找到 xn,我不确定如何回溯这些步骤以在递归中找到上一个术语。
    • 你有泰勒函数的递归代码吗?请发这个帖
    【解决方案2】:

    这不是问题,您需要专注于解决方案的泰勒展开式,一旦完成,只需计算每个值的函数即可。要找到泰勒展开,您可以在t=5 周围进行,因为您知道x(5)=3,然后您可以直接从微分方程中找到x'(5),并通过反复对等式两边进行微分来找到后续导数。您会发现 t^4 项最终会消失,其余的将产生一个简单的递归公式。

    #include <cstdio>
    
    double c[] = { 3,
                   625,
                   500,
                   300,
                   120,
                   24 };
    
    double x(double t) 
    {
        int j;
        double cc = 0;
        double cp = 0;
        double tj = 1;
        double s = 0;
    
        for(j=0; j<100; j++) {
            cc = (j-1)*cp + 5*cc;
    
            if( j < sizeof(c)/sizeof(c[0]) )
                cc += c[j];
    
            if( j > 0 )
                cc /= j;
    
            s += cc * tj;
            //printf("[%2d] %f %f\n", j, cc, s);
    
            tj *= (t-5);
        }
    
        return s;
    }
    
    int main()
    {
        double t;
    
        for( t = 0.0; t<5.005; t+=0.01 )
            printf("%f %f\n", t, x(t));
    
        return 0;
    }
    

    数组c 是由t^4 的初始值和导数产生的项。这些术语在24 之后消失。循环100 次已根据经验找到,因为那时扩展似乎已经收敛。

    【讨论】:

      猜你喜欢
      • 2020-04-01
      • 2016-06-04
      • 2023-03-24
      • 2017-09-27
      • 2011-11-04
      • 1970-01-01
      • 2016-04-26
      • 2013-10-01
      • 2012-02-07
      相关资源
      最近更新 更多