28.03.2014, 21:03. Просмотров 344. Ответов 1
есть такая функция
C++ |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| void implicitCurve(const double* x, double* y, double* Df)
{
// funkcyja f(a,b,c) = (1-a^2-b^2-c^2,(a+b+c)/(a^2+b^2+c^2)-1)
//
const double n = x[0]*x[0] + x[1]*x[1] + x[2]*x[2];
const double s = x[0] + x[1] + x[2];
y[0] = 1. - n;
y[1] = s/n - 1.;
Df[0] = -2.*x[0];
Df[1] = -2.*x[1];
Df[2] = -2.*x[2];
const double r = 1./n;
const double r2 = 2.*y[1]*r;
Df[3] = r - x[0]*r2;
Df[4] = r - x[1]*r2;
Df[5] = r - x[2]*r2;
} |
|
У нас есть какой-то массив , каждый элемент массива пересчитываем закидываем в еще один массив и производные того что вышло закидываем в еще один массив (все нужное для методю Ньютона)
C++ |
1
2
3
4
5
| typedef void (*FuncPointer)(const double* x, double* y, double* Df);
int findCurve(FuncPointer f, double* x, unsigned k, double h);
findCurve(implicitCurve,x,10,1./128); |
|
findcurve то что нужно написать , вот только я не до конца понимаю что нам дает typedef и как вообще получить данные с FuncPointer'a?