单位向量是指模为 1 的向量,任一非零向量除以它的模可以 求得对应的单位向量,向量模等于各个元素平方和的平方根。 例如,向量 (1, -1, 2, 1, -3) 的模为 1+1+4+1+9=16 的平方根, 即等于 4,所以该向量的单位向量是 (0.25, -0.25, 0.5, 0.25, -0.75)。 编写函数 void unitVector (double a [], double b []), 其中 a 中存储了包含 5 个元素的非零向量,计算得到对应的单位向量, 存放到数组 b 中。 提示:求平方根的函数是 sqrt。
时间: 2024-04-12 11:31:38 浏览: 18
您可以使用以下代码实现函数`unitVector`:
```c
#include <stdio.h>
#include <math.h>
void unitVector(double a[], double b[]) {
double sum = 0.0;
// 计算向量 a 的模的平方和
for (int i = 0; i < 5; i++) {
sum += a[i] * a[i];
}
double magnitude = sqrt(sum); // 计算模的平方根
// 计算单位向量
for (int i = 0; i < 5; i++) {
b[i] = a[i] / magnitude;
}
}
int main() {
double a[] = {1, -1, 2, 1, -3};
double b[5];
unitVector(a, b);
printf("单位向量为: (");
for (int i = 0; i < 5; i++) {
printf("%.2lf", b[i]);
if (i != 4) {
printf(", ");
}
}
printf(")\n");
return 0;
}
```
在上面的代码中,我们使用`unitVector`函数来计算非零向量`a`的单位向量,并将结果存储在数组`b`中。我们首先计算向量`a`的模的平方和,然后使用`sqrt`函数计算平方根得到模的值。接下来,我们将向量`a`中的每个元素除以模的值,得到单位向量,并将结果存储在数组`b`中。最后,在`main`函数中,我们打印出计算得到的单位向量。