Zadanie jest następujące:
Mając dany \(\displaystyle{ EPSILON = 0.0001}\), Funkcję: \(\displaystyle{ b \cdot \ln (x)-1=0}\) oraz przedział: \(\displaystyle{ x=\left\langle 1,2\right\rangle}\).
Mam do policzenia ilość literacji oraz pierwiastek.
To co do tej pory udało mi się zrobić to:
Kod: Zaznacz cały
#include "stdafx.h"
#include <iostream>
#include <math.h>
using namespace std;
double x=1; // Zmienna x
double E = 0.0001; // Dokładność
double xp=x; // Poprzednia zmienna
double z=x*log(x)-1; // Wynik
double f(double x)
{
return x*log(x)-1;
}
double fp(double x) // Pochodna Funkcji
{
return log(x) +1;
}
int main()
{
// x*lnx -1 =0
// x = <1, 2>
cout << "Podaj x: ";
cin >> x;
double E = 0.0001; // Dokładność
cout << "Wynik= " << z;
int i;
// i = ilość literacji
for (int i=0; abs(x-xp)<E; i++)
{
z=f(x);
if (z==0)
{
z= sqrt(z);
cout << z;
}
xp = x;
x= x - (f(x)/fp(x));
}
cout << x << endl;
cout << E << endl;
cout << i << endl;
cout << "Wynik= " << z;
return 0;
}
Pozdrawiam.-- 14 paź 2012, o 00:04 --Dobra... Zignorujcie pierwszy post. Straszne głupoty... Udało mi się doprowadzić program do końca:
Ostatnia Prośba: Czy może ktoś przetestować ten kod? Czy nie ma w nim jakiś głupich błędów... itd? Z góry dziękuje. Głównie chodzi mi o sprawdzenie ilości literacji.// Metody1.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <iostream>
#include <math.h>
using namespace std;
double Funkcja(double x) // Funkcja
{
return x*log(x)-1;
}
double PochFunkcji(double x) // Pochodna Funkcji
{
return log(x) +1;
}
int main()
{
double a=0, b=0, Pierwiastek=0, e=0;
// gdzie;
// a - Początek przedziału.
// b - koniec przedziału.
// e - EPSILON - Dokładność.
cout << "Prosze podac poczatek przedzialu: ";
cin >> a;
cout << "Prosze podac koniec przedzialu: ";
cin >> b;
cout << "Prosze podac dokladnosc: ";
cin >> e;
int Licznik=0;
if (Funkcja(a) == 0)
{
Licznik++;
Pierwiastek = Funkcja(a);
}
if (Funkcja(b) == 0)
{
Licznik++;
Pierwiastek = Funkcja(b);
}
else
{
for (double i=a; abs(b-a)>e;)
{
Pierwiastek = a - ( Funkcja(a) / PochFunkcji(a) );
b=a;
a=Pierwiastek;
Licznik++;
}
}
cout << endl << "Pierwiastkiem tego rownania jest: " << Pierwiastek << " " << "z dokladnoscia rowna: " << e << endl;
cout << "Literacje: " << Licznik << endl;
return 0;
}