C++ Valarray::log 函数



它旨在保存一个值数组,并轻松地对其执行数学运算。它还允许使用特殊机制来引用数组中元素的子集。

使用 C++ <valarray> log() 函数计算 valarray 元素值的自然对数。此函数重载了 cmath log() 方法,该方法会为每个元素调用一次。

语法

以下是 C++ Valarray::log 函数的语法:

log (const valarray<T>& x);

参数

x − 包含定义了一元函数 log 的类型的元素。

示例

示例 1

让我们来看下面的例子,我们将使用 log() 函数并检索输出。

#include <iostream>
#include <valarray>
using namespace std;
int main() {
   valarray<double>
   val = { 3,5,7,9,11 };
   valarray<double> valarray1 ;
   valarray1 = log(val);
   cout << "The New log"
      << " Valarray is : "
      << endl;
   for (double& x : valarray1) {
      cout << x << " ";
   }
   cout << endl;
   return 0;
}

输出

让我们编译并运行上述程序,这将产生以下结果:

The New log Valarray is : 
1.09861 1.60944 1.94591 2.19722 2.3979  

示例 2

在下面的示例中,我们将使用 log() 函数,并为生成的 exp 值在 exp 和 log 中检索输出。

#include <iomanip>
#include <iostream>
#include <valarray>

void show(char const* title, const std::valarray<double>& va) {
   std::cout << title << " :" << std::right << std::fixed;
   for (double x : va) {
      std::cout << std::setw(8) << x;
   }
   std::cout << '\n';
}
int main() {
   const std::valarray<double> n { 0.5,4.0,6.0,8.0 };
   const std::valarray<double> exp_n { std::exp(n) };
   const std::valarray<double> log_exp_n { std::log(exp_n) };
   show("x     ", exp_n);
   show("log(x)", log_exp_n);
}

输出

让我们编译并运行上述程序,这将产生以下结果:

x      :1.64872154.598150403.4287932980.957987
log(x) :0.5000004.0000006.0000008.000000   

示例 3

考虑另一种情况,我们将使用 log() 函数并检索原始 valarray 和 log valarray 值的输出。

#include <iostream>
#include <valarray>
using namespace std;

int main() {
   valarray<double> myvalarray = { 1.2, -3.4, 0.6, -0.7, 2.5 };
   cout << "The Orignal Valarray is : ";
   
   for (double& ele : myvalarray)
      cout << ele << " ";
   valarray<double> logValarray;
   logValarray = log(myvalarray);
   cout << "\nThe log Valarray is : ";
   
   for (double& ele : logValarray)
      cout << ele << " ";
   return 0;
}

输出

让我们编译并运行上述程序,这将产生以下结果:

The Orignal Valarray is : 1.2 -3.4 0.6 -0.7 2.5 
The log Valarray is : 0.182322 -nan -0.510826 -nan 0.916291
广告