本章节我们主要要来学习 Julia 的复数和有理数。
Julia 语言包含了预定义的复数和有理数类型,并且支持它们的各种标准数学运算和初等函数。
复数,为实数的延伸,它使任一多项式方程都有根。
我们把形如 z=a+bi(a、b均为实数)的数称为复数。其中,a 称为实部,b 称为虚部,i 称为虚数单位,它有着性质。当 z 的虚部 b=0 时,则 z 为实数;当 z 的虚部 b≠0 时,实部 a=0 时,常称 z 为纯虚数。
全局常量 im 被绑定到复数 i,表示 -1 的主平方根。
由于 Julia 允许数值字面量作为数值字面量系数,这种绑定就足以为复数提供很方便的语法,类似于传统的数学记法:
我们也可以对复数进行各种算术操作:
类型提升机制也确保你可以使用不同类型的操作数的组合:
注意 3/4im == 3/(4*im) == -(3/4*im),因为系数比除法的优先级更高。
Julia 提供了一些操作复数的标准函数:
按照惯例,复数的绝对值(abs)是从零点到它的距离。abs2 给出绝对值的平方,作用于复数上时非常有用,因为它避免了取平方根。angle 返回以弧度为单位的相位角(也被称为辐角函数)。所有其它的初等函数在复数上也都有完整的定义:
注意数学函数通常应用于实数就返回实数值,应用于复数就返回复数值。例如,当 sqrt 应用于 -1 与 -1 + 0im 会有不同的表现,虽然 -1 == -1 + 0im:
从变量构建复数时,文本型数值系数记法不再适用。相反地,乘法必须显式地写出:
然而,我们并不推荐这样做,而应改为使用更高效的 complex 函数直接通过实部与虚部构建一个复数值:
这种构建避免了乘法和加法操作。
Inf 和 NaN 可能出现在复数的实部和虚部,正如特殊的浮点值章节所描述的:
有理数是整数(正整数、0、负整数)和分数的统称,是整数和分数的集合。
数学上,可以表达为两个整数比的数(Julia 有一个用于表示整数精确比值的分数类型。分数通过 // 运算符构建:
如果一个分数的分子和分母含有公因子,它们会被约分到最简形式且分母非负:
整数比值的这种标准化形式是唯一的,所以分数值的相等性可由校验分子与分母都相等来测试。分数值的标准化分子和分母可以使用 numerator 和 denominator 函数得到:
分子和分母的直接比较通常是不必要的,因为标准算术和比较操作对分数值也有定义:
分数可以很容易地转换成浮点数:
对任意整数值 a 和 b(除了 a == 0 且 b == 0 时),从分数到浮点数的转换遵从以下的一致性:
Julia接受构建无穷分数值:
但不接受试图构建一个 NaN 分数值:
像往常一样,类型提升系统使得分数可以轻松地同其它数值类型进行交互:
目前,Itembelongs_toCompany和has_manyItemVariants。我正在尝试使用嵌套的fields_for通过Item表单添加ItemVariant字段,但是使用:item_variants不显示该表单。只有当我使用单数时才会显示。我检查了我的关联,它们似乎是正确的,这可能与嵌套在公司下的项目有关,还是我遗漏了其他东西?提前致谢。注意:下面的代码片段中省略了不相关的代码。编辑:不知道这是否相关,但我正在使用CanCan进行身份验证。routes.rbresources:companiesdoresources:itemsenditem.rbclassItemi
这可行,但看起来有点丑:s=:shops.to_s.pluralize.to_sym#=>:shops有没有更好的方法来复数化Symbol? 最佳答案 您可以复数表示实际文本的String。符号有点抽象。所以,根据定义,不。但是,也许您可以打开Symbol类定义并添加:classSymboldefpluralizeto_s.pluralize.to_symendend然后,您可以调用::shop.pluralize#=>:shops 关于ruby-on-rails-如何复数Ruby(
在开始编写任何代码之前,我正在为我的RESTAPI构建URL。RailsREST的魔力很棒,但我对URL的格式有点不满意,例如:http://myproject/projects/5其中Project是我的资源,5是project_id。我认为如果用户希望检索他们的所有项目,那么相应的HTTPGEThttp://myproject/projects是有意义的。但是,如果他们希望检索有关单个资源(例如项目)的信息,那么使用http://myproject/project/5与http://myproject/项目/5。最好避免这种头痛,还是你们中的一些人有类似的担忧,甚至更好-有一个可行
我正在尝试在我的控制台中测试一个方法,但即使是基本的复数-pluralize(1,'person')不会工作..输出:NoMethodError:undefinedmethod'pluralize'formain:Objectfrom(pry):42:in''但是helper.method(:pluralize)告诉我:Method:ActionView::Base(ActionView::Helpers::TextHelper)#pluralize我错过了什么? 最佳答案 控制台中默认不包含助手。您可以先包含它们,它会起作用:>>
当您向用户显示一条消息,其中涉及一个可以是单数或复数的实体时,Rails有一个快捷方式来处理它。我说的是这种情况:“删除委员会?它的X次session也将被删除。”Rails有一种方法可以根据X将“session”显示为“session”或“session”。我不记得那条路是什么了。这不是String#pluralize。 最佳答案 ActionView::Helpers::TextHelper::pluralize(count,singular,plural=nil)Attemptstopluralizethesingularwo
irb(main):001:0>require'active_support'=>trueirb(main):002:0>require'active_support/inflector/inflections'=>trueirb(main):003:0>ActiveSupport::Inflector.pluralize('test')=>"test"irb(main):004:0>ActiveSupport::Inflector.singularize('tests')=>"tests"irb(main):005:0>ActiveSupport::Inflector.titleiz
我想进行实现以下项目的搜索。现在,我已经通过Regex实施了所有这些,这远非涵盖所有内容,我想知道我可以为此使用elasticsearch多少:同义词我的理解是,当创建索引时,这将实现。indexSettings.Analysis.TokenFilters.Add(“同义词”,新的同义词tokenfilter{synonyms=new[]{“tire=>tire”,“aluminum=>aluminum”},ignorecase=true,true,true,tokenizer=tokenizer=“whitespace”whitespace“whitespace”}));但是我还
使用的优缺点是什么:FooLib::PluginsFooLib::Plugins::Bar对比FooLib::PluginFooLib::Plugin::Bar命名约定?你会用什么或者你在用什么?社区里比较常用的是什么? 最佳答案 使用:moduleFooLibendmoduleFooLib::PluginsendclassFooLib::Plugins::Plugin;end#thebaseforpluginsclassFooLib::Plugins::Bar或者换句话说:moduleFooLibmodulePluginsclas
我正在编写一些Ruby代码,而不是Rails,我需要处理这样的事情:found1matchfound2matches我安装了Rails,所以也许我可以在脚本顶部添加一个require子句,但是有人知道RUBY的复数字符串方法吗?如果脚本不是Rails但我安装了Rails,是否有一个我可以要求的类可以处理这个问题?编辑:所有这些答案都很接近,但我勾选了使它对我有用的那个。在编写Ruby而不是Rails代码时尝试使用此方法作为帮助程序:defpluralize(number,text)returntext.pluralizeifnumber!=1textend
根据RubyonRails惯例,Controller名称采用复数形式,而模型名称采用单数形式。示例:一个用户Controller,但是一个用户模型。railsgeneratecontrollerUsersrailsgeneratemodelUsername:stringemail:string现在打开迁移文件classCreateUsers这里的表名是复数(users)所以我的问题是-为什么表名是复数(用户),即使模型名称是单数(用户)? 最佳答案 RubyonRails遵循语言惯例。这意味着一个模型代表一个用户,而数据库表由许多用