【学习】算2/1,3/2,5/3,8/5,13/8,21/8........前n项之和 的两种方法

第一种 一边循环数据源一边计算乘积

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title></title>
</head>
<body>
<button onclick="commit()">确定</button>
</body>
<script>
  function commit() {
    var fenzi = 2
    var fenmu = 1
    var n = 3

    //  2/1  3/2  5/3
    var newsumzi = 2
    var newsumfenmu = 1
    for (var i = 1; i < 5; i++) {
      var nextzi = fenzi + fenmu
      var nextmu = fenzi
      var tempzi = 1
      var tempmu = 1

      tempzi = newsumzi * nextmu + newsumfenmu * nextzi
      newsumzi = tempzi

      tempmu = newsumfenmu * nextmu
      newsumfenmu = tempmu

      fenzi = nextzi
      fenmu = nextmu
    }
    console.log(tempmu)
    console.log(tempzi)

    var yinshu = 1
    yinshu = gongyueshu(tempzi,tempmu); // 求最大因数
      console.log('最大公因数' + yinshu)
    if (yinshu !== 1) {
      console.log(tempzi/yinshu + '/' + tempmu/yinshu)
    }else{
      console.log(tempzi + '/' + tempmu)
    }


  }
  function gongyueshu(num1, num2) {
    var a = num1
    var b = num2

    var c = a * b
    if (a < b) {
      var temp = a
      a = b
      b = temp
    }
    while (b !== 0) {
      var temp = a % b
      a = b
      b = temp
    }
    return a
  }

</script>
</html>

 第二种,先循环数据源,然后求出分母之积

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title></title>
</head>
<body>
<button οnclick="commit()">确定</button>
</body>
<script>
  function commit() {
    var x = 1
    var data = [{a: 2, b: 1}]
    for (var i = 1; i < 3; i++) {
      var temp = data[i - 1]

      data.push({a:temp.a + temp.b, b: temp.a})
      x *= b
    }
    console.log(data)
    console.log(x)
    var sum = 0
    for (var item of data) {
      sum += item.a * x / item.b
    }
    console.log(sum)

</script>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
非常抱歉,看来我之的修正还是有问题。以下是更改后的代码,请再次尝试: ``` % 设置训练数据 trainData = [1 2 3 4 5 6 7; 2 4 6 8 10 12 14; 3 6 9 12 15 18 21; 4 8 12 16 20 24 28; 5 10 15 20 25 30 35; 6 12 18 24 30 36 42; 7 14 21 28 35 42 49]; trainData = trainData'; % 转置 % 设置测试数据 testData = [8 9 10 11 12 13 14]; % 设置循环神经网络 inputSize = 7; % 输入层大小 outputSize = 2; % 输出层大小 numHiddenUnits = 10; % 隐藏层大小 net = fitnet(numHiddenUnits, 'trainscg'); % 创建循环神经网络 net.numInputs = 1; % 设置网络输入数量为1 net.inputConnect(1,1) = 1; % 设置第一个输入层与网络连接 net.inputs{1}.size = inputSize; % 设置第一个输入层大小 net.layers{1}.size = numHiddenUnits; % 设置隐藏层大小 net.layers{2}.size = outputSize; % 设置输出层大小 net.divideFcn = ''; % 取消训练数据与验证数据的分割 net.trainParam.epochs = 1000; % 设置训练次数为1000次 net.trainParam.lr = 0.01; % 设置学习率为0.01 net.trainParam.goal = 1e-5; % 设置训练目标为1e-5 % 将数据转换为网络的输入格式 [xTrain, yTrain] = preparets(net, trainData(:,1:end-2)', trainData(:,end-1:end)'); [xTest, yTest] = preparets(net, trainData(:,2:end-1)', trainData(:,end-1:end)'); % 开始训练循环神经网络 net = train(net, xTrain, yTrain, [], [], [], 'useParallel','no'); % 使用循环神经网络进行预测 output = net(xTrain); testOutput = net(xTest); % 绘制预测结果 figure; plot(trainData(:,end-1:end)', 'o-'); hold on; plot(cell2mat(output)', 'x-'); plot([trainData(end,1:end-2) testData], [trainData(end,end-1:end) cell2mat(testOutput)']', '^-'); legend('训练数据', '训练数据预测结果', '测试数据预测结果'); ``` 这段代码应该可以正常运行了,同时还增加了对数据转换的处理。如果还有问题,请随时告诉我。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值