24小时热门版块排行榜    

北京石油化工学院2026年研究生招生接收调剂公告
查看: 966  |  回复: 5

yuwuxiaoyuan

新虫 (初入文坛)

[求助] c语言龙阁库塔问题求助各位大神

在建模计算的过程中用到了四阶龙阁库塔方法,然后我改编了程序集中的一段程序,可是各种问题。要么就是赋完初值之后,后面的计算结果一直都是初值。因为老师要求的特别急,所以特此求助各位大神~
这个是main函数:
#include "stdio.h"
#include "grkt2.c"
  main()
  { int i;
    double t,h,eps,y[4];
    void grkt2f();
    y[0]=0.0075;y[1]=0.1;y[2]=25;y[3]=23;
    t=0.0; h=0.1; eps=0.0001;
    printf("\n" );
    printf("t=%7.3f  y(0)=%e  y(1)=%e  y(2)=%e  y(3)=%e\n",t,y[0],y[1],y[2],y[3]);
    for (i=1; i<=500; i++)
      { grkt2(t,h,y,4,eps,grkt2f);
        t=t+h;
        printf("t=%7.3f  y(0)=%e  y(1)=%e  y(2)=%e  y(3)=%e\n",t,y[0],y[1],y[2],y[3]);
      }
  }

  void grkt2f()
{
    int n;
    double t,y[4],d[4],A[4],B[4],C3,C4,k[4],a,b,e,f,s,v,aln,alq,Aln,Aghw,Tln,Gt,Ghw,GH,Mg,Mhw,Cg,Chw,Thwc,Thwr;
    t=t; n=n;
    s=100.406;       /*冷凝器底面积*/
    v=1348.9546;     /*冷凝器箱体体积*/
    aln=6.3735;      /*冷凝水液膜换热系数*/
    alq=29.17134;    /*循环水与管壁换热系数*/
    Aln=17883;       /*冷凝管与蒸汽的换热面积*/
    Aghw=17800;      /*冷凝管与循环水的换热面积*/
    Tln=40.23;       /*冷凝器内平均温度(摄氏度)*/
    Gt=276.742;      /*冷凝器内净增加的质量流量*/
    Ghw=44960;       /*循环水质量流量*/
    GH=2041574.281;  /*冷凝器内净增加的焓值*/
    Mg=2816572.5;    /*钛合金管材总质量*/
    Mhw=113551.144;  /*管内循环水的总质量*/
    Cg=0.52/1000;    /*钛合金管材的比热容*/
    Chw=4.174;       /*循环水的定压比热容*/
    Thwc=33.300;     /*循环水出口温度*/
    Thwr=23.000;     /*循环水进口温度*/
    a=22833636.71;b=1098193947;e=8744.2610;f=-650.8568;
    k[1]=999.95;k[2]=e+f*y[2];k[3]=168516.21;k[4]=a+b*y[2];
    A[1]=(Gt*k[4]-GH*k[2]+Aln*Tln*aln*k[2])/(s*(k[1]*k[4]-k[2]*k[3]));
    A[2]=(Gt*k[3]-GH*k[1]+Aln*Tln*aln*k[1])/(k[2]*k[3]-k[1]*k[4]);
    A[3]=Aln*Tln*aln/(Mg*Cg);
    A[4]=-Ghw*Chw*(Thwc-Thwr)/(Mhw*Chw);
    B[1]=-k[2]*Aln*aln/(s*(k[1]*k[4]-k[2]*k[3]));
    B[2]=-k[1]*Aln*aln/(k[2]*k[3]-k[1]*k[4]);
    B[3]=-(aln*Aln+alq*Aghw)/(Mg*Cg);
    B[4]=alq*Aghw/(Mhw*Chw);
    C3=Aghw*alq/(Mg*Cg);
    C4=-alq*Aghw/(Mhw*Chw);
    d[0]=A[1]+B[1]*y[2];
    d[1]=A[2]+B[2]*y[2];
    d[2]=A[3]+B[3]*y[2]+C3*y[3];
    d[3]=A[4]+B[4]*y[2]+C4*y[3];
    return;
}


然后是调用的龙阁库塔的函数,这段是直接在程序集上的(徐士良版)

#include "stdlib.h"
  #include "math.h"
  void grkt2(t,h,y,n,eps,grkt2f)
