[算法] [常微分方程] [欧拉法 改进欧拉法 经典R-K算法]

简介:


 

复制代码
 1 #include<iostream>
 2 #include<cmath>
 3 #include<cstdio>
 4 #include<iomanip>
 5 using namespace std;
 6 double h=0.1;//步差
 7 double xi[11]={0};
 8 double ol_yi[11]={1};
 9 double gol_yi[11]={1};
10 double rk_yi[11]={1};
11 double real_yi[11]={1};
12 double f(double x,double y){
13     return 2*x/(3*y*y);
14 }//f(x,y)
15 void OLFunction(){
16     for(int i=0;i<10;i++){
17         ol_yi[i+1]=ol_yi[i]+h*f(xi[i],ol_yi[i]);
18     }
19 }//欧拉方法
20 void GOLFunction(){
21     for(int i=0;i<10;i++){
22         gol_yi[i+1]=gol_yi[i]+
23             h*(
24                 f(xi[i],gol_yi[i])
25                 +f(xi[i+1],gol_yi[i]+h*f(xi[i],gol_yi[i]))
26             )/2;
27     }
28 }//改进欧拉方法
29 void RKFunction(){
30     double K1,K2,K3,K4;
31     for(int i=0;i<10;i++){
32         K1=f(xi[i],rk_yi[i]);
33         K2=f(xi[i]+h/2,rk_yi[i]+h*K1/2);
34         K3=f(xi[i]+h/2,rk_yi[i]+h*K2/2);
35         K4=f(xi[i]+h,rk_yi[i]+h*K3);
36         rk_yi[i+1]=rk_yi[i]+h*(K1+2*K2+2*K3+K4)/6;
37     }
38 }//经典龙格贝法
39 void RFunction(){
40     for(int i=1;i<11;i++){
41         real_yi[i]=pow(1.0+xi[i]*xi[i],1/3.0);
42     }
43 }//真实解
44 int main(){
45     int i;
46     for(i=1;i<11;i++){
47         xi[i]=xi[i-1]+h;
48     }//求xi[]
49     
50     OLFunction();//四种计算方法
51     GOLFunction();
52     RKFunction();
53     RFunction();
54 
55     printf("-------------------------------------------------\n");
56     printf("xi  | 欧拉     | 改进欧拉 | 经典R-K  | 准确解 \n");
57     printf("-------------------------------------------------\n");
58     for(i=0;i<11;i++){
59         printf("%.1lf | %.6lf | %.6lf | %.6lf | %.8lf\n",
60             xi[i],ol_yi[i],gol_yi[i],rk_yi[i],real_yi[i]);
61     }
62     getchar();
63     return 0;
64 }
复制代码


相关文章
|
人工智能 算法 Java
我整理了50道经典Java算法题,直接进了字节跳动!!
最近,很多小伙伴都想进入字节跳动这个快速发展的公司,而字节跳动对于算法的要求比较高。于是乎,有些小伙伴问我能否整理一些基础的算法题,帮助他们提升下基础算法能力。我:没问题啊!于是,经过半个多月的收集和整理,最终输出了这50道经典的Java算法题。
3004 0
|
机器学习/深度学习 算法
欧拉函数算法的实现
欧拉函数算法的实现
欧拉函数算法的实现
|
存储 算法
一文足矣——动态规划经典之Floyd(弗洛伊德)算法
一文足矣——动态规划经典之Floyd(弗洛伊德)算法
236 0
一文足矣——动态规划经典之Floyd(弗洛伊德)算法
|
算法 C++
算法基础系列第四章——数论之从欧拉卷到欧几里得(2)
算法基础系列第四章——数论之从欧拉卷到欧几里得(2)
89 0
算法基础系列第四章——数论之从欧拉卷到欧几里得(2)
|
算法 C++
算法基础系列第四章——数论之从欧拉卷到欧几里得(1)
算法基础系列第四章——数论之从欧拉卷到欧几里得(1)
148 0
算法基础系列第四章——数论之从欧拉卷到欧几里得(1)
|
算法
一个古老而又经典的算法-汉诺塔问题
哈诺塔问题相信只要学习计算机的人都知道。这是一个古老而又伟大的问题。在这篇文章中,主要是给出递归解决汉诺塔问题的代码方法。毕竟面试的时候,HR比我们要变态很多,怎么蹂躏我们怎么玩。
237 0
一个古老而又经典的算法-汉诺塔问题
|
缓存 运维 负载均衡
真是经典中的经典!MySQL+多线程+Redis+算法+网络
真是经典中的经典!MySQL+多线程+Redis+算法+网络
真是经典中的经典!MySQL+多线程+Redis+算法+网络
|
存储 数据采集 人工智能
搜索引擎背后的经典数据结构和算法
搜索引擎背后的经典数据结构和算法
|
算法 安全 调度
Interview:算法岗位面试—BAT公司问题面试之计算机基础(进程与线程的区别)、经典概率问题等集锦
Interview:算法岗位面试—BAT公司问题面试之计算机基础(进程与线程的区别)、经典概率问题等集锦
Interview:算法岗位面试—BAT公司问题面试之计算机基础(进程与线程的区别)、经典概率问题等集锦
下一篇
无影云桌面