• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Obliczanie perwiastka równania nieliniowego. Metoda iteracji prostej.

Object Storage Arubacloud
0 głosów
714 wizyt
pytanie zadane 13 stycznia 2016 w C i C++ przez Dominik Kulis Użytkownik (720 p.)

Witam

Piszę program, który ma obliczyć pierwiastek równania nieliniowego metoda interacji prostej ze wzoru cos(x)+1/x+2=0. Kod mojego programu wygląda następująco:

#include <iostream>
#include <fstream>
#include <cmath>

using namespace std;

double funkcja(double x)
{
    return (-(1/cos(x)) + 2);
}

int main()
{
    const double EPSILON = 0.001;
    double f_n = 0.0, x_0 = 2.0;
    do
    {
        f_n = funkcja(x_0);

        cout << f_n << " " << x_0 << endl;

        x_0 = f_n;

    }while(fabs(x_0 - f_n) >= EPSILON);


    cout << f_n <<  endl;
    return 0;
}

To co drukuje program nie zgadza się z wynikiem. Pomoże mi ktoś w zlokalizowaniu problemu?

Z góry dziękuje.

Pozdrawiam.

2 odpowiedzi

0 głosów
odpowiedź 13 stycznia 2016 przez niezalogowany
Do cos przekazałeś argument w stopniach czy radianach?
0 głosów
odpowiedź 14 stycznia 2016 przez Dominik Kulis Użytkownik (720 p.)
#include <iostream>
#include <fstream>
#include <cmath>

using namespace std;

double funkcja(double x)
{
    return -(1.0/cos(x*M_PI/180.0)) + 2.0;
}

int main()
{
    const double EPSILON = 0.001;
    double f_n = 0.0, x_0 = 2.0;
    do
    {
        f_n = funkcja(x_0);

        cout << f_n << " " << x_0 << endl;

        x_0 = f_n;

    }while(fabs(x_0 - f_n)<= EPSILON);



    cout << f_n << " " << x_0 << endl;
    return 0;
}

Podawałem w stopniach. Odpowiedź nadal błędna.

komentarz 14 stycznia 2016 przez Mateusz Tocha Bywalec (2,560 p.)
edycja 14 stycznia 2016 przez Mateusz Tocha

którego równania ?

cos(x)+1/x+2=0 tego czy

1/cos(x)+2=0 czy tego?

 

wyniki jakie dostałem dla pierwszego to wychodzi -0.33325 (cos w stopniach)

dla drugiego 120, 240(cos w stopniach) potem  480  600 i tak dalej

 

Tak dla twojego sprawdzenia :) 

 

 

 

komentarz 14 stycznia 2016 przez Mateusz Tocha Bywalec (2,560 p.)

#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <stdio.h>

#define M_PI 3.14159265358979323846
#define deg2rad 3.14159265358979323846/180

using namespace std;

double funkcja(double x)
{
	return (1.0 / cos(x*deg2rad)) + 2.0;
}

int main()
{
	const float EPSILON = 0.00001;
	double abx = 0;
	double f_n = 0.0, x_0 = 0;
	double x = 119;

	do
	{
		f_n = funkcja(x);

		cout << f_n << " " << x << endl;

		x+=0.0001;

		abx = fabs(f_n);
	} while (abx >= EPSILON);



	cout << f_n << " " << x << endl;
	int z;
	cin >> z;
	return 0;
}

 

Podobne pytania

0 głosów
1 odpowiedź 273 wizyt
pytanie zadane 13 listopada 2016 w C i C++ przez orlicki12 Początkujący (450 p.)
0 głosów
2 odpowiedzi 323 wizyt
pytanie zadane 3 grudnia 2016 w C i C++ przez orlicki12 Początkujący (450 p.)
0 głosów
1 odpowiedź 574 wizyt

92,555 zapytań

141,403 odpowiedzi

319,557 komentarzy

61,940 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...