声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2820|回复: 3

[编程技巧] 请问谁知道Remes的matlab程序代码

[复制链接]
发表于 2005-9-21 21:07 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
谢谢
回复
分享到:

使用道具 举报

发表于 2005-9-21 22:10 | 显示全部楼层

回复:(brianlei)请问谁知道Remes的matlab程序代码

C常用算法程序集里有C语言的remes算法,改写一下就行了
发表于 2005-9-22 09:15 | 显示全部楼层
<P>谁能贴一下c程序,我试着翻译一下</P>
发表于 2005-9-23 10:03 | 显示全部楼层

回复:(brianlei)请问谁知道Remes的matlab程序代码

<P><FONT color=#ff0000><STRONG>主程序:</STRONG></FONT><BR><BR>  #include "math.h"<BR>  #include "stdio.h"<BR>  #include "hremz.c"<BR>  main()<BR>  { int i;<BR>    double a,b,eps,p[5];<BR>    a=-1.0; b=1.0; eps=1.0e-10;<BR>    hremz(a,b,p,4,eps);<BR>    printf("\n");<BR>    for (i=0; i&lt;=3; i++)<BR>      printf("p(%2d)=%e\n",i,p);<BR>    printf("\n");<BR>    printf("MAX(p-f)=%e\n",p[4]);<BR>    printf("\n");<BR>  }</P>
<P>  double hremzf(x)<BR>  double x;<BR>  { double y;<BR>    y=exp(x);<BR>    return(y);<BR>  }<BR><BR><BR><BR><FONT color=#ff0000><STRONG>remes程序:</STRONG></FONT><BR><BR>  #include "math.h"<BR>  void hremz(a,b,p,n,eps)<BR>  int n;<BR>  double a,b,eps,p[];<BR>  { extern double hremzf();<BR>    int i,j,k,m;<BR>    double x[21],g[21],d,t,u,s,xx,x0,h,yy;<BR>    if (n&gt;20) n=20;<BR>    m=n+1; d=1.0e+35;<BR>    for (k=0; k&lt;=n; k++)<BR>      { t=cos((n-k)*3.1415926/(1.0*n));<BR>        x[k]=(b+a+(b-a)*t)/2.0;<BR>      }<BR>    while (1==1)<BR>      { u=1.0;<BR>        for (i=0; i&lt;=m-1; i++)<BR>          { p=hremzf(x);<BR>            g=-u; u=-u;<BR>          }<BR>        for (j=0; j&lt;=n-1; j++)<BR>          { k=m; s=p[k-1]; xx=g[k-1];<BR>            for (i=j; i&lt;=n-1; i++)<BR>              { t=p[n-i+j-1]; x0=g[n-i+j-1];<BR>                p[k-1]=(s-t)/(x[k-1]-x[m-i-2]);<BR>                g[k-1]=(xx-x0)/(x[k-1]-x[m-i-2]);<BR>                k=n-i+j; s=t; xx=x0;<BR>              }<BR>          }<BR>        u=-p[m-1]/g[m-1];<BR>        for (i=0; i&lt;=m-1; i++)<BR>          p=p+g*u;<BR>        for (j=1; j&lt;=n-1; j++)<BR>          { k=n-j; h=x[k-1]; s=p[k-1];<BR>            for (i=m-j; i&lt;=n; i++)<BR>              { t=p[i-1]; p[k-1]=s-h*t;<BR>                s=t; k=i;<BR>              }<BR>          }<BR>        p[m-1]=fabs(u); u=p[m-1];<BR>        if (fabs(u-d)&lt;=eps) return;<BR>        d=u; h=0.1*(b-a)/(1.0*n);<BR>        xx=a; x0=a;<BR>        while (x0&lt;=b)<BR>          { s=hremzf(x0); t=p[n-1];<BR>            for (i=n-2; i&gt;=0; i--)<BR>              t=t*x0+p;<BR>            s=fabs(s-t);<BR>            if (s&gt;u) { u=s; xx=x0;}<BR>            x0=x0+h;<BR>          }<BR>        s=hremzf(xx); t=p[n-1];<BR>        for (i=n-2; i&gt;=0; i--)<BR>          t=t*xx+p;<BR>        yy=s-t; i=1; j=n+1;<BR>        while ((j-i)!=1)<BR>          { k=(i+j)/2;<BR>            if (xx&lt;x[k-1]) j=k;<BR>            else i=k;<BR>          }<BR>        if (xx&lt;x[0])<BR>          { s=hremzf(x[0]); t=p[n-1];<BR>            for (k=n-2; k&gt;=0; k--)<BR>              t=t*x[0]+p[k];<BR>            s=s-t;<BR>            if (s*yy&gt;0.0) x[0]=xx;<BR>            else<BR>              { for (k=n-1; k&gt;=0; k--)<BR>                  x[k+1]=x[k];<BR>                x[0]=xx;<BR>              }<BR>          }<BR>        else<BR>          { if (xx&gt;x[n])<BR>              { s=hremzf(x[n]); t=p[n-1];<BR>                for (k=n-2; k&gt;=0; k--)<BR>                  t=t*x[n]+p[k];<BR>                s=s-t;<BR>                if (s*yy&gt;0.0) x[n]=xx;<BR>                else<BR>                  { for (k=0; k&lt;=n-1; k++)<BR>                      x[k]=x[k+1];<BR>                    x[n]=xx;<BR>                  }<BR>              }<BR>            else<BR>              { i=i-1; j=j-1;<BR>                s=hremzf(x); t=p[n-1];<BR>                for (k=n-2; k&gt;=0; k--)<BR>                  t=t*x+p[k];<BR>                s=s-t;<BR>                if (s*yy&gt;0.0) x=xx;<BR>                else x[j]=xx;<BR>              }<BR>          }<BR>      }<BR>  }</P>
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-29 00:07 , Processed in 0.058520 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表