| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 564 人关注过本帖
标题:一数值计算关于传递参数的问题
只看楼主 加入收藏
wwwjw
Rank: 1
等 级:新手上路
帖 子:41
专家分:0
注 册:2007-12-28
结帖率:33.33%
收藏
已结贴  问题点数:20 回复次数:4 
一数值计算关于传递参数的问题
我这个程序是对分法求方程的根,源代码引自徐士良的《数值分析》一书。
一共两个c文件,整个流程:
1、将算法单独写成一个独立的c文件(dhrt.c),供下面调用
2、主main函数,调用1步骤的算法,并在(dhrt0.c)这个c文件的末尾定义了要解得方程,原先的例子,方程式编译前提前在代码里定义好。由于我想解得是一个固定格式的多项式方程,因此想在计算时互动的输入多项式方程的系数。
无奈不知道怎么调用,下面是我的源程序:
算法(dhrt.c):

  #include "math.h"
  int dhrt(a,b,h,eps,x,m,f)
  int m;
  double a,b,h,eps,x[],(*f)();
  { int n,js;
    double z,y,z1,y1,z0,y0;
    n=0; z=a; y=(*f)(z);
    while ((z<=b+h/2.0)&&(n!=m))
      { if (fabs(y)<eps)
          { n=n+1; x[n-1]=z;
            z=z+h/2.0; y=(*f)(z);
          }
        else
          { z1=z+h; y1=(*f)(z1);
            if (fabs(y1)<eps)
              { n=n+1; x[n-1]=z1;
                z=z1+h/2.0; y=(*f)(z);
              }
            else if (y*y1>0.0)
              { y=y1; z=z1;}
            else
              { js=0;
                while (js==0)
                  { if (fabs(z1-z)<eps)
                      { n=n+1; x[n-1]=(z1+z)/2.0;
                        z=z1+h/2.0; y=(*f)(z);
                        js=1;
                      }
                    else
                      { z0=(z1+z)/2.0; y0=(*f)(z0);
                        if (fabs(y0)<eps)
                          { x[n]=z0; n=n+1; js=1;
                            z=z0+h/2.0; y=(*f)(z);
                          }
                        else if ((y*y0)<0.0)
                          { z1=z0; y1=y0;}
                        else { z=z0; y=y0;}
                      }
                  }
              }
          }
      }
    return(n);
  }
搜索更多相关主题的帖子: 参数传递 
2009-08-12 15:24
wwwjw
Rank: 1
等 级:新手上路
帖 子:41
专家分:0
注 册:2007-12-28
收藏
得分:0 
主程序是:
2009-08-12 15:24
wwwjw
Rank: 1
等 级:新手上路
帖 子:41
专家分:0
注 册:2007-12-28
收藏
得分:0 
#include "math.h"
#include "stdio.h"
#include "dhrt.h"
main()
{
    int i,n;
    int m=8;
    double x[8],dhrtf(double);
    n=dhrt(-10.0,50.0,0.2,0.00001,x,m,dhrtf);
    printf("M=%d\n",n);
    for(i=0;i<=n-1;i++)
        printf("x(%d)=%13.7e\n",i,x[i]);
    printf("\n");
}
double dhrtf(double x)
{
    double z;
    z=pow(x,8)+2*pow(x,7)+1;
    return(z);
}
2009-08-12 15:24
wwwjw
Rank: 1
等 级:新手上路
帖 子:41
专家分:0
注 册:2007-12-28
收藏
得分:0 
我的目的是
z=pow(x,8)+2*pow(x,7)+1;  
在这个多项式方程的变量x前面加上系数,实现编译完的程序可以手动输不同的系数,从而解得相应的方程。
2009-08-12 15:26
CCVC果冻爽
Rank: 4
等 级:业余侠客
帖 子:116
专家分:209
注 册:2009-7-31
收藏
得分:20 
My God!一行注释都没有,让不让人活了,没耐心看了....
2009-08-12 17:10
快速回复:一数值计算关于传递参数的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022930 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved