PDA

Просмотр полной версии : с++ метод простых итераций


greeef
18.05.2008, 15:17
дана ф-я x*x-sin(5*x)-1 как должен применятся данный метод к ней? если кто нибудь делал подобную лабу скиньте исходник мне не понятен сам метод сколько где ни читал... или скиньте ссылку на то где нормально описан сам метод(чисто математика)

Piflit
18.05.2008, 15:19
что-то про периодичность функций?

greeef
18.05.2008, 15:23
нее периодичность тут вроде не причем http://www.exponenta.ru/educat/class/courses/vvm/theme_2/theory.asp#5 <-- только мне это не помогло

Kaimi
18.05.2008, 15:35
м?
http://forum.sources.ru/index.php?showtopic=53319
http://elib.ispu.ru/library/math/sem1/kiselev1/node80.html

greeef
18.05.2008, 16:05
#include <math.h>
#include <conio.h>
#include <iostream.h>
#include <stdio.h>
#include <windows.h>
double Func(double x)
{
return x*x-sin(5*x)-1;
}

double Fp(double x, double E)
{
return (Func(x+E/2)-Func(x-E/2))/E;//типа производную так захуячил
}

void main()
{
double a,b,X,E;
int ii;
printf("x^2-sin(5*x)-1\na=");
scanf("%lf",&a);
printf("b=");
scanf("%lf",&b);
printf("e=");
scanf("%lf",&E);
printf("Metod resheniya?\n\t\t1)metod polovinnogo deleniya\n\t\t2)metod Newtona\n\t\t3)Prostih iteracyi\n");
scanf("%i",&ii);
system("cls");
X=a;
double Xt;
int count=0;
do
{
count++;
Xt=X;
if (ii==1) {X=(b+a)/2;} else {if (ii==2) {X=-Func(X)/Fp(X,E)+X;} else {if (ii==3) {X=Func(X);}} }
cout<<"["<<count<<"]="<<X<<endl;
if(Func(X)*Func(a)>0)a=X;
else b=X;
}while(fabs(X-Xt)>=E);
cout<<"X="<<X;
cin.get();
}
вот написал должен рещать тремя методами а решает двумя... подскажите где ошибка в третьем