第一范文网 - 专业文章范例文档资料分享平台

数值实验报告

来源:用户分享 时间:2025/7/14 1:42:56 本文由杩芥ⅵ 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

实验2 方程求根

2.1 目的与要求

(1)通过对二分法与牛顿迭代法作编程练习与上机运算,进一步体会二分法与牛顿迭代法的不同特点。

(2)编写割线迭代法的程序,求非线性方程的解,并与牛顿迭代法作比较。

2.2 二分法

2.2.1 算法

给定区间[a,b],并设f(a)与f(b)符号相反,取ε为根的容许误差,δ为∣f(a)∣的容许误差。

①令c=(a+b)/2。

②如果(c-a)<ε或∣f(c)∣<δ,则输出c,结束;否则执行③ ③如果f(a)f(c)>0,则令a=c;否则令b=c,重复①②③。

2.2.2程序与实例

求方程f(x)=x3?4x2?10?0在1.5附近的根。

#include #include #define eps 5e-6 #define delta 1e-6

float Bisection(float a,float b,float(*f)(float)) { }

float f(float x) { }

int main(int argc ,char*argv[]) {

float a=1,b=2; float x;

return x*x*x+4*x*x-10;

float c,fc,fa=(*f)(a),fb=(*f)(b); int n=1;

printf(\二分次数\\t\\tc\\t\\t f(c)\\n\while(1) {

if (fa*fb>0) {printf(\不能用二分法求解\ c=(a+b)/2,fc=(*f)(c);

printf(\ if(fabs(fc)

}

x=Bisection(a,b,f);

printf(\方程的根为%f\\n\return 0;

实验3牛顿迭代法

3.1 算法

给定初始值x0,ε为根的容许误差,η为∣f(x)∣的容许误差,N为迭代次数的容许值。 ①如果

f'(x0)?0或迭代次数大于N,则算法失效,结束;否则执行②。

f(x0)。 'f(x0)②计算x 1?x0?③若∣x1?x0∣<ε或∣f(x1)∣<η,则输出x1,程序结束;否则执行④。 ④令x0?x1,转向①。

3.2 程序与实例

求方程f(x)=x3?x2?3x?3?0在1.5附近的根。 #include #include #define N 100

#define eps 1e-6 //宏定义根的容许误差 #define eta 1e-8 //宏定义f(x)的容许误差

float Newton(float(*f)(float),float(*f1)(float),float x0) //牛顿插值算法 {

double x1,d; int k=0; do {

x1=x0-(*f)(x0)/(*f1)(x0);

if(k++>N||fabs((*f1)(x1))

float f(float x) //原函数 { }

return x*x*x+x*x-3*x-3; {

printf(\迭代发散\

break; }

d=fabs(x1)<1?x1-x0:(x1-x0)/x1; //用三元算符(?:)缩短循环次数 x0=x1;

printf(\输出x(n)的值 }

while(fabs(d)>eps&&fabs((*f)(x1))>eta); //判定循环的条件 return x1;

搜索更多关于: 数值实验报告 的文档
数值实验报告.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c8o2y016xou9ersb9r156_1.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top