- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
#include<stdio.h> #include<math.h> #include<conio.h> float f(float x)...{ return 2*x*x*x-4*x*x+3*x-6; } float fd(float x) ...{ return 6*x*x-8*x+3; } int main(void) ...{ float x0=1.5,x=1.5; do...{ x0=x; x=x0-f(x0)/fd(x0);//迭代公式求近似根; }while(fabs(x-x0)>1e-4); printf("the asymtomatic root is %f ",x0); getch(); return 0; } /**//*2.000005*/ 二分法: #include <stdio.h> #include <math.h> #include <conio.h> float f(float x) ...{ return 2*x*x*x-4*x*x+3*x-6; } int main(void) ...{ float l=-10,r=10,root,mid;
用牛顿迭代法求下面方程y=x^3-5x^2+16x-80的实根的过程是: 1.你想在谁附近求解,这个范围或者这个数值大多是题目已经给定 了的(本例是根据输入的数值来计算的) 2.令f(x)=x*x*x-5*x*x+16*x-80 3.x1=X 4.求f(x1) 5.对f(x)求导,得到f1(x),求f1(x1) 6.调整x,使x=x1-f(x1)/f1(x1) 7.符合条件x-x1>1e-5,转到第3步 8.不符合条件x-x1>1e-5,则x1就是我们要求的实根 #include <stdio.h> #include <math.h> //y=x^3-5x^2+16x-80 float f(float x) { return (pow(x,3)-5*pow(x,2)+16*x-80); } float f1(float x) { return (3*pow(x,2)-10*x+16); void main() { float x,x1,y1,y2; printf("请输入一个任意实数:X="); scanf("%f",&x);
printf("我可以帮你找到这个方程的解\n"); do{ x1=x; y1=f(x); y2=f1(x1); x=x1-y1/y2; } while (fabs(x-x1)>=1e-5); printf("A root is %f\n",x1);
while(fabs(l-r)>1e-4)...{ mid=(l+r)/2; if(!f(mid))...{ root=mid; break; }if(f(l)*f(mid)<0) r=mid; else l=mid; } root=mid; printf("the only one root is %f ",root); getch(); return 0; 算法: 用迭代法的结构,增设4个工作单元F0, F0’, F1, F1’,并把用作终止迭代 的误差控制改为两个|x1-x0|<EPS或|f(x1)|<DELTA。 1. 准备:选定初始值x0, 计算F0=f(x0); F0’=f’(x0), 如果F0’=0,则输 出“方法失败”并结束。 2. 迭代:对k=1,2,…,N,做: 1) x1=x0-F0/F0’ , 2) 计算F1=f(x1); F1’=f’(x1) 3) 若F1’=0,则输出“方法失败”并结束。 3. 控制:若|x1-x0|<EPS或|F1|<DELTA,则输出近似解x1和迭代次数k并 结束;否则,x0=x1; F0=F1; F0’=F1’。 4. k>N时输出“经N次迭代无满足要求的近似解”结束。
实验内容: 1)牛顿迭代法的编程实现。 2)进行初值和误差限的比较和讨论。 编程要求: 1)根的容许误差限EPS、|f(x)|的容许误差限DELTA用输入语句输入。 2)根的初始值x0要求用输入语句输入。 3)牛顿迭代法要写成函数形式:如
பைடு நூலகம்
float Newton(float x0, float EPS, float DELTA, int N)。(*) 实验步骤: 1)完成牛顿迭代法的程序设计及录入; 2)完成程序的编译和链接,并进行修改; 3)用书上的例子对程序进行验证,并进行修改; 4)分别输入两组不同的根的误差限,观察运算次数的变化; 5)分别取不同的初时值x0,观察运算结果的变化; 6)完成实验报告。