標籤: 暫無標籤

1概述

弦截法是一種求方程根的基該方法,在計算機編程中常用。
弦截法
他的思路是這樣的:任取兩個數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)連接,如此循環。體現的是極限的思想。

2C語言代碼

//弦截法求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\n",x);
}

3matlab代碼

主程序
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('\n%s%.6f\t%s%d%','泡點溫度t=',y,'迭代次數i=',i)%輸出結果
上一篇[窮舉法]    下一篇 [HTC G2]

相關評論

同義詞:暫無同義詞