实验二 非线性方程求根实验报告.docx
- 文档编号:23126045
- 上传时间:2023-05-08
- 格式:DOCX
- 页数:8
- 大小:212.38KB
实验二 非线性方程求根实验报告.docx
《实验二 非线性方程求根实验报告.docx》由会员分享,可在线阅读,更多相关《实验二 非线性方程求根实验报告.docx(8页珍藏版)》请在冰豆网上搜索。
实验二非线性方程求根实验报告
实验报告
学院:
电子信息工程
实验课程:
计算方法
学生姓名:
学号:
专业班级:
通信工程
实验二非线性方程求根
1目的与要求
(1)进一步熟练掌握求解非线性方程的二分法与Newton迭代法。
(2)掌握二分法与Newton迭代法的算法,能运用程序设计语言和此方法编制软件求出任意指定一元三次方程在给定点附近的根。
2实验内容
用二分法和Newton迭代法求方程
在1.5附近的根,精确到
,输出每次的迭代结果并统计所用的迭代次数。
3实验原理
(1)二分法实验原理
取[a,b]区间二等分的中点x1=(a+b)/2
(1)若f(x1)=0,则x1是f(x)=0的实根。
(2)若f(a)f(x1)<0成立,则x*必在区间(a,x1)内,取a1=a,b1=x1;否则x*必在区间(x1,b)内,则取a1=x1,b1=b,这样,得到新区间[a1,b1],其长度为[a,b]的一半。
(3)如此继续下去,进行n次等分
(2)Newton迭代法实验原理
4程序设计
(1)流程图
二分法程序流程图
Newton迭代法程序流程图
(2)程序代码
二分法求非线性方程根
#include
#include
doublefun1(doublex)
{
returnx*x*x-x-1;
}
doublefun2(doublex1,doublex2)
{
return(x1+x2)/2;
}
main()
{
intn=1;
floata,b,c;
printf("二分法求非线性方程的根\n");
scanf("a=%f,b=%f",&a,&b);
if(fun1(a)*fun1(b)<0)
{
while(fabs(b-a)>1e-3)
{
c=fun2(a,b);
if(fun1(a)*fun1(c)<0)
{
b=c;
}
elseif(fun1(c)*fun1(b)<0)
{
a=c;
}
else
{
break;
}
printf("当前计算次数为%d计算结果为%lf\n",n,fun2(a,b));
n++;
}
}
else
{
printf("不符合二分法使用条件,请重新输入:
\n");
}
}
Newton迭代法
#include
#include
doublefun1(doublex)
{
returnx*x*x-x-1;
}
doublefun2(doublex)
{
return3*x*x-1;
}
doubleroot(doublenum)
{
doublex1,x0;
intn=1;
x0=num;
if(fun2(x0)==0)
{
printf("Algorithmfailed.Exit!
");
}
else
{
x1=x0-fun1(x0)/fun2(x0);
printf("Newton迭代法求根\n");
}
while(fabs(x1-x0)>1e-3)
{
printf("当前计算次数为%d计算结果为%lf\n",n,x1);
x0=x1;
x1=x0-fun1(x0)/fun2(x0);
n++;
}
}
main()
{
root(1.5);
}
5实验结果与分析
(1)二分法求根结果界面
(2)Newton迭代法求根结果界面
分析:
(1)本次试验两种算法均采用了while循环及if-else判断语句,编程函数并由主函数调用,较简单的实现了二分法与Newton迭代法的编程任务。
(2)由本次试验结果来看,同等精度条件下,Newton迭代法收敛快,稳定好,计算次数少,是求解非线性方程根的有效方法。
但是同时可以看出二分法具有计算简单,程序容易实现,可在大范围内求根的特点。
(3)此次试验较好的完成了任务,巩固了课堂知识。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验二 非线性方程求根实验报告 实验 非线性 方程 求根 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)