NI MAX 在Windows 2008R2中无法正常工作的问题

本文解决了NI MAX在Windows 2008 R2系统中无法正常工作的问题,通过禁用IE浏览器的增强安全配置,使用户能够成功地使用MAX进行设备管理。

NI MAX 在Windows 2008R2中无法正常工作


这个问题困扰了两天了。一样的驱动,一样的安装文件,我在win7上面装好,是正常工作的,但是在windows 2008R2上面装好就是不行。


在NI的技术支持站点中搜索到这样一篇文章 http://digital.ni.com/public.nsf/allkb/3055D5912CB7BF4D86257EAB00427D40


这篇文章中的MAX是4.5的,我安装的14.0,我的不会报silverlight这个问题,但是就是扫描不到设备,按照这个方式设置了之后,就可以正常工作了。是为记。


MAX无法在2008 R2服务器操作系统中正常工作



主要软件: Utility Software>>Measurement & Automation Explorer
主要软件版本: 4.7
主要软件修正版本: N/A
次要软件: N/A

问题:

我已经在2008 R2服务器操作系统中安装了NI的MAX,为什么当我打开分类目录时没有反应,或者不停的提示我请安装微软Silverlight软件。



解答:

NI的软件产品要在2008 R2服务器操作系统中正常运行,需要禁用IE浏览器中增强安全配置选项。而在该操作系统中,这个选项默认情况下是启用的。所以为了能正常运行MAX,必须按照以下步骤禁用该选项。

  1. 在Windows任务栏中打开服务器管理器。也可以通过在开始菜单中搜索服务器管理器,点击进入。
  2. 进入服务器管理器后,定位到服务器概要下的安全信息,选择增强安全配置选项。

    Server Summary IE ESC

  3. 在打开的IE增强安全配置对话框中,同时禁用管理员和用户的增强安全配置。

    IE ESC Dialog BoxIE ESC Dialog Box

注意:如果在设置的时候,IE浏览器处于开启状态。需要重启浏览器才能生效。



相关链接:  KnowledgeBase 5F6I4GYP: Why Does MAX Tell Me that Microsoft Silverlight is Not Installed Even Though it is Installed?
KnowledgeBase 4GA9TOQA: What is the Process For Removing MAX Database Corruption?

附件: 





