2012-10-25 2 views
1

Я сделал этоПреобразовать список команд в функции

f[x_] := x - 2 
x0 = 999.; imax = 5; 
Module[{i, x}, x[0] = x0; 
For[i = 0, i < imax, x[i + 1] = x[i] - f[x[i]]/f'[x[i]]; 
    Print[x[i]]; 
    i++]] 

и пытаюсь превратить это в функцию ньютон rhapson. Мне нужно иметь возможность вводить функцию F [x], начальную догадку и imax.

ответ

0

Mathematica так просто:

newtonraph = Function[{f,x0,imax},Module[{i,x}, 
         x[0] = x0; 
         For[i=0, i < imax, x[i+1] = x[i] - f[x[i]]/f'[x[i]]; 
         Print[x[i]]; 
         i++ 
         ]; 
         ]; 
        ]; 

и вызовите функцию:

func[t_] = 23 + t + 2*(t^2) 
newtonraph[func,10,100] 
+1

Нет, не учат новичков в в Mathematica, а не в случаях (например, этот), где есть намного лучшие (для производительности, лаконичности, возможностей) пути и способы, которые новички должны учиться, предпочитая учиться писать C (или любой другой императивный язык) в Mathematica. –

+0

Я сосредоточился на части «Функция». Однако я должен был исправить свой код, чтобы быть более математическим, вы правы. – pedrosorio

3

Немного более Mathematica-иш:

newt[f_, x0_, imax_] := NestList[# - [email protected]#/f'@# &, x0, imax]; 
f[x_] := x - 2 
x0 = 999; imax = 5; 
newt[f, x0, imax] 
(* 
-> {999, 2, 2, 2, 2, 2} 
*) 
Смежные вопросы