13-14-1-数值分析-课程设计报告.doc
文本预览下载声明
郑州轻工业学院
《数 值 分 析》
课 程 设 计 报 告
题 目: 1.非线性方程求解 8.最小二乘法 姓 名: 杨君芳 院(系): 数学与信息科学学院 专业班级: 信科 11-01 学 号: 541110010148 指导教师: 汪远征 时 间: 2013年12月30日至2014年1月4日
摘 要
本文的内容主要属于数值代数问题的迭代解法和差值问题。
在VC++6.0环境下对非线性方程求根的三种迭代解法(即一般迭代法,牛顿迭代法和弦截法)的算法实现,将抽象问题转化为计算机编程的一般解法思想,实现运用计算机解非线性方程的根。同时完成了运用最小二乘法的思想解决实际问题的简单设计,
本文也对该程序设计的难点、解决技巧、每种方法的理论基础、程序的算法分析、功能分析、模块设计以及算法的优点、缺点和主要参考文献等进行了详细的作答。
,
目 录
《数 值 分 析》 1
课 程 设 计 报 告 1
摘 要 2
目 录 3
1 理论基础 4
1.1 非线性方程的迭代解法 4
1.2最小二乘法 4
2 算法分析 5
2.1 功能分析 5
2.1.1非线性方程的迭代解法 5
2.2 算法分析 5
3 程序设计 8
3.1 选单和主窗口设计 8
3.1.1非线性方程的迭代解法 8
3.1.2最小二乘法 10
3.2 模块设计 14
3.2.1非线性方程的迭代解法 14
3.2.2 最小二乘法 18
4 总结 24
5 参考文献 25
1 理论基础
1.1 非线性方程的迭代解法
一般迭代法:首先将方程f(x)=0化为一个与它同解的方程x=f1(x),任取一个初值x0,代入f1(x),得到x1= f1(x0)再将x1代入f1(x)得到x2= f1(x1)以此类推,得到一个数列如果迭代格式产生的数列收敛,则迭代法收敛,得到的收敛值即为方程的根。
牛顿迭代法:用迭代法解非线性方程总可以构造 x=f(x)=x—k(x)f(x)即迭代法为牛顿迭代法。
弦截法:用牛顿法求函数的倒数使用不方便,则可以用代替,则即为弦截法
1.2最小二乘法
在研究两个变量之间的关系时,可以用回归分析的方法进行分析。当确定了描述两个变量之间的回归模型后,就可以使用最小二乘法估计模型中的参数,进而建立经验方程。简单地说,最小二乘的思想就是要使得观测点和估计点的距离的平方和达到最小。里的“二乘”指的是用平方来度量观测点粤估计点的远近(在古汉语中“平方”称为“二乘”),“最小”指的是参数的估计值要保证各个观测点与估计点的距离的平方和达到最小。
2 算法分析
2.1 功能分析
2.1.1非线性方程的迭代解法
用三个函数来实现非线性方程的三种解法,三种方法包括(即程序中的三个模块):
1、用一般迭代的方法解非线性方程:编写函数FYiban(double x)设计一个迭代格式x=f1(x), 然 后编写函数void Yiban()调用函数FYiban(double x)进行循环迭代,直到得出的结果与前一个结 果的差值的绝对值小于给定的值0.00001,即为计算结果
用牛顿法解非线性方程:编写函数FNewton(double x)计算,然后编写函数void Newton()实现,其中调用函数FNewton(double x)进行循环迭代,直到得出的结果与前一个结果的差值的绝对值小于给定的值0.00001,即为方程的根
用弦截法解非线性方程:编写函数FXuanjie(double q,double r)计算原方程函数的导数,然后编写函数void Xuanjie()实现其中调用函数FXuanjie(double q,double r)进行循环迭代,直到得出的结果与前一个结果的差值的绝对值小于给定的值0.00001,即为方程的根
2.1.2最小二乘法
已知数据对,求多项式
使得为最小,这就是一个最小二乘问题。
2.2 算法分析
通过上面各项功能的分析、分类、综合,按照模块化程序设计的要求,得到模块结构(作为后面选单设计的主要依据
2.2.1非线性方程的迭代解法
1、根据一般迭代公式: ,做出流程图如下:
定义函数fyiban 定义并初始化变量, x; x0, e=0.00001, k=1 输入初始值x x0 = x xk= fyiban(x0) k++ while |x0-x|e k1000 若k1000 真 输出近似根x 假 提示信息
2、根据牛顿迭代公式:,做出流程图如下:
定义函数fun 定义并初始化变量, x; x0, e=0.00001, k=1 输入初始值x x0 = x x = x0 - fun(x0)/dfun(x0)
显示全部