用c语言迭代法和matlab.docx
文本预览下载声明
计算方法实验报告
实 验 名 称
用c语言迭代法和matlab求一个圆与椭圆及x、y轴在第一象限内相切
北京航空航天大学
机械工程及自动化学院
飞行器制造工程系
学号:
姓名: 杨新航
电话: _
Email: 163.com
指导教师:宁涛 闫光荣 胡毕富 陈甜甜
taoning@
2016 年 11 月 17 日
目录
1 实验目的????????????????????????????????????????????????????????????????????????????????????????????????????????????????
2 实验内容????????????????????????????????????????????????????????????????????????????????????????????????????????????????
3 软硬件条件介绍???????????????????????????????????????????????????????????????????????????????????????????????????
4 实验步骤??????????????????????????????????????????????????????????????????????????????????????????????????????????????????
4.1 问题分析??????????????????????????????????????????????????????????????????????????????????????????????????????
4.2 算法设计????????????????????????????????????????????????????????????????????????????????????
4.3 程序流程图?????????????????????????????????????????????????????????????????????????????????????????
4.4 测试规划???????????????????????????????????????????????????????????????????????????????????????????????????????????
5 实验结果??????????????????????????????????????????????????????????????????????????????????????????????????????????????????
6 实验总结??????????????????????????????????????????????????????????????????????????????????????????????????????????????????
7 matlab求解………………………………………………………………………….
1 实验目的
了解迭代法求非线性方程组的解
2 实验内容
用C语言以迭代法编程,求一个圆与椭圆及x、y轴在第一象限内相切,将此圆的圆心及半径输出。
3 软硬件条件介绍
软件:c语言开发软件,如vs
硬件:计算机
4 实验步骤
4.1问题分析
设相切点为(x,y),圆的半径为r,因为圆与x,y轴相切,所以设圆心为(r,r),圆的方程为。在切点上,圆与椭圆的切线斜率相同,先求椭圆及圆的斜率。
,得到,圆的斜率为
则可列方程,与及形成非线性方程组
设,
求Jaccobi矩阵得
由牛顿迭代法=0
在程序中先给定初始值,代入上式即得线性方程组,用高斯消去法求解得,然后算出,这样迭代下去直到与真值间的误差达到事先给定的误差范围,停止迭代,输出。
4.2算法设计
主要是非线性方程组带入初值后变为线性方程组,用高斯消去法加上列主元素法要求解。该算法集中在Dx函数中。
主函数中是一个循环,多次判断迭代,最终求得符合精度要求的解。若初值有问题,则输出无效。
4.3程序流程图
开辟F(X),J(X),dx矩阵空间
开始
输入x,y,r,a,b
调用Fx函数计算出
结束
输出“无解,请改变初始值”
dx是否
给x,y,r赋值为X+dx矩阵
是
Dx函数返回值是否为1
调用Dx函数计算出dx
调用Jx函数计算出jaccobi矩阵
输出x, y, fabs(r),r, r,循环次
显示全部