Skocz do zawartości


Zdjęcie

Program do rozwiązywania wielomianów


  • Zaloguj się, aby dodać odpowiedź
8 odpowiedzi w tym temacie

#1 lala321

lala321
  • Użytkownicy
  • 5 postów

Napisano 13 październik 2013 - 19:50

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.

  • 0


#2 ~janusz

~janusz
  • Użytkownicy
  • 238 postów

Napisano 13 październik 2013 - 20:26

Inna nazwa tej metody to metoda bisekcji. Algorytm jest prosty i opisany na wiki czy innych stronach.
  • 0

#3 lala321

lala321
  • Użytkownicy
  • 5 postów

Napisano 13 październik 2013 - 20:32

a możesz mi napisać algorytm lub podać link gdzie jest coś takiego napisane?
  • 0

#4 ~janusz

~janusz
  • Użytkownicy
  • 238 postów

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)
  • 0

#5 lala321

lala321
  • Użytkownicy
  • 5 postów

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
  • 0

#6 mw_1975

mw_1975
  • Użytkownicy
  • 2535 postów

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
  • 0
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

#7 lala321

lala321
  • Użytkownicy
  • 5 postów

Napisano 14 październik 2013 - 11:01

A jest ktoś w stanie napisać mi ten program cały bo to potrzebuje do szkoły
  • 0

#8 lala321

lala321
  • Użytkownicy
  • 5 postów

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; 
}

  • 0

#9 mw_1975

mw_1975
  • Użytkownicy
  • 2535 postów

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.
  • 0
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


Użytkownicy przeglądający ten temat: 1

0 użytkowników, 1 gości, 0 anonimowych