계산 방법의 비선형 방정식 그룹 구해
10531 단어 계산 방법
1. 실험 내용 1. 뉴턴 교체법으로 아래 방정식의 뿌리(1)x^2-e^x=0(2)xe^x-1=0(3)lgx+x-2=02, 이분법으로 상기 문제를 구한다. 3. 할선법 프로그램을 작성하여 첫 번째 질문을 구하는 방정식 실험 절차, 프로그램 설계, 실험 결과 및 분석
1. 뉴턴 교체법으로 다음 방정식의 뿌리를 구한다. 1.1 실험 절차: 첫 번째 문제를 예로 들면 실험 절차를 f(x)=x^2-e^x로 f'(x)=2를 구한다.×x-e^xxk+1=xk-f(x)/f'(x) 교체 계산 가능 1.2 프로그램 설계: (1)x^2-e^x=0
#include
using namespace std;
int main()
{
double x0,x;
x=1;
do
{
x0=x;
double fx=x*x-exp(x);
double fx2=x*2-exp(x);
x=x0-(fx/fx2);
}while(fabs(x-x0)>=1e-5);
cout<return 0;
}
(2) xe^x-1=0
#include
using namespace std;
int main()
{
double x0,x;
x=1;
do
{
x0=x;
double fx=x*exp(x)-1;
double fx2=x*exp(x)+exp(x);
x=x0-(fx/fx2);
}while(fabs(x-x0)>=1e-5);
cout<return 0;
}
분석: 뉴턴 교체법을 통해 f(x)의 도수를 구하고 xk+1=xk-f(x)/f'(x)에 따라 교체한다. 실험을 통해 우리는 5번의 교체를 통해 답을 구할 수 있음을 발견했다.
(3) lgx+x-2=0
#include
using namespace std;
int main()
{
double x0,x;
x=1;
do
{
x0=x;
double fx=log10(x)+x-2;
double fx2=1/x+1;
x=x0-(fx/fx2);
}while(fabs(x-x0)>=1e-5);
cout<return 0;
}
분석: 뉴턴 교체법을 통해 f(x)의 도수를 구하고 xk+1=xk-f(x)/f'(x)에 따라 교체한다. 실험을 통해 우리는 9번의 교체를 통해 답을 구할 수 있음을 발견했다. 2, 2분법으로 방정식을 구하는 뿌리 2.1 실험 절차 1)에 따라 우리는 최초의 범위를 정했다. 이 범위는 구간 내 함수가 단조롭고 한 개의 뿌리 2)가mid=(r+l)/2가 f(mid)=0의 조건을 충족시키는지 판단한다.만족하지 않으면 범위를 축소(l,mid)하거나 (mid,r)3)l, r의 구간 길이가 아주 작은 수 eps보다 작을 때 우리는 방정식의 루트 2.2 프로그램 설계 (1)x^2-e^x=0
#include
#define eps 1e-5
using namespace std;
bool check(double k)
{
if(k*k-exp(k)>1e-4)return true;
else return false;
}
int main()
{
double l=-1,r=0;
int cnt=0;
while(r-l>eps)
{
double mid=l+(r-l)/2;
//cout<
cnt++;
if(check(mid))
{
l=mid;
}
else r=mid;
}
printf("cnt=%d
",cnt);
printf("answer=%.5lf
",r);
return 0;
}
분석: 이분법의 교체 횟수는 요구의 정밀도와 사실 두 수의 범위와 관련이 있음 2)xe^x-1=0
#include
#define eps 1e-4
using namespace std;
bool check(double k)
{
if(k*exp(k)-1>1e-4)return true;
else return false;
}
int main()
{
double l=-1,r=1;
int cnt=0;
while(r-l>eps)
{
double mid=l+(r-l)/2;
//cout<
cnt++;
if(check(mid))
{
r=mid;
}
else l=mid;
}
printf("cnt=%d
",cnt);
printf("answer=%.7lf
",r);
return 0;
}
3)lgx+x-2=0
#include
#define eps 1e-4
using namespace std;
bool check(double k)
{
if(log10(k)+k-2>1e-4)return true;
else return false;
}
int main()
{
double l=-2,r=2;
int cnt=0;
while(r-l>eps)
{
double mid=l+(r-l)/2;
//cout<
cnt++;
if(check(mid))
{
r=mid;
}
else l=mid;
}
printf("cnt=%d
",cnt);
printf("answer=%.7lf
",r);
return 0;
}
3. 할선법 제1문 3.1 실험절차 1)령 f(x)=x^2-e^x2)x(k+1)=x_k-f(x k)/((f(x k)) - f(x(k-1))))*(x k-x(k-1))3) 교체 계산 3.2 프로그램 설계 가능
#include
using namespace std;
int main()
{
double xk,x1,xk2;
xk2=1;
xk=-1;
do
{
x1=xk2;
double fx=xk*xk-exp(xk);
double fx2=xk2*xk2-exp(xk2);
xk2=xk2-(fx2/(fx2-fx))*(xk2-xk);
xk=x1;
}while(fabs(xk2-xk)>=1e-5);
cout<return 0;
}
할선법으로 풀이, 공식x 에 따라(k+1)=x_k-f(x k)/((f(x k)-〗f(x(1)))*(x k-x(k-1))는 교체 횟수는 초기의 설정값과 관련이 있다. 당초의 시작값이 1과 -1로 설정되었을 때 우리는 7번 교체해야 한다. 당초의 시작값이 -0.5와 -1로 설정되었을 때 6번 교체해야 하기 때문에 우리는 두 초기값이 가능한 한 방정식의 옆에 있을 때 교체 횟수를 효과적으로 줄일 수 있음을 알 수 있다.
총결산
뉴턴 교체법은 수렴 속도가 빠르고 중근을 구할 수 있는 장점이 있지만 매번 교체할 때마다 함수의 도수치를 계산해야 하기 때문에 계산량이 매우 크다. 특히 함수의 구조가 비교적 복잡하거나 함수가 전도할 수 없을 때 뉴턴 교체법을 사용하기 어렵다. 이런 단점을 극복하기 위해 이산 뉴턴법을 자주 사용한다. 뉴턴법에 비해 함수 f(x)의 도수를 구하는 것은 피하지만 두 개의 초기 값이 필요하다.그리고 이 두 초기값은 방정식의 뿌리 부근에서 최대한 취하는데 수렴 속도는 일반적으로 뉴턴법보다 느리다.하지만 현행보다 수렴이 빠르다.한편, 이분법은 끊임없이 이분을 통해 구간을 축소하는데 이분의 교체 횟수는 요구하는 정밀도와 설정의 시작 데이터와 관련이 있다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
계산 방법의 비선형 방정식 그룹 구해뉴턴 교체법으로 아래 방정식의 뿌리(1)x^2-e^x=0(2)xe^x-1=0(3)lgx+x-2=02, 이분법으로 상기 문제를 구한다. 1.1 실험 절차: 첫 번째 문제를 예로 들면 실험 절차를 f(x)=x^2-e^x...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.