词条 | 弦截法 |
释义 | 概述弦截法是一种求方程根的基本方法,在计算机编程中常用。他的思路是这样的:任取两个数x1、x2,求得对应的函数值f(x1)、f(x2)。如果两函数值同号,则重新取数,直到这两个函数值异号为止。连接(x1,f(x1))与(x2,f(x2))这两点形成的直线与x轴相交于一点x,求得对应的f(x),判断其与f(x1)、f(x2)中的哪个值同号。如f(x)与f(x1)同号,则f(x)为新的f(x1。将新的f(x1)与f(x2)连接,如此循环。体现的是极限的思想。 C语言代码//弦截法求x*x*x-5*x*x+16*x-80=0的根 求x^3-5x^2+16x-80的值: #include<math.h> #include<stdio.h> float f(float x) { //计算f(x)的值 return x*(x*x-5*x+16)-80; } float point(float x1 ,float x2) { //计算与x轴交点的x值 return (x1*f(x2)-x2*f(x1))/(f(x2)-f(x1)); } void main() { //输入两个数x1,x2 float x1,x2,x; do { printf("输入两个数x1,x2:"); scanf("%f%f",&x1,&x2); } while (f(x1)*f(x2) >= 0); // 当输入两个数大于0为真时,继续重新输入 //关键循环步骤: do { x=point(x1,x2);//得到交点的值 if(f(x)*f(x1)>0) x1=x; //新的x1 else x2=x; } while (fabs(f(x)) > 0.0001); //0.0001为取值精度 printf("一个解为%f\",x); } matlab代码1.定义函数function y=f(t) y=f(t); %函数f(t)的表达式 2.主程序i=0; %迭代此处记数 t1=t1; %迭代初值t1 t2=t2; %迭代初值t2 while i<=100; y=t2-f(t2)/(f(t2)-f(t1))*(t2-t1); %弦截法迭代格式 if abs(y-t2)>10^(-6); %收敛判据 t1=t2; t2=y else break end i=i+1; end fprintf('\%s%.6f\\t%s%d%','泡点温度t=',y,'迭代次数i=',i) %输出结果 |
随便看 |
百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。