10个重要的算法C语言实现源代码(8-9-10-----秦九昭和幂法和高斯塞德尔)


8.秦九昭算法
#include <math.h> float qin(float a[],int n,float x) { float r=0; int i; for(i=n;i>=0;i--) r=r*x+a[i]; return r; } main() { float a[50],x,r=0; int n,i; do { printf("Input frequency:"); scanf("%d",&n); } while(n<1); printf("Input value:"); for(i=0;i<=n;i++) scanf("%f",&a[i]); printf("Input frequency:"); scanf("%f",&x); r=qin(a,n,x); printf("Answer:%f",r); getch(); }

9.幂法
#include<stdio.h> #include<math.h> #define N 100 #define e 0.00001 #define n 3 float x[n]={0,0,1}; float a[n][n]={{2,3,2},{10,3,4},{3,6,1}}; float y[n]; main() { int i,j,k; float xm,oxm; oxm=0; for(k=0;k<N;k++) { for(j=0;j<n;j++) { y[j]=0; for(i=0;i<n;i++) y[j]+=a[j][i]*x[i]; } xm=0; for(j=0;j<n;j++) if(fabs(y[j])>xm) xm=fabs(y[j]); for(j=0;j<n;j++) y[j]/=xm; for(j=0;j<n;j++) x[j]=y[j]; if(fabs(xm-oxm)<e) { printf("max:%f/n/n",xm); printf("v[i]:/n"); for(k=0;k<n;k++) printf("%f/n",y[k]); break; } oxm=xm; } getch(); }
10.高斯塞德尔
#include<math.h> #include<stdio.h> #define N 20 #define M 99 float a[N][N]; float b[N]; int main() { int i,j,k,n; float sum,no,d,s,x[N]; printf("/nInput dim of n:"); scanf("%d",&n); if(n>N) { printf("Faild! Check if 0<n<N!/n "); getch(); return 1; } if(n<=0) { printf("Faild! Check if 0<n<N!/n ");getch();return 1;} printf("Input a[i,j],i,j=0…%d:/n",n-1); for(i=0;i<n;i++) for(j=0;j<n;j++) scanf("%f",&a[i][j]); printf("Input b[i],i=0…%d:/n",n-1); for(i=0;i<n;i++) scanf("%f",&b[i]); for(i=0;i<n;i++) x[i]=0; k=0; printf("/nk=%dx=",k); for(i=0;i<n;i++) printf("%12.8f",x[i]); do { k++; if(k>M){printf("/nError!/n”);getch();} break; } no=0.0; for(i=0;i<n;i++) { s=x[i]; sum=0.0; for(j=0;j<n;j++) if (j!=i) sum=sum+a[i][j]*x[j]; x[i]=(b[i]-sum)/a[i][i]; d=fabs(x[i]-s); if (no<d) no=d; } printf("/nk=%2dx=",k); for(i=0;i<n;i++) printf("%f",x[i]); } while (no>=0.1e-6); if(no<0.1e-6) { printf("/n/n answer=/n"); printf("/nk=%d",k); for (i=0;i<n;i++) printf("/n x[%d]=%12.8f",i,x[i]); } getch(); }
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值