-
大小: 97KB文件類型: .zip金幣: 2下載: 1 次發(fā)布日期: 2021-12-02
- 語言: 其他
- 標(biāo)簽:
資源簡介
華電數(shù)值計算方法課本算法,包括列主元消去 LU分解 最小二乘法等九個算法

代碼片段和文件信息
#include
#include“windows.h“
#include
#include
//#include?
#include??
double?aaa[15]b[16];
int?gy(double?a[15]int?n);
void?shuchu(double?a[15]int?n);
void?shuru();
int?zhengshu(double?x)//這個函數(shù)的建立是為了使這個程序能夠處理系數(shù)不是整數(shù)的方程組把任意位數(shù)的小數(shù)轉(zhuǎn)換為整數(shù),如0.004變?yōu)?。
{
int?ij;
char?ss[20]s[20];//這里沒有采用將小數(shù)一直×10的方法是因為c語言對于浮點數(shù)的內(nèi)存問題,對于三位以上小數(shù)進(jìn)行的保留失真
gcvt(x8ss);//把浮點數(shù)轉(zhuǎn)化為字符串,最多8位小數(shù)精度
int?n=strlen(ss);
for(?i=0j=0;i {
if(ss[i]!=‘.‘)
{
s[j]=ss[i];
j++;
}
}
s[n-1]=‘\0‘;
j=atoi(s);//把移除小數(shù)點后的字符串轉(zhuǎn)化為整型數(shù)字
return?j;
}
int?gb(double?adouble?b)//求兩個正整數(shù)的最小公倍數(shù)
{
int?ija1b1;
a1=zhengshu(a);
b1=zhengshu(b);
for(i=a1;i {
if(i%a1==0&&i%b1==0)
break;
}
j=i/b;
return?j;
}
void?jisuan(double?a[15][16]int?n)//化簡并計算矩陣這里沒有采用書上的算法,因為書上的算法采用直接相除會產(chǎn)生一定的誤差,這里采取手算的時候兩行同乘到最小公倍數(shù)做差的方法計算;
{
double?kmaxsaa[15];
int ?ijNtgb1gb2pgy1;
N=n;
for(i=0;i {
if(a[i][0]<0)
{
for(j=0;j a[i][j]=-a[i][j];
}
}
for(t=0;t {
max=a[t][t];//從這一步開始是一個大循環(huán)找出第t列消元后的最大值
for(i=t;i {
//max=a[i][1];
if(max max=a[i][t];
}
for(i=t;i {
if(max==a[i][t])
{
for(j=0;j<=N;j++)
{
k=a[t][j];
a[t][j]=a[i][j];
a[i][j]=k;
}
break;//防止出現(xiàn)有兩個相同最大數(shù)時的情況
}
}
for(i=t+1;i {
if(a[i][t]!=0)
{
gb1=gb(maxa[i][t]);//gb1等于第i行乘的倍數(shù)
gb2=gb(a[i][t]max);//gb2等于主元行乘的倍數(shù)
for(j=0;j<=N;j++)//置換第i行
{
a[i][j]=gb1*a[i][j]-gb2*a[t][j];
}
}
if(a[i][t]==0)
{
for(j=0;j<=N;j++)
a[i][j]=a[i][j];
}
if(a[i][t+1]<0)//保證第一個非零的數(shù)字是正數(shù)以確保gb函數(shù)有效
{
for(p=0;p<=N;p++)
{
a[i][p]=-a[i][p];
}
}
double?aa[15];//從這一行開始對每一行進(jìn)行化簡除以最大公約數(shù),這是為了防止出現(xiàn)高階情況下不化簡出現(xiàn)的數(shù)字過大進(jìn)而溢出計算機無法處理的情況
for(j=0;j<=N;j++)
{
if(a[i][j]>0)
{
aa[j]=a[i][j];
}
else?
{
aa[j]=-a[i][j];
}
}
gy1=gy(aaN);//調(diào)用求公約數(shù)的函數(shù),對每一行進(jìn)行化簡
for(j=0;j<=N;j++)
{
a[i][j]=a[i][j]/gy1;//對每一行進(jìn)行化簡除以最大公約數(shù)
}
}
}
for(i=0j=0;j<=N;j++)
{
if(a[i][j]>0)
{
aa[j]=a[i][j];
}
else?
{
aa[j]=-a[i][j];
}
}
gy1=gy(aaN);
for(j=0;j<=N;j++)
{
a[i][j]=a[i][j]/gy1;
}
cout<<“化簡后的結(jié)果是:“;
for(i=0;i {
cout< for(j=0;j<=N;j++)
{
cout< }
}
cout< if(a[N-1][N-1]==0.0)//有待改進(jìn)
{
cout<<“方程沒有唯一確定的解“;
exit(0);
}
else
{
b[0]=a[N-1][N]*1.0/a[N-1][N-1];//求出最后一個解
for(j=1;j {
s=0.0;
for(i=0;i {
s=s+b[i]*a[N-1-j][N-1-i];
}
if(a[N-1-j][N-1-j]!=0)
b[j]=(a[N-1-j][N]-s)/a[N-1-j][N-1-j]*1.0;
else
{
cout<<“方程無解“< exit(0);
}
}
}
for(i=N-1;i>=0;i--)
{
cout<<“x“<
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2017-04-08?11:31??數(shù)值\
?????文件???????????9??2016-10-21?20:26??數(shù)值\in.txt
?????文件??????????54??2016-10-18?20:24??數(shù)值\LU分解in.txt
?????文件?????????443??2016-10-24?18:31??數(shù)值\LU分解out.txt
?????文件???????????0??2016-10-05?11:01??數(shù)值\LU分解法.ASP
?????文件????????5158??2016-10-24?18:31??數(shù)值\LU分解法.CPP
?????文件????????3427??2016-10-24?18:30??數(shù)值\LU分解法.DSP
?????文件?????????524??2016-10-24?18:31??數(shù)值\LU分解法.DSW
?????文件???????41984??2016-10-24?18:31??數(shù)值\LU分解法.ncb
?????文件???????48640??2016-10-24?18:31??數(shù)值\LU分解法.OPT
?????文件?????????762??2016-10-24?18:31??數(shù)值\LU分解法.PLG
?????文件??????????87??2016-10-24?18:57??數(shù)值\列主元in.txt
?????文件??????????50??2016-10-21?09:03??數(shù)值\列主元in1.txt
?????文件??????????75??2016-10-24?20:22??數(shù)值\列主元out.txt
?????文件????????5334??2016-10-24?20:22??數(shù)值\列主元消去.cpp
?????文件????????3451??2016-10-24?20:22??數(shù)值\列主元消去.dsp
?????文件?????????528??2016-10-24?20:22??數(shù)值\列主元消去.dsw
?????文件???????33792??2016-10-24?20:22??數(shù)值\列主元消去.ncb
?????文件???????48640??2016-10-24?20:22??數(shù)值\列主元消去.opt
?????文件?????????774??2016-10-24?20:22??數(shù)值\列主元消去.plg
?????文件????????3223??2016-10-09?12:52??數(shù)值\列主元消去法.cpp
?????文件????????3475??2016-10-21?18:42??數(shù)值\列主元消去法.dsp
?????文件?????????532??2016-10-21?18:42??數(shù)值\列主元消去法.dsw
?????文件????????5162??2016-10-18?21:44??數(shù)值\列主元消去法.h
?????文件???????41984??2016-10-21?18:42??數(shù)值\列主元消去法.ncb
?????文件???????48640??2016-10-21?18:42??數(shù)值\列主元消去法.opt
?????文件?????????898??2016-10-21?18:42??數(shù)值\列主元消去法.plg
?????文件????????5587??2016-11-27?18:24??數(shù)值\列主元第三版.cpp
?????文件????????3475??2016-11-27?18:20??數(shù)值\列主元第三版.dsp
?????文件?????????532??2016-11-27?18:24??數(shù)值\列主元第三版.dsw
?????文件???????41984??2016-11-27?18:24??數(shù)值\列主元第三版.ncb
............此處省略72個文件信息
評論
共有 條評論