void grkt2f()

    int n;
    double t,h,eps,y[];
{int m,i,j,k;
    double hh,p,dt,x,tt,q,a[4],*g,*b,*c,*d,*e;
    g=malloc(n*sizeof(double));
    b=malloc(n*sizeof(double));
    c=malloc(n*sizeof(double));
    d=malloc(n*sizeof(double));
    e=malloc(n*sizeof(double));
    hh=h; m=1; p=1.0+eps; x=t;
    for (i=0; i<=n-1; i++) c=y;
    while (p>=eps)
      { a[0]=hh/2.0; a[1]=a[0]; a[2]=hh; a[3]=hh;
        for (i=0; i<=n-1; i++)
          { g=y; y=c;}
        dt=h/m; t=x;
        for (j=0; j<=m-1; j++)
          { grkt2f(t,y,n,d);
            for (i=0; i<=n-1; i++)
              { b=y; e=y;}
            for (k=0; k<=2; k++)
              { for (i=0; i<=n-1; i++)
                  { y=e+a[k]*d;
                    b=b+a[k+1]*d/3.0;
                  }
                tt=t+a[k];
                grkt2f(tt,y,n,d);
              }
            for (i=0; i<=n-1; i++)
              y=b+hh*d/6.0;
            t=t+dt;
          }
        p=0.0;
        for (i=0; i<=n-1; i++
          { q=fabs(y-g);
            if (q>p) p=q;
          }
        hh=hh/2.0; m=m+m;
      }
    free(g); free(b); free(c); free(d); free(e);
    return;
  }

[ Last edited by yuwuxiaoyuan on 2013-4-8 at 12:53 ]
回复此楼

» 猜你喜欢

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

yuwuxiaoyuan

新虫 (初入文坛)

我自己顶一个吧。。。。

[ 发自手机版 http://muchong.com/3g ]
2楼2013-04-08 18:42:34
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

ftai

金虫 (著名写手)

由简单的功能开始吧。一步一步地添加功能。欲速则不达。
3楼2013-04-08 19:06:49
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

yuwuxiaoyuan

新虫 (初入文坛)

引用回帖:
3楼: Originally posted by ftai at 2013-04-08 19:06:49
由简单的功能开始吧。一步一步地添加功能。欲速则不达。

从简单的功能添加?是指?
4楼2013-04-08 21:14:51
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

ftai

金虫 (著名写手)

龙格 · 库塔,一般这样称呼吧。
涉及到隐函数。是递归的。

对主程序,和龙格·库塔子函数,先从最简单的,比如二阶龙格·库塔,到三阶龙格·库塔,这样逐渐增加。
5楼2013-04-08 21:57:33
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

yuwuxiaoyuan

新虫 (初入文坛)

引用回帖:
5楼: Originally posted by ftai at 2013-04-08 21:57:33
龙格 · 库塔,一般这样称呼吧。
涉及到隐函数。是递归的。

对主程序,和龙格·库塔子函数,先从最简单的,比如二阶龙格·库塔,到三阶龙格·库塔,这样逐渐增加。

明白了~可是主要是老师要求的特别急~所以没有办法,只能在网上找的程序,然后修改调用。。。等有时间是要这样一步一步的加。。
6楼2013-04-08 22:55:02
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 yuwuxiaoyuan 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 材料调剂 +14 壹贰贰亿 2026-04-04 14/700 2026-04-05 23:31 by 来看流星雨10
[考研] 复试调剂 +13 呼呼?~+123456 2026-04-05 13/650 2026-04-05 22:07 by 醉翁wl
[考研] 280求调剂 +4 李rien 2026-04-04 4/200 2026-04-05 18:44 by imissbao
[考研] 材料调剂 +10 懒羊羊轻置玉臀 2026-04-02 11/550 2026-04-04 21:56 by laoshidan
[考研] 333求调剂 +12 wfh030413@ 2026-04-03 13/650 2026-04-04 21:02 by jj987
[考研] 一志愿沪9,求生物学调剂,326分 +6 刘墨墨 2026-04-04 6/300 2026-04-04 19:44 by 唐沐儿
[考研] [调剂信息]085408光电信息 求调剂 总分291分数一英一 +3 iz11az 2026-04-02 3/150 2026-04-04 19:09 by 蓝云思雨
[考研] 291求调剂 +4 迷蒙木木 2026-04-01 5/250 2026-04-04 15:59 by sihailian3
[考研] 一志愿沪985,326分求调剂 +3 刘墨墨 2026-04-03 3/150 2026-04-04 11:16 by 悲伤的芋头
[考研] 一志愿北京科技大学材料工程085601,求调剂 +17 cdyw 2026-04-02 18/900 2026-04-04 11:14 by w_xuqing
[考研] 一志愿双非085502,267分,过四级求调剂 +3 再忙也要吃饭啊 2026-04-03 3/150 2026-04-04 05:03 by gswylq
[考研] 303求调剂 +3 一色清羽 2026-04-02 4/200 2026-04-03 10:22 by 蓝云思雨
[考研] 274求调剂 +10 薛定谔的虎。 2026-04-01 10/500 2026-04-03 10:13 by tianyyysss
[考研] 262求调剂 +6 励志一定发文章 2026-04-02 7/350 2026-04-03 09:54 by linyelide
[考研] 化学070300-总分378-求调剂 +5 挪椅子的泡泡糖 2026-04-02 5/250 2026-04-02 22:20 by ZXlzxl0425
[考研] 学硕化学工程与技术,一志愿中国海洋大学320+求调剂 +8 披星河 2026-04-02 8/400 2026-04-02 14:12 by oooqiao
[考研] 求调剂,一志愿南京师范大学计算机专硕,初试373,六级通过, +3 计算机追梦人 2026-04-01 3/150 2026-04-02 07:57 by fxue1114
[考研] 302求调剂一志愿北航070300,本科郑大化学 +8 圣日耳曼条 2026-04-01 11/550 2026-04-02 07:40 by chemdavid
[考研] 307分求调剂 +14 (o~o) 2026-03-31 15/750 2026-04-01 20:43 by longlotian
[考研] 抱歉 +3 田洪有 2026-03-30 3/150 2026-03-30 19:11 by 迷糊CCPs
信息提示
请填处理意见