报告日期: 2012-10-22
最近更新: 2015-09-27
文档编号: 62LAMC00
#include <stdio.h> #include <stdlib.h> #include <math.h> #include <complex.h> #include <fftw3.h> #define PI 3.14159265358979323846 // 参数设置 const double TAU = 0.05; const int ITERATIONS = 100; // 假定迭代次数足够大以达到收敛 // 初始化空间网格 void init_space(int N, double *x) { for (int i = 0; i < N; ++i) { x[i] = 2.0 * PI * i / N; } } // 计算精确解 void compute_exact_solution(int N, const double *x, double *u_exact) { for (int i = 0; i < N; ++i) { u_exact[i] = sin(x[i]); } } // 拟谱法迭代核心 void pseudospectral_step(fftw_complex *u_hat, fftw_plan plan_forward, fftw_plan plan_backward, int N) { // 这里省略了实际的迭代逻辑,包括傅里叶系数的更新等 // 需要按照(2.4)式进行计算 } int main() { // 不同的N值 int N_values[] = {4, 8, 16, 32, 64}; int N_len = sizeof(N_values)/sizeof(N_values[0]); // 对每个N值执行实验 for (int ni = 0; ni < N_len; ni++) { int N = N_values[ni]; double *x = (double *)malloc(N * sizeof(double)); double *u_exact = (double *)malloc(N * sizeof(double)); fftw_complex *u_hat = (fftw_complex *)fftw_malloc(sizeof(fftw_complex) * N); fftw_plan plan_forward = fftw_plan_dft_r2c_1d(N, x, u_hat, FFTW_ESTIMATE); fftw_plan plan_backward = fftw_plan_dft_c2r_1d(N, u_hat, x, FFTW_ESTIMATE); init_space(N, x); compute_exact_solution(N, x, u_exact); // 初始化u_hat为0,对应于初始条件u|∂Ω=0 for (int i = 0; i < N; ++i) { u_hat[i] = 0.0; } // 迭代求解 for (int it = 0; it < ITERATIONS; ++it) { pseudospectral_step(u_hat, plan_forward, plan_backward, N); } // 计算无穷范数误差 fftw_execute(plan_backward); double max_error = 0.0; for (int i = 0; i < N; ++i) { double error = fabs(u_exact[i] - creal(u_hat[i]) / N); // 注意归一化 if (error > max_error) max_error = error; } printf("N=%d, Inf Norm Error=%.15e\n", N, max_error); // 清理资源 fftw_destroy_plan(plan_forward); fftw_destroy_plan(plan_backward); fftw_free(u_hat); free(x); free(u_exact); } return 0; }
06-05
你的代码实现了一个基于拟谱法的数值求解过程,主要通过傅里叶变换和反变换来更新解。以下是对你代码的一些解释以及改进建议: ### 代码解释 1. **空间网格初始化**: - 函数 `init_space` 将空间离散化为均匀网格点。 - 使用公式 \( x_i = \frac{2\pi i}{N} \) 来生成网格。 2. **精确解计算**: - 函数 `compute_exact_solution` 计算初始条件或精确解。 - 在这里假设精确解为 \( u(x) = \sin(x) \)。 3. **拟谱法迭代核心**: - 函数 `pseudospectral_step` 是拟谱法的核心部分,但由于具体实现未提供,我们无法详细分析其内容。 4. **主程序逻辑**: - 主程序对不同的 \( N \) 值(网格点数)进行实验。 - 每次实验包括以下步骤: - 初始化空间网格和精确解。 - 创建 FFTW 计划用于傅里叶变换和反变换。 - 迭代求解并更新傅里叶系数。 - 计算无穷范数误差并与精确解对比。 5. **资源清理**: - 每次实验结束后释放内存和销毁 FFTW 计划。 --- ### 改进建议 1. **傅里叶系数初始化**: - 当前代码将 `u_hat` 初始化为 0,这可能不符合实际问题的初始条件。需要根据具体问题设置初始傅里叶系数。 2. **归一化处理**: - 在反傅里叶变换后,结果需要除以 \( N \) 进行归一化。确保在误差计算中正确处理这一点。 3. **误差计算优化**: - 当前使用了 `fabs` 和 `creal` 来计算误差,但可以进一步优化以提高性能。 4. **边界条件处理**: - 如果问题有特定的边界条件(如周期性或非周期性),需要在代码中明确体现。 5. **伪谱法核心实现**: - 当前 `pseudospectral_step` 函数未实现具体逻辑。以下是一个简单的伪代码示例: ```cpp void pseudospectral_step(fftw_complex *u_hat, fftw_plan plan_forward, fftw_plan plan_backward, int N) { // 反傅里叶变换到物理空间 fftw_execute(plan_backward); // 在物理空间更新 u (例如,添加非线性项) for (int i = 0; i < N; ++i) { double u_real = creal(u_hat[i]) / N; double u_imag = cimag(u_hat[i]) / N; // 示例:简单的时间步更新 u_hat[i][0] = u_real + TAU * (-u_real); // 简单线性衰减 u_hat[i][1] = u_imag + TAU * (-u_imag); } // 傅里叶变换回频域 fftw_execute(plan_forward); } ``` --- ### 完整代码示例 以下是改进后的完整代码: ```cpp #include <stdio.h> #include <stdlib.h> #include <math.h> #include <complex.h> #include <fftw3.h> #define PI 3.14159265358979323846 // 参数设置 const double TAU = 0.05; const int ITERATIONS = 100; // 初始化空间网格 void init_space(int N, double *x) { for (int i = 0; i < N; ++i) { x[i] = 2.0 * PI * i / N; } } // 计算精确解 void compute_exact_solution(int N, const double *x, double *u_exact) { for (int i = 0; i < N; ++i) { u_exact[i] = sin(x[i]); } } // 拟谱法迭代核心 void pseudospectral_step(fftw_complex *u_hat, fftw_plan plan_forward, fftw_plan plan_backward, int N) { // 反傅里叶变换到物理空间 fftw_execute(plan_backward); // 在物理空间更新 u (例如,添加非线性项) for (int i = 0; i < N; ++i) { double u_real = creal(u_hat[i]) / N; double u_imag = cimag(u_hat[i]) / N; // 示例:简单的时间步更新 u_hat[i][0] = u_real + TAU * (-u_real); // 简单线性衰减 u_hat[i][1] = u_imag + TAU * (-u_imag); } // 傅里叶变换回频域 fftw_execute(plan_forward); } int main() { // 不同的N值 int N_values[] = {4, 8, 16, 32, 64}; int N_len = sizeof(N_values) / sizeof(N_values[0]); // 对每个N值执行实验 for (int ni = 0; ni < N_len; ni++) { int N = N_values[ni]; double *x = (double *)malloc(N * sizeof(double)); double *u_exact = (double *)malloc(N * sizeof(double)); fftw_complex *u_hat = (fftw_complex *)fftw_malloc(sizeof(fftw_complex) * N); fftw_plan plan_forward = fftw_plan_dft_r2c_1d(N, x, u_hat, FFTW_ESTIMATE); fftw_plan plan_backward = fftw_plan_dft_c2r_1d(N, u_hat, x, FFTW_ESTIMATE); init_space(N, x); compute_exact_solution(N, x, u_exact); // 初始化u_hat为0,对应于初始条件u|∂Ω=0 for (int i = 0; i < N; ++i) { u_hat[i][0] = 0.0; u_hat[i][1] = 0.0; } // 迭代求解 for (int it = 0; it < ITERATIONS; ++it) { pseudospectral_step(u_hat, plan_forward, plan_backward, N); } // 计算无穷范数误差 fftw_execute(plan_backward); double max_error = 0.0; for (int i = 0; i < N; ++i) { double error = fabs(u_exact[i] - creal(u_hat[i]) / N); // 注意归一化 if (error > max_error) max_error = error; } printf("N=%d, Inf Norm Error=%.15e\n", N, max_error); // 清理资源 fftw_destroy_plan(plan_forward); fftw_destroy_plan(plan_backward); fftw_free(u_hat); free(x); free(u_exact); } return 0; } ``` --- ### 解释 1. **傅里叶变换与反变换**: - `plan_forward` 将数据从物理空间变换到频域。 - `plan_backward` 将数据从频域变换回物理空间。 2. **时间步更新**: - 在物理空间中对解进行更新,模拟了简单的线性衰减过程。 3. **误差计算**: - 通过比较数值解和精确解的最大绝对误差来评估精度。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值