Extras din laborator
Condiţie :
1. Este dată funcţia y=f(x).
Alcatuiţi în C++ funcţia (procedura) proprie ce depinde de 2
parametri şi calculează valoarea funcţiei f pentru argumentul
dat x cu precizia dată epsilon.
2. Creaţi un proiect de tip Single Document în Microsoft Visual C++. Adăugaşi în proiectul dat codul ce desenează cu segmente de linii drepte graficul funcşiei f cu culoarea indicată pe intervalul dat (a,b) cu pasul dat h . Pentru a calcula valoarea funcşiei folosişi procedura proprie cu precizia indicată.
3. Adăugaţi în proiect codul care desenează cu o altă culoare deasupra primului grafic un grafic punctat al aceleiaşi funcţii, însă fiind calculată funcţia cu ajutorul bibliotecii standarte de funcţii matemetice. Graficele trebuie să coincidă.
4. Adăugaţi în proiect codul care creează 2 fişiere de tip text cu un numar egal de linii ce coincide cu un număr de puncte calculate ale funcţiei. Primul fişier trebuie să conţină pentru fiecare linie:
- valoarea argumentului;
- valoarea funcţiei calculată cu ajutorul procedurii proprii;
- valoarea funcţiei calculată cu ajutorul funcţiei standarte (bibliotecii matematice);
- mărimea absolută a valorii tabulate (diferenţa dintre două valori calculate);
- precizia dată.
Acest fişier îl folosim pentru un control vizual al faptului că mărimea absolută a diferenţei fiecărei linii nu întrece valoarea preciziei.
Al doilea fişier îl utilizăm pentru un control suplimentar.
5. De încărcat un program specializat de desenare al graficelor
funcţiilor. De importat al 2-lea fişier textual şi de construit
graficul funcţiei folosind perechile de coordonate. De construit
deasupra graficului graficul aceleiaşi funcţii folosind forma
analitică. De analizat datele obţinute.
6. De prezentat şi de susţinut lucrarea la profesorul de laborator.
2. Lising-ul:
// proiectView.cpp : implementation of the CproiectView class
//
#include "stdafx.h"
#include "proiect.h"
#include "math.h"
#include "proiectDoc.h"
#include "proiectView.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
// CproiectView
IMPLEMENT_DYNCREATE(CproiectView, CView)
BEGIN_MESSAGE_MAP(CproiectView, CView)
// Standard printing commands
ON_COMMAND(ID_FILE_PRINT, &CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_DIRECT, &CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_PREVIEW, &CView::OnFilePrintPreview)
END_MESSAGE_MAP()
// CproiectView construction/destruction
CproiectView::CproiectView()
{
// TODO: add construction code here
}
CproiectView::~CproiectView()
{
}
BOOL CproiectView::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
return CView::PreCreateWindow(cs);
}
// CproiectView drawing
double myf (double x, double e){
double s,t;
int k;
k=1;
s=t=x;
for (k=2;fabs(t)>e;k++)
{
t=t*x*x/((2*k-1)*(2*k-2));
s+=t;}
return s; }
void CproiectView::OnDraw(CDC* pDC)
{
CproiectDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
return;
// TODO: add draw code for native data here
double x,y,a=-6,b=6,s=0.025,scx=60.0,scy=80.0,e=0.0001;
CPen penAxa (PS_SOLID,4,RGB(0,0,200));
CRect rcClient;
GetClientRect(&rcClient);pDC->SelectObject(&penAxa);
pDC->MoveTo(0,rcClient.CenterPoint().y);
pDC->LineTo(rcClient.Width(),rcClient.CenterPoint().y)
Preview document
Conținut arhivă zip
- Biblioteci Grafice. Functii de Baza.doc