最小二乘法程序_第1页
最小二乘法程序_第2页
最小二乘法程序_第3页
最小二乘法程序_第4页
最小二乘法程序_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

最小二乘法程序 include include include include define N 5 N 个点 define T 3 T 次拟合 define W 1 权函数 define PRECISION 0 00001 float pow n float a int n int i if n 0 return 1 float res a for i 1 i n i res a return res void mutiple float a N float b T 1 float c T 1 float res 0 int i j k for i 0 i T 1 i for j 0 j T 1 j res 0 for k 0 k N k res a i k b k j c i j res void matrix trans float a T 1 float b N int i j for i 0 i N i for j 0 j T 1 j b j i a i j void init float x y 2 int n int i printf 请输入 d 个已知点 n N for i 0 i n i printf x d y d i i scanf f f void get A float matrix A T 1 float x y 2 int n int i j for i 0 i N i for j 0 j T 1 j matrix A i j W pow n x y i 0 j void print array float array T 1 int n int i j for i 0 i n i for j 0 j T 1 j printf g array i j printf n void convert float argu T 2 int n int i j k p t float rate temp for i 1 i n i for j i j n j if argu i 1 i 1 0 for p i p n p if argu p i 1 0 break if p n printf 方程组无解 n exit 0 for t 0 t n 1 t temp argu i 1 t argu i 1 t argu p t argu p t temp rate argu j i 1 argu i 1 i 1 for k i 1 k n 1 k argu j k argu i 1 k rate if fabs argu j k 0 i temp argu i n for j n 1 j i j temp argu i j root j root i temp argu i i void get y float trans A N float x y 2 float y int n int i j float temp for i 0 i n i temp 0 for j 0 j N j temp trans A i j x y j 1 y i temp void cons formula float coef A T 1 float y float coef form T 2 int i j for i 0 i T 1 i for j 0 j T 2 j if j T 1 coef form i j y i else coef form i j coef A i j void print root float a int n int i j printf d 个点的 d 次拟合的多项式系数为 n N T for i 0 i n i printf a d g i 1 a i printf n printf 拟合曲线方程为 ny x g a 0 for i 1 i n i printf g a i for j 0 j 2007 4 19 19 23 57 一级 初级 user1 100 40389872 5478010 1526752 jiangxc2004 0 2007 4 19 19 26 11 一级 初级 user1 100 40390406 5478010 1526752 jiangxc2004 0 CDATA include void main int num i float x y l m n p a b i 1 l 0 0 m 0 0 n 0 0 p 0 0 printf 请输入你想计算的 x y 的个数 scanf d if num 1 while i num printf 请输入 x 的值 scanf lf printf 请输入 y 的值 scanf lf l x m y n x y p x x i a num n l m num p l l b p m n l num p l l printf 最小二乘法所算得的斜率和截距分别为 f 和 f n a b else printf mun 输入有误 include include include include 矩阵结构体矩阵结构体 structstruct MatrixMatrix intint m n mm n m 为行数为行数 n n 为列数为列数 doubledouble pm pm 指向矩阵二维数组的指针指向矩阵二维数组的指针 初始化矩阵初始化矩阵 mtmt 并置矩阵的行为 并置矩阵的行为 m m 列为 列为 n n voidvoid InitMatrix structInitMatrix struct MatrixMatrix mt int mt int m intm int n n intint i i 指定矩阵的行和列指定矩阵的行和列 mt m m mt m m mt n n mt n n 为矩阵分配内存为矩阵分配内存 mt pm newmt pm new doubledouble m m for i 0 i m i for i 0 ipm i newmt pm i new double n double n 用用 0 0 初始化矩阵初始化矩阵 mtmt 并置矩阵的行为 并置矩阵的行为 m m 列为 列为 n n voidvoid InitMatrix0 structInitMatrix0 struct MatrixMatrix mt int mt int m intm int n n intint i j i j InitMatrix mt m n InitMatrix mt m n for i 0 i m i for i 0 i m i for j 0 j n j for j 0 jpm i j 0 0 mt pm i j 0 0 销毁矩阵销毁矩阵 mtmt voidvoid DestroyMatrix structDestroyMatrix struct MatrixMatrix mt mt intint i i 释放矩阵内存释放矩阵内存 for i 0 im i for i 0 im i deletedelete mt pm i mt pm i deletedelete mt pm mt pm 矩阵相乘矩阵相乘 mt3 mt1 mt2mt3 mt1 mt2 成功返回成功返回 1 1 失败返回 失败返回 0 0 intint MatrixMul MatrixMatrixMul Matrix mt1 Matrix mt1 Matrix mt2 Matrix mt2 Matrix mt3 mt3 intint i j k i j k doubledouble s s 检查行列号是否匹配检查行列号是否匹配 if mt1 n mt2 m mt1 m mt3 m mt2 n mt3 n if mt1 n mt2 m mt1 m mt3 m mt2 n mt3 n returnreturn 0 0 for i 0 im i for i 0 im i for j 0 jn j for j 0 jn j s 0 0 s 0 0 for k 0 kn k for k 0 kn k s s mt1 pm i k mt2 pm k j s s mt1 pm i k mt2 pm k j mt3 pm i j s mt3 pm i j s returnreturn 1 1 矩阵转置矩阵转置 mt2 T mt1 mt2 T mt1 成功返回成功返回 1 1 失败返回 失败返回 0 0 intint MatrixTran MatrixMatrixTran Matrix mt1 Matrix mt1 Matrix mt2 mt2 intint i j i j 检查行列号是否匹配检查行列号是否匹配 if mt1 m mt2 n mt1 n mt2 m if mt1 m mt2 n mt1 n mt2 m returnreturn 0 0 for i 0 im i for i 0 im i for j 0 jn j for j 0 jn j mt2 pm j i mt1 pm i j mt2 pm j i mt1 pm i j returnreturn 1 1 控制台显示矩阵控制台显示矩阵 mtmt voidvoid ConsoleShowMatrix MatrixConsoleShowMatrix Matrix mt mt intint i j i j for i 0 im i for i 0 im i printf n printf n for j 0 jn j for j 0 jn j printf 2 4fprintf 2 4f mt pm i j mt pm i j printf n printf n Guass Guass 列主元素消元法求解方程列主元素消元法求解方程 Ax b a A b Ax b a A b intint Guassl doubleGuassl double a double a double x int x int n n intint i j k numl h t i j k numl h t doubledouble l max l max l newl new double n double n h newh new int n int n for i 0 i n i for i 0 i n i h i i h i i 行标行标 for i 1 i n i for i 1 i n i max fabs a h i 1 i 1 max fabs a h i 1 i 1 numl i 1 numl i 1 列元的最大值列元的最大值 for j i j n j for j i jmax if fabs a h j i 1 max numl h j numl h j max fabs a h j i 1 max fabs a h j i 1 if max 0 00000000001 if maxi 1 if numl i 1 t h i t h i h i h numl h i h numl h numl t h numl t for j i j n j for j i j n j l j a h j i 1 a h i 1 i 1 l j a h j i 1 a h i 1 i 1 for j i j n j for j i j n j for k i k n 1 k for k i k 0 i for i n 1 i 0 i x i a h i n x i a h i n for j i 1 j n j for j i 1 j n j x i x i a h i j x j x i x i a h i j x j x i x i a h i i x i x i a h i i 清除临时数组内存清除临时数组内存 deletedelete l l deletedelete h h returnreturn 1 1 最小二乘法求解矩阵最小二乘法求解矩阵 Ax bAx b intint MinMul MatrixMinMul Matrix A MatrixA Matrix b doubleb double x x intint i j i j if b n 1 if b n 1 returnreturn 0 0 if A m b m if A m b m returnreturn 0 0 MatrixMatrix TranA TranA 定义定义 A A 的转置的转置 InitMatrix0 InitMatrix0 MatrixTran MatrixTran MatrixMatrix TranA A TranA A 定义定义 A A 的转置与的转置与 A A 的乘积矩阵的乘积矩阵 InitMatrix0 InitMatrix0 MatrixMul AMatrixMul A 的转置与的转置与 A A 的乘积的乘积 MatrixMatrix TranA b TranA b 定义定义 A A 的转置与的转置与 b b 的乘积矩阵的乘积矩阵 InitMatrix0 InitMatrix0 MatrixMul AMatrixMul A 的转置与的转置与 b b 的乘积的乘积 DestroyMatrix DestroyMatrix 释放释放 A A 的转置的内存的转置的内存 MatrixMatrix TranA A b TranA A b 定义增广矩阵定义增广矩阵 InitMatrix0 InitMatrix0 增广矩阵赋值增广矩阵赋值 for i 0 i TranA A b m i for i 0 i TranA A b m i for j 0 j TranA A b m j for j 0 j TranA A b m j TranA A b pm i j TranA A pm i j TranA A b pm i j TranA A pm i j TranA A b pm i TranA A b m TranA b

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论