⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 min2by.c

📁 我自己写的数值分析课程设计的算法
💻 C
字号:
#include<stdio.h>
#include<stdlib.h>
#include<math.h>

#define maxn 100
//number 24
double a[maxn+1][maxn+1]={0};
double b[maxn+1]={0};
double y[maxn+1]={0},x[maxn+1]={0};

double y1[maxn+1]={0};
double x1[maxn+1]={0};

int n;
int m;

void makematrix();

void main()
{
	
	int i,j,k;
	double add=0;
	double aa,bb;
	char rab[5];
	double E;
	FILE *fin, *fout;

	fin=fopen("fin.txt","r");
	fscanf(fin," %d %d",&n, &m);
	fscanf(fin," %s",rab);

	for(i=1;i<=m;i++)
	{
		fscanf(fin,"%lg",&(x1[i]));
		x1[i]=log(x1[i]);
	}
	fscanf(fin," %s",rab);
	for(i=1;i<=m;i++)
	{
		fscanf(fin," %lg",&(y1[i]));
		y1[i]=log(y1[i]);
	}

	makematrix();

	fout=fopen("fout.txt","w");
	if (fout==NULL) printf("File cannot be created!\n");
	fprintf(fout,"matrix:\n");
	for(i=1;i<=n;i++)
	{
		for(j=1;j<=n;j++)
		{
			fprintf(fout,"%lg ",a[i][j]);
		}
		fprintf(fout,"%lg \n",b[i]);
	}

	a[1][1]=pow(a[1][1],.5);
	for(i=2;i<=n;i++)
	{
		a[i][1]=a[i][1]/a[1][1];
	}
	for(j=2;j<=n-1;j++)
	{
		add=0;
		for(k=1;k<=j-1;k++)
			add+=pow(a[j][k],2);
		a[j][j]=pow(a[j][j]-add,.5);

		for(i=j+1;i<=n;i++)
		{
			add=0;
			for(k=1;k<=j-1;k++)
				add+=a[j][k]*a[i][k];
			a[i][j]=(a[i][j]-add)/a[j][j];
		}
	}
	add=0;
	for(k=1;k<=n-1;k++)
		add+=pow(a[n][k],2);
	a[n][n]=pow(a[n][n]-add,.5);
	for(i=1;i<=n;i++)
		for(j=i+1;j<=n;j++)
			a[i][j]=0;
	
	fprintf(fout,"G:\n%d\n",n);
	for(i=1;i<=n;i++)
	{
		for(j=1;j<=n;j++)
			fprintf(fout,"%lg ",a[i][j]);
		fprintf(fout,"\n");
	}

	y[1]=b[1]/a[1][1];
	for(i=2;i<=n;i++)
	{
		add=0;
		for(j=1;j<=i-1;j++)
			add+=a[i][j]*y[j];
		y[i]=(b[i]-add)/a[i][i];
	}
	x[n]=y[n]/a[n][n];
	for(i=n-1;i>=1;i--)
	{
		add=0;
		for(j=i+1;j<=n;j++)
			add+=a[j][i]*x[j];
		x[i]=(y[i]-add)/a[i][i];
	}

	fprintf(fout,"Y:\n");
	for(i=1;i<=n;i++)
	{
		fprintf(fout,"%lg ",y[i]);	
	}
	fprintf(fout,"\n");

	fprintf(fout,"X:\n");
	for(i=1;i<=n;i++)
	{
		fprintf(fout,"%lg ",x[i]);	
	}
	fprintf(fout,"\n");
	aa=x[2];//the 20 question
	bb=exp(x[1]);//the 20 question

	fprintf(fout,"a=:%lg\nb=:%lg\n",aa,bb);

	//the 20 question
	add=0;
	for(i=1;i<=m;i++)
	{
		add+=pow(exp(y1[i])-bb*pow(exp(x1[i]),aa),2);
	}
	E=pow(add/7,.5);

	fprintf(fout,"E=:%lg\n",E);

	fclose(fin);
	fclose(fout);
}

void makematrix()
{
	int i,j,k;

	for(i=1;i<=n;i++)
		for(j=1;j<=i;j++)
		{
			a[i][j]=0;
			k=1;
			while(k<=m)
			{
				a[i][j]+=pow(x1[k],i+j-2);
				k++;
			}
			
			a[j][i]=a[i][j];
		}
	for(i=1;i<=n;i++)
	{
		b[i]=0;
		for(j=1;j<=m;j++)
		{	
			b[i]+=pow(x1[j],i-1)*y1[j];
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -