如何正确计算非线性函数并在Octave中绘制其图?

问题描述

目标:使用非线性函数绘制图形。 功能和图形

enter image description here

enter image description here

这是我第一次在Octave工作。要绘制图形,我需要计算Fx(0.1 ... 10)范围内的函数。

我试图通过在for循环中循环功能,将结果写入数组(x轴-Fn,y轴-函数值),然后将数组加载到plot()函数中来实现这一目的。 / p>

Fn = 1
Ln = 5
Q  = 0.5

function retval = test (Fn,Ln,Q)
  # Fn squared (for common used)
  Fn = Fn^2
  # Node A + Node B
  nodeA = Fn * (Ln - 1)
  nodeB = (Ln * Fn - 1)^2 + Fn * (Fn - 1)^2 * (Ln - 1)^2 * Q^2
  nodeB = sqrt(nodeB)
  # Result
  result = nodeA / nodeB
  retval = result
  return;
endfunction


frequencyArray = {}
gainArray = {}
fCount = 1
gCount = 1

for i = 0:0.5:5
  # F
  Fn = i
  frequencyArray{fCount} = Fn
  fCount = fCount + 1
  # G
  gainArray{gCount} = test(Fn,Q)
  gCount = gCount + 1
end

plot(frequencyArray,gainArray);

结果,我收到有关数组格式的错误。

>> plot(frequencyArray,gainArray);
error: invalid value for array property "xdata"
error: __go_line__: unable to create graphics handle
error: called from
    __plt__>__plt2vv__ at line 495 column 10
    __plt__>__plt2__ at line 242 column 14
    __plt__ at line 107 column 18
    plot at line 223 column 10

除了错误之外,我相信可以以更正确的方式解决这些任务,但是我不太了解要寻找什么。

问题:

  1. 我是否选择了解决问题的正确方法?还有更优雅的方式吗?
  2. 如何解决此错误?

谢谢!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)