|
Budownictwo 2006 Wydział Inżynierii Lądowej Politechniki Krakowskiej
|
Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
KrzysztofJezyna
Majster
Dołączył: 27 Cze 2007
Posty: 111
Przeczytał: 0 tematów
Pomógł: 2 razy Ostrzeżeń: 0/5 Skąd: Szczecin:P
|
Wysłany: Pon 15:16, 14 Kwi 2008 Temat postu: Interpolacja spline liniowe |
|
|
Czy ma ktos moze programik spline linowe?? Mam ze Słwakiem Milewskim a on ma specyficzne wymagania
Post został pochwalony 0 razy
|
|
Powrót do góry |
|
|
|
|
Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
Piotrek
Kierownik Budowy
Dołączył: 28 Paź 2006
Posty: 285
Przeczytał: 0 tematów
Pomógł: 2 razy Ostrzeżeń: 0/5 Skąd: Tarnowskie Góry - KRK
|
Wysłany: Pon 22:56, 14 Kwi 2008 Temat postu: |
|
|
a ma ktos moze aproksymacje sześcienną?
Post został pochwalony 0 razy
|
|
Powrót do góry |
|
|
Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
Pepe
Rajdowiec :D
Dołączył: 27 Paź 2006
Posty: 409
Przeczytał: 0 tematów
Pomógł: 1 raz Ostrzeżeń: 0/5 Skąd: gród Kraka
|
Wysłany: Pon 23:19, 14 Kwi 2008 Temat postu: |
|
|
co ty sie Piotrek wypowiadasz jak bedziesz mial program
Post został pochwalony 0 razy
|
|
Powrót do góry |
|
|
Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
Piotrek
Kierownik Budowy
Dołączył: 28 Paź 2006
Posty: 285
Przeczytał: 0 tematów
Pomógł: 2 razy Ostrzeżeń: 0/5 Skąd: Tarnowskie Góry - KRK
|
Wysłany: Wto 6:27, 15 Kwi 2008 Temat postu: |
|
|
noooooooooo oby :]
Post został pochwalony 0 razy
|
|
Powrót do góry |
|
|
Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
Marek
Operator Łopaty
Dołączył: 10 Lut 2007
Posty: 28
Przeczytał: 0 tematów
Ostrzeżeń: 0/5
|
Wysłany: Czw 18:31, 17 Kwi 2008 Temat postu: |
|
|
Aproksymacja sześcienna raz
Kod: | #include <stdio.h>
#include <math.h>
main()
{double sum,pom,S[10],x[5],f[5],t[5],a[5][5],w[5],wart,x0;
int i,j,k;
double fun (int i, double a[5][5], double w[5]);
sum=0;
printf("Projekt 1 - Sześcienna aproksymacja funkcji jednowymiarowej \n\n\n");
printf("Poszukujemy wspolczynnikow funkcji: f(x)=a1+a2*x+a3*x^2+a4*x^3 \n\n\n");
for(i=1;i<=5;i++) //wczytywanie xi yi
{printf("podaj x%d=",i);
scanf("%lf",&x[i]);
printf("podaj y%d=",i);
scanf("%lf",&f[i]);}
printf("podaj x0="); //wczytywanie x0
scanf("%lf",&x0);
for(j=1;j<=7;j++) //obliczanie S(patrz kartka)
{for(i=1;i<=5;i++)
{pom=pow(x[i],j-1);
sum=sum+pom;}
S[j]=sum;
sum=0;}
for(j=1;j<=4;j++) //obliczanie t (patrz kartka )
{for(i=1;i<=5;i++)
{pom=pow(x[i],j-1)*f[i];
sum=sum+pom;}
t[j]=sum;
sum=0;}
for(i=1;i<=4;i++) //tworzenie macierzy z S
{for(j=1;j<=4;j++)
{a[i][j]=S[j+i-1];;};};
for(k=1;k<=4;k++) //algorytm Gaussa rozwiazywaniu ukladu rownan A(S)X=t-tworzenie
{for(i=k+1;i<=4;i++) //macierzy gornnoprzekatnej - krok 1
{for(j=k+1;j<=4;j++)
{a[i][j]=a[i][j]-(a[i][k]/a[k][k])*a[k][j];}
t[i]=t[i]-(a[i][k]/a[k][k])*t[k];};};
for(i=2;i<=4;i++) //przyjmowanie 0 w macierzy a,ponizej przekatnej glownej
{for(j=1;j<=i-1;j++)
{a[i][j]=0;};}
for(i=3;i>=1;i--) //obliczanie X cd algorytmu Gaussqa (krok 2)-ktore stanowia
{w[4]=t[4]/a[4][4]; //wspolczynniki aproksymowanej funkcji szesciennej
w[i]=1./a[i][i]*(t[i]-fun(i,a,w));};
wart=w[1]+x0*w[2]+x0*x0*w[3]+x0*x0*x0*w[4];
printf("\n\n Szukana wartosc aproksymowanej funkcji dla x=%1.2lf wynosi y=%lf \n\n",x0,wart);
scanf("%lf",&x0);
return 0;}
double fun (int i, double a[5][5], double w[5]) //oblicza sume wzoru z kartki
{double s;
int j;
s=0;
for(j=i+1;j<=4;j++)
{s=s+a[i][j]*w[j];};
return s;} |
A to mój prywatny już zaliczony projekt z najlepszej liniowej aproksymacji ale używa kilku niefajnych bibliotek no i parę osób z gr 10 też z miało ten program - jak nie macie z P. Serafin to proszę bardzo
Kod: | #include <iostream>
#include <conio.h>
#include <math.h>
#include <iomanip>
using namespace std;
int main()
{ float fun (float x, int i1, int j1);
int i, j, k, amount;
float f0, x0, w, wx, wy;
float Xi[10], Fi[10];
float C[2], B[2];
float A[2][2];
cout<<endl<<"\t Metoda najlepszej liniowej aproksymacji"<<endl;
cout<<"\t funkcji jednowymiarowej."<<endl<<endl;
cout<<"\t podaj liczbe punktow:";
cin>>amount;
cout<<" Wprowadz zbior punktow:"<<endl<<endl;
for(i = 0; i <amount; i++)
{cout<<"X"<<(i+1)<<": ";
cin>>Xi[i];
cout<<"F"<<(i+1)<<": ";
cin>>Fi[i];}
cout<<"Podaj x0: ";
cin>>x0;
//budowa macierzy i wektora (układu równań)
for(i = 0; i < 2; i++)
{for(j = 0; j < 2; j++)
{A[i][j] = 0;
for(k = 0; k < amount; k++)
A[i][j] += fun(Xi[k],i,j);}
B[i] = 0;
for(k = 0; k < amount; k++)
B[i] += fun(Xi[k],i,1)*Fi[k];
}
//rozwiazanie ukladu rownan 2x2 (wyznacznikami)
w = A[0][0]*A[1][1] - A[1][0]*A[0][1];
wx = B[0]*A[1][1] - B[1]*A[0][1];
wy = A[0][0]*B[1] - A[1][0]*B[0];
C[0] = wx/w;
C[1] = wy/w;
//wyprowadzenie ukladu rownan i jego rozwiazania
cout<<endl<<endl;
i=j=0;
while (i<2)
{while(j<2)
{cout<<setprecision(3)<<A[i][j]<<" ";
j++;
}
cout<<" "<< setprecision(3)<<B[i]<<" => "<<setprecision(3)<<C[i]<<endl;
j=0;
i++;
}
cout<<"Funkcja: f(x)= "<<setprecision(2)<<C[0]<<"x + "<<setprecision(2)<<C[1]<<endl;
//wynik - wartość aproksymowana funkcji w x0
f0 = C[0]*x0 + C[1];
cout<<"Wynik f("<<x0<<") = "<<f0<<endl;
getch();
return 0;
}
//funkcja obliczająca w jakiej potędze będą sumowane współczynniki
float fun (float x, int i1, int j1)
{ if (i1==j1 && j1==0) return pow(x,2);
if (i1!=j1) return x;
return 1; } |
Jak we wtorek zaliczę 2 projekt to wrzucę całkę numeryczną dwupunktową kwadraturą Gauss'a
Post został pochwalony 0 razy
Ostatnio zmieniony przez Marek dnia Czw 18:37, 17 Kwi 2008, w całości zmieniany 1 raz
|
|
Powrót do góry |
|
|
Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
Jajko
Kierowca Wywrotki
Dołączył: 14 Maj 2007
Posty: 59
Przeczytał: 0 tematów
Pomógł: 2 razy Ostrzeżeń: 0/5
|
Wysłany: Czw 19:51, 17 Kwi 2008 Temat postu: |
|
|
A interpolacji funkcją sklejaną 3-go stopnia byś nie wrzucił...?
Post został pochwalony 0 razy
|
|
Powrót do góry |
|
|
Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
Piotrek
Kierownik Budowy
Dołączył: 28 Paź 2006
Posty: 285
Przeczytał: 0 tematów
Pomógł: 2 razy Ostrzeżeń: 0/5 Skąd: Tarnowskie Góry - KRK
|
Wysłany: Czw 21:48, 17 Kwi 2008 Temat postu: |
|
|
marku wielkie dzięki
Post został pochwalony 0 razy
|
|
Powrót do góry |
|
|
Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
Marek
Operator Łopaty
Dołączył: 10 Lut 2007
Posty: 28
Przeczytał: 0 tematów
Ostrzeżeń: 0/5
|
Wysłany: Sob 20:05, 19 Kwi 2008 Temat postu: |
|
|
Jajko napisał: | A interpolacji funkcją sklejaną 3-go stopnia byś nie wrzucił...? |
no niestety nie piszę już wszystkich możliwych programów jak kiedyś ...
Post został pochwalony 0 razy
|
|
Powrót do góry |
|
|
Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
Marek
Operator Łopaty
Dołączył: 10 Lut 2007
Posty: 28
Przeczytał: 0 tematów
Ostrzeżeń: 0/5
|
Wysłany: Śro 16:31, 23 Kwi 2008 Temat postu: |
|
|
Dwupunktowa kwadratura Gaussa
Kod: | #include <iostream.h>
#include <conio.h>
#include <math.h>
#include <iomanip>
using namespace std;
const double p3=1/pow(3,0.5);
int wybor;
double a, b, x, amount=1, eps;
void Dane()
{
cout<<endl<<"\n\tCalka numeryczna obliczana metoda\n";
cout<<"\t dwupunktowej kwadratury Gaussa.\n\n";
cout<<"Menu wyboru:\n";
cout<<"[1] Oblicz calke z: f(x)=1/(pow(log(x)+sin(x),0.5))\n";
cout<<"[2] Oblicz calke z: f(x)=x^2\n";
cout<<"[3] Oblicz calke z: f(x)=x\n";
cout<<"[4] Oblicz calke z: f(x)=x^3\n";
cout<<"[5] Oblicz calke z: f(x)=sin(x)\n";
cout<<"[6] Oblicz calke z: f(x)=sin(x)/2*pow(cos(x)-log10(fabs(x-2)),3/2)\n";
cout<<"Funkcja numer: ";
cin>>wybor;
cout<<"Wprowadz granice calkowania:\n";
cout<<"A= ";
cin >> a;
cout<<"B= ";
cin >> b;
cout<<"Wprowadz dokladnosc:\n";
cout<<"eps=10^-";
cin >> eps;
eps=pow(10,-eps);
}
double fun(int wybor0, double x0)
{ double f;
switch(wybor0)
{ case 1: f=1/(pow(log(x0)+sin(x0),0.5)); break;
case 2: f=pow(x0,2); break;
case 3: f=x0; break;
case 4: f=pow(x0,3); break;
case 5: f=sin(x0); break;
case 6: f=sin(x0)/2*pow(cos(x0)-log10(fabs(x0-2)),3/2); break;
default: break;
}
return f;
}
double Calka()
{double int0, int1, k, d, alfa, beta, ep, x1, x2;
int max=0;
d=0;
int0=0;
amount=b-a;
ep=1;
while (fabs(ep)>eps && amount<500000000)
{ int1=0;
if (d!=0) amount*=2;
if (max>2) x1=fabs(ep)/eps;
if (x1>4) amount*=x1;
amount=abs(amount);
d=(b-a)/amount;
for (k=a; k<b; k+=d)
{if (k>b-d && k<b) d=b-k;
alfa=2/d;
beta=1-alfa*(k+d);
x1=(-p3-beta)/alfa;
x2=(p3-beta)/alfa;
int1+=(1/alfa)*(fun(wybor,x1)+fun(wybor,x2));
}
ep=int1-int0;
int0=int1;
max++;
}
eps=fabs(ep);
return int0;
}
int main()
{ Dane();
cout<<"\nCalka z f(x)=";
switch(wybor)
{ case 1: cout<<"1/(pow(log(x)+sin(x),0.5)) "; break;
case 2: cout<<"x^2 "; break;
case 3: cout<<"x"; break;
case 4: cout<<"x^3 "; break;
case 5: cout<<"sin(x)"; break;
case 6: cout<<"sin(x)/(2*pow(cos(x)-log10(fabs(x-2)),3/2))"; break;
default: wybor=3; break;
}
cout<<" na przedziale <"<<a<<","<<b<<">\n wynosi: ";
cout<< setprecision(14)<<Calka();
cout<<"\n"<<"Ostateczna liczba podzialow wyniosla: "<<amount;
cout<<"\nA ostateczna dokladnosc: "<< setprecision(14)<<eps;
getch();
return 0;
}
|
Post został pochwalony 0 razy
|
|
Powrót do góry |
|
|
Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
kalitek
Operator Łopaty
Dołączył: 08 Lis 2006
Posty: 22
Przeczytał: 0 tematów
Ostrzeżeń: 0/5 Skąd: Połaniec / Krakow
|
Wysłany: Pon 19:36, 12 Maj 2008 Temat postu: |
|
|
dorzucam sie do pytanie posiada ktos?
Post został pochwalony 0 razy
|
|
Powrót do góry |
|
|
Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
kalitek
Operator Łopaty
Dołączył: 08 Lis 2006
Posty: 22
Przeczytał: 0 tematów
Ostrzeżeń: 0/5 Skąd: Połaniec / Krakow
|
Wysłany: Wto 13:02, 13 Maj 2008 Temat postu: |
|
|
posiada ktos? poratujcie oczywiscie odplatnie
Post został pochwalony 0 razy
|
|
Powrót do góry |
|
|
|
|
Nie możesz pisać nowych tematów Nie możesz odpowiadać w tematach Nie możesz zmieniać swoich postów Nie możesz usuwać swoich postów Nie możesz głosować w ankietach
|
fora.pl - załóż własne forum dyskusyjne za darmo
Powered by phpBB © 2001, 2005 phpBB Group
|