CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C语言

关于C语言编写数值计算的,事关人命啊~~~~

楼主syx0001(无解的毒药)2002-06-14 17:39:06 在 C/C++ / C语言 提问

小女子向各位大哥大姐求助,真的事关人命啊,被妈妈逼着选了计算机专业,可是我见了各类程序语言上下眼皮就打架,我知道这类儿科的题目大家都不屑,人说,救人一命,胜造七级浮屠,大哥大姐们帮帮忙,行吗?我需要下面9道题中的6个程序,老师说,考试前不交给他,就取消考试资格,呜呼~~~~~,救命!  
   
  将理论算法编写为计算机程序。  
  1,Gauss(列主元)消去法  
  2,矩阵三角分解法  
  3,Lagrange和Newton型插值多项式的计算  
  4,Hermite型插值函数计算  
  5,最小二乘方法  
  6,Romberg方法  
  7,Euler方法  
  8,线性方程组的迭代法  
  9,SOR方法  
   
   
  PS:刚才系统提示我不能放那么多分,那只能到时候另外开帖再给分了:( 问题点数:100、回复次数:13Top

1 楼syx0001(无解的毒药)回复于 2002-06-14 17:43:01 得分 0

我想把所有算法的自然语言都写出来,无奈好多符号都找不到,包括下面的这个“推出”符号,不知道没有自然语言,大家能否写出程序来?  
  Gauss消去算法的自然语言语言表达  
  1.输入方程组维数N,增广矩阵系数aij(ij是下标)(i   =1,2,…,N;j   =1,2…,N+1),控制条件转移精度EPS.  
  2.对于k   ==1,2,…,N-1  
      2.1A(k,k)推出P,k推出I0   (0是下标)  
      2.2对于i   =k,k+1,…,N,如果  
                ∣A(i,k)∣>∣P∣,则  
  A(i,k)推出P,k推出I0  
      2.3如果∣P∣≤EPS,转7  
      2.4如果I0   =k,   转2.6,否则  
      2.5对于j=k,…,N+1  
  A(k,j)推出ω;A(I0,j)推出A(k,j);   ω推出A(I0,j)  
  2.6对于i   =k+1,…,N  
            2.61A(i,k)/A(k,k)推出A(i,k)  
            2.62对于j=k+1,…,N+1  
                A(i,j)-   A(i,k)*   A(k,j)推出A(i,j)  
  3.如果A(N,N)=0,转7  
  4.A(N,N+1)/A(N,N)推出A(N,N+1)  
  5.对于k=N-1,…,2,1  
      5.1W=0  
      5.2     对于j=k+1,…,N  
              W=W+   A(k,j)*   A(j,N+1)  
      5.3   A(k,N+1)-W推出A(k,N+1)  
      5.4   A(k,N+1)/A(k,k)推出A(k,N+1)  
  6.输出解xT(T在平方的位置)   =(A(1,N+1),A(2,N+1),…,A(N,N+1)).转8  
  7.输出EXL=1  
  8.停机  
  Top

2 楼sun_srh(sun_srh)回复于 2002-06-14 18:02:43 得分 0

<C语言算法大全>上都有,你自己看去吧.  
  这真是本好书,可惜我买不起!Top

3 楼sun_srh(sun_srh)回复于 2002-06-14 18:05:50 得分 0

<C语言算法大全>里全有.  
  我想买而买不起的一本书!!!!!!!!!!!!!!!!!!Top

4 楼zhakewei(天外有天)回复于 2002-06-14 18:14:37 得分 0

你到图书馆,仔细的找一找,很多Top

5 楼leopro(漫漫人生路,与你同行)回复于 2002-06-14 18:18:44 得分 0

大部分都不难,但我没时间  
  而且不喜欢给人写作业!!!Top

6 楼flyaramy(aramy)回复于 2002-06-14 18:53:03 得分 0

慢慢写吧!就是花时间Top

7 楼zhanghaosh(功常越天)回复于 2002-06-14 19:06:54 得分 50

#include   "math.h"  
  #include   "malloc.h"  
  long   Seidel(double   *AA,double   *BA,double   *XA,long   Xnum,double   maxerr,long   maxloop)  
  {  
  int   i,j,loopnum;  
  double   *XB;  
  if((XB=(double   *)malloc(Xnum*sizeof(double)))==0)   return(0);  
  loopnum=0;  
  do  
  {  
  for(i=0;i<Xnum;++i)  
  *(XB+i)=*(XA+i);  
  for(i=0;i<Xnum;++i)  
  {  
  *(XA+i)=0;  
  for(j=0;j<Xnum;++j)  
  *(XA+i)+=*(AA+i*Xnum+j)*(i==j?0:*(XA+j));  
  *(XA+i)=(*(BA+i)-*(XA+i))/(*(AA+i*Xnum+i));  
  }  
  for(i=0,j=0;i<Xnum;++i)  
  if(fabs(*(XA+i)-*(XB+i))>maxerr)   j=1;  
  loopnum+=1;  
  }while(loopnum<=maxloop&&j);  
  return(loopnum<=maxloop);  
  free(XB);  
  }  
  这是一个Seidel迭代的程序,maxloop为最大迭代次数,maxerr为最大误差,Xnum为方程个数,计算AA*XA=BA,请在调用前将XA中赋初值。Top

8 楼zhanghaosh(功常越天)回复于 2002-06-14 19:08:26 得分 0

最后一句写错了,请将free(XB)调到return()之前Top

9 楼iivv(让delphi去死!只要我还活着~~~)回复于 2002-06-14 19:11:04 得分 0

好多高手帮你,我就不行咯Top

10 楼hslinux(幻世龙)回复于 2002-06-14 19:26:22 得分 0

........Top

11 楼tu_ling(凌翔)回复于 2002-06-14 19:30:03 得分 0

小弟也是学生一个  
   
  课程设计和你一样马上要交  
   
  阿门上帝会保护你的!~~Top

12 楼yausang(杨)回复于 2002-06-16 21:52:56 得分 0

上图书馆借一本c语言算法的书,自己再看看,就ok了。Top

13 楼liushanyu(兵工厂)回复于 2002-06-16 22:13:48 得分 0

自己动手,学习才能提高。Top

14 楼lqtwh(←绝版恐龙)回复于 2002-07-18 16:06:57 得分 50

#include   <stdio.h>  
  #include   <malloc.h>  
  double   LagInt(double   *xa,   double   *ya,   int   n,   double   x)  
  {  
        int   i,   j;  
        double   p,   s;  
     
        s=0;  
        for(i=0;   i<=n-1;   i++)  
        {  
              p=1;  
              for(j=0;   j<=n-1;   j++)  
                    if(i   !=   j)  
                          p   =   p   *   (x   -   xa[j])   /   (xa[i]   -   xa[j]);  
              s   =   s   +   p   *   ya[i];  
        }  
        return(s);  
  }  
   
  void   main()  
  {  
  printf("-----------------------------------------------\n");  
  printf("|\n");  
  printf("|   用拉格朗日插值公式,   求指定插值点处的函数值\n");  
  printf("|\n");  
  printf("-----------------------------------------------\n\n");  
   
  int   n;  
  double   *xa,   *ya,   x;  
   
  xa   =   ya   =   NULL;  
   
  printf("请输入已知插值点个数:");  
  scanf("%d",   &n);  
   
  if(n>0)  
  {  
  xa   =   (double   *)calloc(n,   sizeof(double));  
  ya   =   (double   *)calloc(n,   sizeof(double));  
  }  
   
  if(xa   !=NULL   &&   ya   !=   NULL)  
  {  
  for(int   i=0;   i<n;   i++)  
  {  
  printf("请输入第%d个插值点(x):",   i+1);  
  scanf("%lf",   &xa[i]);  
  printf("请输入第%d个插值点处的函数值(y):",   i+1);  
  scanf("%lf",   &ya[i]);  
  }  
  printf("请输入待求插值点(x):");  
  scanf("%d",   &x);  
  printf("待求插值点处的函数值是:%.7f\n",   LagInt(xa,   ya,   n,   x));  
  }  
  else  
  {  
        printf("分配内存时发生错误。\n");  
  }  
  free(xa);  
  free(ya);  
  }  
   
  Top

相关问题

  • C#中的数值转换
  • 谁知道哪有数值算法的书(c/c++)下载?
  • 高人::命名内存读写操作:C#写内存vc++读取
  • 提一个与C#无关的题..事关重大..50分
  • c++中对于枚举类型数值的操作?
  • c#的函数支持默认参数值吗?
  • 第二个C++的问题 ---- 使用默认参数值
  • C#读取sql2000的一个数值的问题
  • C++类成员函数能否使用缺少参数值?
  • C#中十六进制的整数值如何转换为十进制的整数值?

关键词

  • 语言
  • 算法
  • loopnum
  • 推出
  • double
  • 计算
  • ya
  • xa
  • 程序
  • 方法

得分解答快速导航

  • 帖主:syx0001
  • zhanghaosh
  • lqtwh

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo