2015-09-29 5 views
0

Я пытался выяснить метод Ньютона, чтобы найти корень уравнения. И эта ошибка появилась, и я не мог ее обработать .Недопустимые операнды в двоичное выражение ('double (*) (double' и 'double')

double fn(double n){ 
    return sin(n)+log(n)-1; 
} 

double f1n(double n){ 
    return cos(n)+1/n; 
} 

double operation(double n){ 
    n=n-fn/f1n; 

    while(fn>0.000001){ 
     n=n-fn/f1n; 
    } 

    return n; 
} 
+0

п и f1n являются функциями. Вы делите одну функцию на другую, которая не имеет никакого смысла. Вы, вероятно, хотите, чтобы вызывать эти функции с помощью Fn (n) и f1n (n) и использовать ответы –

+0

'' n = n-fn/f1n; '' Что вы пытаетесь достичь с помощью div ide двух адресов памяти (2 функции)? – BitTickler

+0

Вы * делаете * знаете, как вызвать функции, не так ли? Ну, очевидно, что вы это делаете, как вы это делаете в коде, который вы показываете (например, вы называете функции 'cos' или' sin'), почему бы вам не сделать это со своими собственными функциями? –

ответ

1

Вы забыли передать n своим функциям.

double operation(double n) 
{ 
    n = n - fn(n)/f1n(n); 
    while(fn(n) > 0.000001) 
    { 
     n = n - fn(n)/f1n(n); 
    } 
    return n; 
} 
+0

Большое спасибо! Я понял! –

Смежные вопросы