首页/文章/ 详情

Rust语言尝鲜

28天前浏览1344

首先,还是要吹捧一下这个编程语言。语法很严谨,Rust语言号称只要编译通过就不会崩溃(内存安全)。不像C++那种,概念混乱,连Bjarne Stroustrup都曾开玩笑说自己已经搞不懂C++了。而且一个报错信息就一万多行,然后必须是大师级的程序员,精通 Intel规范的汇编语言的那种C++程序员,才能搞清楚什么地方出了问题。个人认为Rust对于程序员的综合素质要求,是低于C++的。所以笔者决定将Rust作为首选。

下面牛刀小试一把。以函数式编程方式,计算数值积分。以定积分

 

为例。该积分精确值为-6.75.如果将积分区间500等分,计算结果为-6.723,相对误差为0.4%。Python以及C++编程实现点击这里:

函数式编程计算数值积分

Rust代码

fnmain() {
let  steps = 500// 区间500等分
let a:f64 = 0.0;
let b:f64 = 3.0;
let dx = (b-a)/(steps asf64); //每个区间长度,注意整型变量显式转化成浮点型
let f = | x:f64 | {
    x*x*x - 6.0*x
    }; //闭包,相当于匿名函数,这里定义的是被积函数
let sub_area = | x:f64 | {
        f(x)*dx
    };//一个子区间的面积,还调用了被积函数
let  res = (0..steps).map(|x| ( (x asf64)+1.0 )*dx ).map(|x| sub_area(x) ).sum::<f64>();
println!("结果为:{}", res)
}

程序中计算res的部分相当于C++里面的管道操作符。将{0,1,2,3,4,5,...,500}通过第一个map映射成每一个子区间中点,而第二个map就是通过子区间中点计算每一个子区间的面积。最后通过sum()函数累加起来。

Python入门容易,想要提高却很难。有一些机器学习的Python代码,很难理解。在学习一些底层语言比如C++,Rust之后,再去思考,就会容易一些了。

比如下面的问题:

use std::io::stdin;
fnmain() {
println!("What is 3+2? Type your answer and press enter.");
letmut input = String::new();//字符串变量
    stdin()
    .read_line(&mut input)
    .expect("Unable to read standard input");
if input == "5" {
println!("Correct!");
    } else {
println!("Incorrect!");
    }
}

键盘输入5,并由input接收,正常情况下input == "5"没毛病。可最后却输出"Incorrect!",为什么?原来我们在输入时按了enter键,\n意味着换行。

use std::io::stdin;
fnmain() {
println!("What is 3+2? Type your answer and press enter.");
letmut input = String::new();//字符串变量
    stdin()
    .read_line(&mut input)
    .expect("Unable to read standard input");
if input.trim() == "5" {
println!("Correct!");
    } else {
println!("Incorrect!");
    }
}

用trim方法将input多余的去掉,最后输出"Correct!"

来源:数值分析与有限元编程
STEPSpythonUM管道
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2024-04-03
最近编辑:28天前
太白金星
本科 慢慢来
获赞 2粉丝 4文章 283课程 0
点赞
收藏

作者推荐

未登录
还没有评论

课程
培训
服务
行家

VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