C - program - aproksymacja

Awatar użytkownika
qaz
Użytkownik
Użytkownik
Posty: 486
Rejestracja: 28 paź 2006, o 21:56
Płeć: Kobieta
Lokalizacja: Gobbos' Kingdom
Podziękował: 311 razy
Pomógł: 5 razy

C - program - aproksymacja

Post autor: qaz »

Potrzebuję następujący program w C:
Aproksymacja wybranej funkcji przy pomocy twierdzenia Taylora. Użytkownik wybiera funkcję z listy.
Z góry dziękuję za pomoc
soku11
Użytkownik
Użytkownik
Posty: 6607
Rejestracja: 16 sty 2007, o 19:42
Płeć: Mężczyzna
Podziękował: 119 razy
Pomógł: 1823 razy

C - program - aproksymacja

Post autor: soku11 »

Nikt ci raczej nie napisze calego programu, bo to by zajmowalo za dlugo :) Sam mam program, ktory liczy logarytm naturalny z wybranej liczby z rozwiniecia go w szereg maclaurina. Mam nadzieje, ze sie przyda. Oto kod:

Kod: Zaznacz cały

#include <stdio.h>
#include <conio.h>
#include <math.h> 

int main()
{
 float x=0;       // wartosc ln do przyblizenia
 int N=0;         // dokladnosc
 int n=0;         // zmienna do petli (powtorzenie sumowania)
 float lnx=0;     // zmienna z wartoscia obliczona ln(x)
 float lib_lnx=0; // zmienna z wartoscia ln(x) z math.h 
 float temp=0;    // (x-1)/x - pomocnicza poza petla
 float error;     // wartosc bledu

 printf("Podaj wartosc x-a do obliczenia (x>=0,5): ");
 scanf("%f",&x);
 if( x<0.5)
 {
     printf("Zle dane!\nNacisnij cos...");
     getch();
     exit(0);
 }

 printf("Podaj dokladnosc N (N>0): ");
 scanf("%d",&N); 
 if( N<1 )
 {
     printf("Zle dane!\nNacisnij cos...");
     getch();
     exit(0);
 }

 temp=((x-1)/x);  //staly element w petli
 for(n=1; n<=N; n++)
 {
     lnx+=(1/(float)n)*pow(temp,n);
 }

 printf("ln(%.2f)=%f \n\n",x,lnx);
 lib_lnx=log(x);
 printf("Bibliotecznie: %f\n", lib_lnx);
 
 error=((lnx-lib_lnx)/lib_lnx)*100;
 if(error<0) error=-error; // modul z bledu
 if(lib_lnx==0) error=0;   // dzielenie przez 0
 else printf("Blad wynosi w przyblizeniu: %f%c", error,'%');
 
 getch();    
 return 0;
}
Program dodatkowo porownuje wynik z wynikiem z gotowej funkcji ln z math.h i wyswietla blad. POZDRO
Awatar użytkownika
qaz
Użytkownik
Użytkownik
Posty: 486
Rejestracja: 28 paź 2006, o 21:56
Płeć: Kobieta
Lokalizacja: Gobbos' Kingdom
Podziękował: 311 razy
Pomógł: 5 razy

C - program - aproksymacja

Post autor: qaz »

Na pewno sie przyda. Miałam świadomość, że całego nie dostene ale przyda się cokolwiek, ja pokombinuje i może coś z tego wyjdzie ...
Dziękuję i pozdrawiam
soku11
Użytkownik
Użytkownik
Posty: 6607
Rejestracja: 16 sty 2007, o 19:42
Płeć: Mężczyzna
Podziękował: 119 razy
Pomógł: 1823 razy

C - program - aproksymacja

Post autor: soku11 »

Programik wcale nie jest taki trudny. Dla kazdej funkcji (nie wiem ile i jakie one maja byc) piszesz oddzielna funkcje i ladnie to wszystko sklejasz. Kilka rozwiniec znajdziesz tutaj:
... Maclaurina

Wystarczy to przelozyc na jezyk komputera tak jak w moim przypadku.
P.S. Oczywiscie ten programik nie jest taki efektywny, ale mozesz dalej kombinowac. POZDRO
Xitami

C - program - aproksymacja

Post autor: Xitami »


dostajesz sprytnego .DLLa, dasz mu np.:
Taylor(x,0,5)Sin(x)
a otrzymasz
x-x^3/6+x^5/120
ODPOWIEDZ