资源简介
这是数值分析中的反幂法代码,有需要的可以下载试用
代码片段和文件信息
#include
#include
#include
#define N 3
#define D 0.005
double Abs(double x)
{
return x >= 0 ? x : -x;
}
double Fan_two(double x[])
{
double sum = 0;
int i;
for (i = 0; i < N; i++)
{
sum += pow(x[i]2);
}
return sqrt(sum);
}
void * Solve(double (*A)[N] double *bdouble *xdouble (*T)[N]double *tb)
{
double y[N];
double s[N];
double sum = 0;
double temp;
double max;
int i j kt;
int M[N];
for (i = 0; i < N; i++)
{
for (j = 0; j < N; j++)
T[i][j] = A[i][j];
}
for (i = 0; i < N; i++)
tb[i] = b[i];
//计算数组U L
for (k = 0; k < N; k++)
{
//计算中间量//////////////////////////////
i = k;
while (i < N)
{
for (t = 0; t <= k - 1; t++)
{
sum += A[i][t] * A[t][k];
}
s[i] = A[i][k] - sum;
i++;
sum = 0;
}
////////////////////////////////////////////
//选行号///////////////////////////////////////
max = Abs(s[k]);
M[k] = k;
for (i = k+1; i < N; i++)
{
if (max < Abs(s[i]))
{
M[k] = i;
max = Abs(s[i]);
}
}
///////////////////////////////////////////////
//交换//////////////////////////////////////////////
if (k != M[k])
{
for (t = 0; t <= k - 1; t++)
{
temp = A[k][t];
A[k][t] = A[M[k]][t];
A[M[k]][t] = temp;
}
for (t = k; t < N; t++)
{
temp = A[k][t];
A[k][t] = A[M[k]][t];
A[M[k]][t] = temp;
}
temp = s[k];
s[k] = s[M[k]];
s[M[k]] = temp;
}
////////////////////
//计算///////////////////
j = k + 1;
i = k + 1;
A[k][k] = s[k];
while (1)
{
if (k == N - 1)
break;
if (N == j)
break;
for (t = 0; t <= k - 1; t++)
{
sum += A[k][t] * A[t][j];
}
A[k][j] = A[k][j] - sum;
j++;
sum = 0;
if (i == N)
break;
A[i][k] = s[i] / A[k][k];
i++;
}
}
//求Qb/////////////////////////////
for (k = 0; k < N - 1; k++)
{
t = M[k];
temp = b[k];
b[k] = b[t];
b[t] = temp;
}
//////////////////////////////////////
//计算解向量
sum = 0;
y[0] = b[0];
for (i = 1; i < N; i++)
{
for (t = 0; t <= i - 1; t++)
{
sum += A[i][t] * y[t];
}
y[i] = b[i] - sum;
sum = 0;
}
x[N-1] = y[N-1] / A[N-1][N-1];
for (i = N - 2; i >= 0; i--)
{
for (t = i+1; t <= N-1; t++)
{
sum += A[i][t] * x[t];
}
x[i] = (y[i] - sum) / A[i][i];
sum = 0;
}
for (i = 0; i < N; i++)
{
for (j = 0; j < N; j++)
A[i][j] = T[i][j];
}
for (i = 0; i < N; i++)
b[i] = tb[i];
return NULL;
}
void main()
{
double u[N] = {1.0 1.0 1.0};
double A[N][N] = {6.0 -12.0 6.0 -21.0 -3.0 24.0 -12.0 -12.0 51};
double T[N][N];
double ty[N];
double y[N];
double ita;
double bta = 1;
double sum = 0;
double temp = 0;
int ijk = 0;
while (Abs(1/bta - 1/temp) / Abs(1/bta) > D)
{
printf(“k = %dbta = %lf\n“kbta);
for (i = 0; i < N; i++)
{
pri
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 33792 2011-10-23 13:48 反幂法\Debug\vc60.idb
文件 45056 2011-10-23 13:48 反幂法\Debug\vc60.pdb
文件 217145 2011-10-23 13:48 反幂法\Debug\反幂法.exe
文件 226700 2011-10-23 13:48 反幂法\Debug\反幂法.ilk
文件 9472 2011-10-23 13:48 反幂法\Debug\反幂法.obj
文件 223872 2011-10-21 21:32 反幂法\Debug\反幂法.pch
文件 459776 2011-10-23 13:48 反幂法\Debug\反幂法.pdb
文件 3643 2011-10-23 13:48 反幂法\反幂法.cpp
文件 3403 2011-10-21 16:30 反幂法\反幂法.dsp
文件 520 2011-10-21 16:51 反幂法\反幂法.dsw
文件 41984 2011-10-23 13:48 反幂法\反幂法.ncb
文件 48640 2011-10-23 13:48 反幂法\反幂法.opt
文件 1233 2011-10-23 13:48 反幂法\反幂法.plg
目录 0 2011-10-23 13:48 反幂法\Debug
目录 0 2011-10-23 13:48 反幂法
----------- --------- ---------- ----- ----
1315236 15
- 上一篇:基于51单片机的出租车计费系统
- 下一篇:天线的分类与选择与全向天线
相关资源
- 北京航空航天大学研究生数值分析计
- 数值分析导论 第三版
- 东北大学软件学院数值分析历年试题
- 论文研究 - 从上方加热的半开放式人
- 降雨渗流对边坡稳定性影响的数值分
- 数值分析-研究生课件
- 转子碰摩系统的非线性数值分析
- 吸湿作用对牙齿充填材料的损伤数值
- 黔阳煤矿多煤层采动地表变形破坏数
- 《矩阵论与数值分析理论及其工程应
- 数值分析上机实践报告.docx
- 中国科学院大学数值分析考试试题肖
- 数值分析试卷.pdf
- 数值分析第五版答案(全).docx
- 数值分析ppt清华李庆杨第五版
- 《数值分析》课后习题答案——华中
- 数值分析英文版第2版Timothy Sauer著
- 数值分析李红课后答案
- 数值分析全面指导+分析
- 数值分析第二版张铁编习题答案
- 数值分析第五版课后答案
- 《数值分析》第五版课后习题答案
- 数值分析第4版(李庆扬、王能超、易
- 东南大学数值分析上机题
- 数值分析课后习题答案
- 数值分析课件
- 数值分析第5版课后习题答案
- 武汉大学2017年研究生数值分析期末考
- 中科院数值分析课件完整版
- 北航数值分析A课本A
评论
共有 条评论