0

我必须计算函数的极限

(c^(2n) - 1)/(c^(2n) + 1) as n = 1,2,3... 走向无穷大

函数的行为将取决于参数 c,我想说明的是通过为不同的 c 值绘制序列的前 100 个(左右)值 - 比如说三个图,一个 for c = 1,一个 for-1 < c < 1和一个 for c > 1,如果可能的话,都在一张“图片”中。

在 MATLAB 中解决这个问题的最佳方法是什么?

4

2 回答 2

3

您需要使用内联函数,保留所有和图例。这是一个简单的例子

n=1:100;
f = @(c) (c.^(2.*n) - 1)./(c.^(2.*n) + 1); 
hold all;
plot(n,f(0.7),'.-');
plot(n,f(0.9),'.-');
plot(n,f(0.95),'.-');
plot(n,f(1),'.-');
plot(n,f(1.05),'.-');
plot(n,f(1.3),'.-');
plot(n,f(1.1),'.-');
legend('c=0.7','c=0.9','c=0.95','c=1.0','c=1.05','c=1.3','c=1.1');

这个的输出看起来像这样 在此处输入图像描述

于 2012-10-13T04:16:39.870 回答
2

我会做类似的事情:

% Clean up, this isn't necessary if you're throwing this in a function
%   and not a script.
close all
clear all
clc

% Define your function
f = @(c,n)( (c^(2*n) - 1)/(c^(2*n) + 1) );

% An array containing the values of c you want to use
C = [0.5, 1, 1.5, 2];

% N will contain 500 points, equally spaced between 1 and 20.
%   (Modify these arguments as necessary)
N = linspace(1,20,500);

% Initialize an output matrix
Y = zeros(length(N), length(C));
for i = [1:length(C)]
    c = C(i);

    for j = [1:length(N)]
        n = N(j);

        % Compute value of function
        y = f(c,n);

        % Store it
        Y(j,i) = y;
    end%for
end%for

% Plot it
plot(N,Y);

% Generate Legend
lt = cell(1,length(C));
for i = [1:length(C)]
    lt{i} = sprintf('C = %s', num2str(C(i)));
end%for
legend(lt);

您可以通过修改函数f以接受和返回向量来优化它,但这个显式版本可能会更好地显示正在发生的事情。

于 2012-10-13T00:28:46.170 回答