资源简介
这是数值分析中的反幂法代码,有需要的可以下载试用
代码片段和文件信息
#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单片机的出租车计费系统
- 下一篇:天线的分类与选择与全向天线
相关资源
- 数值分析课程论文
- 数值分析 第5版 李庆扬
- 数值分析实验报告完整版
- 数值分析答案
- 数值分析(原书第2版)萨奥尔 、 裴
- 数值分析王兵团高清扫描版教材
- 数值分析北航大作业 QR分解求特征值
- 数值分析第五版_李庆扬,王能超,易
- 东北大学数值分析报告
- 安徽大学数值分析实验及实验报告
- Visual Fortran 常用数值算法集代码
- 数值分析.索尔.习题参考答案
- 数值分析公式
- 清华大学高等数值分析第一次上机实
- 哈工大历年数值分析试题
- 改进的平方根法 数值分析
- 北航数值分析大作业第一题
- ANSYS工程结构数值分析命令流
- 数值分析教案
- 数值分析实验报告-数值分析实验报告
- 数值分析第四版课后习题答案 李庆扬
- 数值分析答案 第五版 李庆扬
- 北航数值分析大作业一二三题完整版
- 清华大学-高等数值分析-插值实验报告
- 数值分析试题及答案试题全
- 清华大学高等数值分析第二次上机实
- 合肥工业大学计算方法实验报告.zip
- ABAQUS的混凝土数值分析与模拟
- 2018-2019北航研究生数值分析A试题.zi
- 北航数值分析大作业一二三题
评论
共有 条评论