Построение итеративно заданной функции в MATLAB

Я не профессионал MATLAB, поэтому мне нужна помощь в создании трехмерного графика итеративно определенной функции f : R^2-0 -> R определено ниже (в псевдокоде) для значений x,y в [-1,1] и

Для каждого I = 1,2,3 и A = (0,5,0,5)

function  f(v in R^2-0)
{
    a=b=0;     (a,b in R)        
    for (i=0; i<I; i=i+1)
    {
        v = |v| / ||v||^2 - A;
        a = a + | ||v||-b |;
        b = ||v||;
    }
    return a;
}

(|v| обозначает абсолютное значение вектора по компонентам)

(Если вы хотите, вы можете посмотреть на фрактал, который генерирует функция, на мой вопрос по математическому обмену здесь:

https://math.stackexchange.com/questions/1457733/a-question-about-a-fractal-like-iteratively-defined-function )

Код MATLAB для этого будет оценен по достоинству.

Большое спасибо.


person MathNerd    schedule 02.10.2015    source источник
comment
Так что это не служба кодирования. Где у вас есть проблемы с реализацией функции?   -  person Daniel    schedule 03.10.2015


Ответы (1)


Сохраните эту основную программу:

clear
clc
close all

% I = 1;
% A = [ 0.5 0.5 ];

I = 10;
A = [ 0.5 0.5 0.5 ];

xmin = -1;
xmax = 1;

ymin = -1;
ymax = 1;

nx = 101;
ny = 101;

dx = (xmax - xmin) / (nx - 1);
dy = (ymax - ymin) / (ny - 1);

x = xmin: dx: xmax;
y = ymin: dy: ymax;

for ix = 1: nx
    for iy = 1: ny
        if (length(A) == 2)
            z(iy, ix) = f([x(ix) y(iy)], A, I);
        elseif (length(A) == 3)
            z(iy, ix) = f([x(ix) y(iy) 0], A, I);
        end
    end
end

pcolor(x, y, z)
shading interp

Затем сохраните эту функцию в том же каталоге, что и основная программа, как f.m:

function result = f(v, A, I)

a = 0;
b = 0;

for i = 1: I
    v = abs(v) / dot(v, v) - A;
    a = a + abs(norm(v) - b);
    b = norm(v);
end
result = a;

end
person Jeff Irwin    schedule 03.10.2015