函数原型

上传人:简****9 文档编号:108408742 上传时间:2019-10-23 格式:PDF 页数:13 大小:457.40KB
返回 下载 相关 举报
函数原型_第1页
第1页 / 共13页
函数原型_第2页
第2页 / 共13页
函数原型_第3页
第3页 / 共13页
函数原型_第4页
第4页 / 共13页
函数原型_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《函数原型》由会员分享,可在线阅读,更多相关《函数原型(13页珍藏版)》请在金锄头文库上搜索。

1、Jack专属专属 1 / / 基于 Visual Studio2013 编写 / 3.5 函数原型.cpp : 定义控制台应用程序的入口点。 / #include “stdafx.h“ #include #include #include using namespace std; / /显示提示信息 void MyBreak(char *fmt, .) char buffer256; va_list argptr; va_start(argptr, fmt); vsprintf_s(buffer, fmt, argptr); va_end(argptr); #ifdef VC_EXTRALEN

2、 AfxMessageBox(buffer); #else printf(buffer); getchar(); #endif/VC_EXTRALEN / / 向文件输出线性方程组 void PrintEquation(FILE *fp, double A, double b, int n, int t, char *fmt, char *title) if (title) fprintf(fp, “n%s“, title); for (int i = 0; i n; i+) fprintf(fp, “n%3d“, i + 1); for (int j = 0; j = j) ? i*(i +

3、 1) / 2 + j : j*(j + 1) / 2 + i; / / 向文件输出对称矩阵(下三角元素) void PrintM2(FILE *fp, double M, int n, int t, char *fmt, char *title, bool IsLabel) if (title) fprintf(fp, “n%s:“, title); int index = 0; for (int i = 0; i n; i+) if (IsLabel) fprintf(fp, “n%3d“, i + 1); else fprintf(fp, “n “); for (int j = 0; j

4、 0 fprintf(fp, fmt, Mindex+); fprintf(fp, “n“); / /向文件输出数组 void PrintM(FILE *fp, double A, int size, int t, char*fmt, char*title, bool IsLabel) if (title) fprintf(fp, “n %s: “, title); Jack专属专属 3 int j = 0; for (int i = 0; i size; i+) if (i%t = 0) j+; if (IsLabel) fprintf(fp, “n%3d“, j); else fprint

5、f(fp, “n“); fprintf(fp, fmt, Ai); fprintf(fp, “n“); / / 对称正定矩阵求逆(仅存下三角元素) bool inverse(double a, int n) double *a0 = new doublen; for (int k = 0; k n; k+) double a00 = a0; if (a00 + 1.0 = 1.0) deletea0; return false; for (int i = 1; i n; i+) double ai0 = ai*(i + 1) / 2; if (i = n - k - 1) a0i = -ai0

6、 / a00; else a0i = ai0 / a00; for (int j = 1; j = i; j+) a(i - 1)*i / 2 + j - 1 = ai*(i + 1) / 2 + j + ai0*a0j; Jack专属专属 4 for (int i = 1; i n; i+) a(n - 1)*n / 2 + i - 1 = a0i; an*(n + 1) / 2 - 1 = 1.0 / a00; deletea0; return true; / double Adjust(int n, int t, double A, double L, double P, double

7、X, double N, double V) double *U = new doublet;/临时数组,存储法方程自由项 /法方程系数矩阵与自由项清零 for (int i = 0; i t*(t + 1) / 2; i+) Ni = 0.0; for (int j = 0; j t; j+) Uj = 0.0; /组成法方程式 for (int k = 0; k n; k+) for (int i = 0; i t; i+) Ui += Ak*t + i * Pk * Lk; for (int j = 0; j = i; j+) Nij(i, j) += Ak*t + i * Pk * A

8、k*t + j; /计算X if (inverse(N, t) = false) deleteU; return -1.0; for (int i = 0; i t; i+) Jack专属专属 5 Xi = 0.0; for (int j = 0; j t; j+) Xi += Nij(i, j) * Uj; deleteU; /计算V double pvv = 0; for (int i = 0; i n; i+) double vi = -Li; for (int j = 0; j t; j+) vi += Ai*t + j * Xj; Vi = vi; pvv += vi*vi*Pi;

9、if (n = t) return 0.0;/n=t,无多余观测 return sqrt(pvv / (n - t); / / / 权倒数计算函数 double Calculate_q(double *Q, double *F, int t) double q = 0.0; for (int i = 0; i t; i+) for (int j = 0; j t; j+) q += Qij(i, j) * Fi * Fj; return q; / double Co_Adjust(int n, int t, double A, double L, double P, double X, dou

10、ble N, double V) double *U = new doublet; /法方程系数阵和自由项清零 Jack专属专属 6 for (int i = 0; i t*(t + 1) / 2; i+) Ni = 0.0; for (int j = 0; j t; j+) Uj = 0.0; /组成法方程 for (int k = 0; k n; k+) for (int s = 0; s n; s+) for (int i = 0; i t; i+) Ui += Ak*t + i * Pij(k, s) * Ls; for (int j = 0; j = i; j+) Nij(i, j)

11、 += Ak*t + i * Pij(k, s) * As*t + j; /法方程系数矩阵求逆 if (inverse(N, t) = false) deleteU; return -1.0; /计算X for (int i = 0; i t; i+) Xi = 0.0; for (int j = 0; j t; j+) Xi += Nij(i, j) * Uj; deleteU; /计算V for (int i = 0; i n; i+) Jack专属专属 7 double vi = -Li; for (int j = 0; j t; j+) vi += Ai*t + j * Xj; Vi

12、= vi; if (n = t) return 0.0; double pvv = Calculate_q(P, V, n);/权倒数计算 return sqrt(pvv / (n - t); / /相关观测值的条件平差 double Co_Condition(int n, int r, double B, double W, double Q, double V) int rr = r*(r + 1) / 2; double *N = new doublerr;/临时数组,存放法方程系数矩阵 for (int i = 0; i rr; i+) Ni = 0.0; double *M = ne

13、w doubler*n;/临时数组M,存放系数阵与权逆阵的乘积B*Q for (int i = 0; i r*n; i+) Mi = 0.0; /计算M for (int i = 0; i r; i+) for (int j = 0; j n; j+) for (int k = 0; k n; k+) Mi*n + j += Bi*n + k * Qij(k, j); /计算联系数法方程系数阵N=M*B int index = 0; for (int i = 0; i r; i+) for (int j = 0; j = i; j+) Jack专属专属 8 for (int k = 0; k n; k+) Nindex += Mi*n + k * Bj*n + k; in

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 管理学资料

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号