potrzebuje programu w C++ na rozwiązywanie wielomianów:
oto treść zadania
Zastosuj metodę średnich arytmetycznych i wyznacz cztery pierwiastki wielomianu f(x)=x4-4x3+5x-1 z dokładnośćią do 0,1.

Program do rozwiązywania wielomianów
Rozpoczęty przez lala321, 13 paź 2013 19:50
8 odpowiedzi w tym temacie
#1
Napisano 13 październik 2013 - 19:50
#2
Napisano 13 październik 2013 - 20:26
Inna nazwa tej metody to metoda bisekcji. Algorytm jest prosty i opisany na wiki czy innych stronach.
#3
Napisano 13 październik 2013 - 20:32
a możesz mi napisać algorytm lub podać link gdzie jest coś takiego napisane?
#4
Napisano 13 październik 2013 - 20:42
http://pl.wikipedia....ównego_podziału
W skrócie
Bierzesz przedział od a do b, wyznaczasz jego środek (o ile f(a)*f( B )<0 czyli następuje zmiana znaków czyli na pewno zawarte jest zero z faktu ciągłości funkcji).
Jeżeli abs(f(środek))-0.1<=0 to przerywamy - jesteśmy dostatecznie blisko zera.
Jeżeli nie to rozważamy tak samo przedział od a do środka albo od środka do b, z tym że należy wybrać ten, któego końcówki mają różne znaki (f(środek)*f(a)<0 lub f(środek)*f( B )<0)
W skrócie
Bierzesz przedział od a do b, wyznaczasz jego środek (o ile f(a)*f( B )<0 czyli następuje zmiana znaków czyli na pewno zawarte jest zero z faktu ciągłości funkcji).
Jeżeli abs(f(środek))-0.1<=0 to przerywamy - jesteśmy dostatecznie blisko zera.
Jeżeli nie to rozważamy tak samo przedział od a do środka albo od środka do b, z tym że należy wybrać ten, któego końcówki mają różne znaki (f(środek)*f(a)<0 lub f(środek)*f( B )<0)
#5
Napisano 14 październik 2013 - 09:22
f(x)=x4-4x3+5x-1 A jak zapisać ta liczbę w języku c++? bo jak ja pisze to mi to nie wychodzi
#6
Napisano 14 październik 2013 - 10:32
To nie jest liczba, tylko funkcja.
Skorzystaj ze wzoru:
f(x)=(((x-4)*x*x)+5)*x-1
to stąd: wyłączasz przez nawias x masz f(x)=x*(x3-4*x2+5)-1, wewnątrz wyłączasz x2 masz f(x)=(x*(x2*(x-4))+5))-1 . Dodajesz, potem mnożysz i tak do końca.
W c++ to chyba tak:
fodx=((((x-4)*x*x)+5)*x)-1
Skorzystaj ze wzoru:
f(x)=(((x-4)*x*x)+5)*x-1
to stąd: wyłączasz przez nawias x masz f(x)=x*(x3-4*x2+5)-1, wewnątrz wyłączasz x2 masz f(x)=(x*(x2*(x-4))+5))-1 . Dodajesz, potem mnożysz i tak do końca.
W c++ to chyba tak:
fodx=((((x-4)*x*x)+5)*x)-1
AMD Phenom II 955
Pentagram Karakorum HP-120 AlCu + Arctic Cooling AF1225L
4 GB DDR3 1600 MHz
Było Asus Radeon HD 6950 DCU II, jest XFX 7850 z AC Mono - czego się nie robi dla tej ciszy!
SilentiumPC Deus G1 600W
Pentagram Karakorum HP-120 AlCu + Arctic Cooling AF1225L
4 GB DDR3 1600 MHz
Było Asus Radeon HD 6950 DCU II, jest XFX 7850 z AC Mono - czego się nie robi dla tej ciszy!
SilentiumPC Deus G1 600W
#7
Napisano 14 październik 2013 - 11:01
A jest ktoś w stanie napisać mi ten program cały bo to potrzebuje do szkoły
#8
Napisano 14 październik 2013 - 17:58
Napisałem program ale coś mi nie działa i proszę o pomoc dlaczego mi nie działa?
#include <iostream> using namespace std; const double EPS0 = 0.0000000001; const double EPSX = 0.0000000001; double f(double x); { return fodx=((((x-4)*x*x)+5)*x)-1 ; } main(int argc, char* argv[]) { double a,b,x0,fa,fb,f0; cout.precision(8); cout.setf(ios::fixed); cout << "Podaj zakres poszukiwan pierwiastka:\n\n"; cout << "a = "; cin >> a; cout << "b = "; cin >> b; cout << "\nWYNIK:\n\n"; fa = f(a); fb = f(B); if(fa * fb > 0) cout << "Funkcja nie spelnia zalozen\n"; else; { while(fabs(a - B) > EPSX); { x0 = (a + B) / 2; f0 = f(x0); if(fabs(f0) < EPS0) break; if(fa * f0 < 0) b = x0; else; { a = x0; fa = f0; } } cout << "x0 = " << setw(15) << x0 << endl; } cout << "\n"; system("pause"); return 0; }
#9
Napisano 15 październik 2013 - 19:14
Gdybyś w komentarzach opisał, do czego użyłeś zmiennych w kodzie, to na pewno nie utrudniłoby otrzymania pomocy
. Poza tym, powinno Ci wywalić błędy kompilacji. Zamiennie stosujesz zmienne pisane małymi i dużymi literami, a w C++ TO NIE TO SAMO! Ten język rozróżnia wielkość liter.

AMD Phenom II 955
Pentagram Karakorum HP-120 AlCu + Arctic Cooling AF1225L
4 GB DDR3 1600 MHz
Było Asus Radeon HD 6950 DCU II, jest XFX 7850 z AC Mono - czego się nie robi dla tej ciszy!
SilentiumPC Deus G1 600W
Pentagram Karakorum HP-120 AlCu + Arctic Cooling AF1225L
4 GB DDR3 1600 MHz
Było Asus Radeon HD 6950 DCU II, jest XFX 7850 z AC Mono - czego się nie robi dla tej ciszy!
SilentiumPC Deus G1 600W
Użytkownicy przeglądający ten temat: 1
0 użytkowników, 1 gości, 0 anonimowych