小编sta*_*ser的帖子

Python - matplotlib椭圆曲线

我正在自学matplotlib和Python,我很难绘制椭圆曲线的方程.我有等式,但我没有做y^2

这和我到目前为止所遇到的一样麻烦:

from mpl_toolkits.axes_grid.axislines import SubplotZero
import matplotlib.pyplot as plt
import numpy as np
from pylab import *


def plotGraph():
    fig = plt.figure(1)
    ax = SubplotZero(fig, 111)
    fig.add_subplot(ax)

    for direction in ["xzero", "yzero"]:
        ax.axis[direction].set_axisline_style("-|>")
        ax.axis[direction].set_visible(True)

    a = 5; b = 25
    x = np.arange(-50.0, 50.0, 1.0)
    y = pow(x,3) + a*x + b

    xmin = -50; xmax = 50; ymin = -50; ymax = 50
    v = [xmin, xmax, ymin, ymax]
    ax.axis(v)

    ax.plot(x, pow(y,2))

    #grid()
    #ax.grid(color='r', linestyle='-', linewidth=2)

    show() …
Run Code Online (Sandbox Code Playgroud)

python matplotlib elliptic-curve python-2.7 finite-field

10
推荐指数
1
解决办法
2475
查看次数

GF(2)有限域中的Python乘法逆

这两个函数执行扩展欧几里德算法,然后找到乘法逆.这个顺序似乎是正确的,但它并没有按照悉尼大学的这个工具回复http://magma.maths.usyd.edu.au/calc/,因为这是在GF(2)完成的. )有限域,我想我错过了从基数10转换到这个字段的一些关键步骤.

这在基数10上进行了测试和处理,但是在这里可能无法接收具有二进制系数的多项式.所以我的问题是我错误地应用于这个算法的Python的哪些部分,例如// floor,可能无法承载基本10中的函数能够在GF(2)中执行此操作.

上面的工具可以像这样测试:

R<x>:=PolynomialRing(GF(2));
p:=x^13+x+1; q:=x^12+x;
g,r,s:=XGCD(p,q);

g eq r*p+s*q;

g,r,s;
Run Code Online (Sandbox Code Playgroud)

功能:

def extendedEuclideanGF2(self,a,b): # extended euclidean. a,b are values 10110011... in integer form
    inita,initb=a,b;  x,prevx=0,1;  y,prevy = 1,0
    while b != 0:
        q = int("{0:b}".format(a//b),2)
        a,b = b,int("{0:b}".format(a%b),2);
        x,prevx = (int("{0:b}".format(prevx-q*x)), int("{0:b}".format(x,2)));  y,prevy=(prevy-q*y, y)
    print("Euclidean  %d * %d + %d * %d = %d" % (inita,prevx,initb,prevy,a))
    return a,prevx,prevy  # returns gcd of (a,b), and factors s and t

def modular_inverse(self,a,mod): # a,mod are integer values …
Run Code Online (Sandbox Code Playgroud)

python polynomial-math python-2.7 galois-field finite-field

6
推荐指数
1
解决办法
3398
查看次数

Python for循环列出理解

我是Python的初学者,正在教自己列表理解.几乎所有我已经转换为列表理解的for循环代码我都做得很好,但我非常坚持我认为是一个相当简单的循环.

n = 10000

def sim(y):
  count = 0
  for i in range(10000):
    if 0.9 <= y[i] <= 1.8:
        count += 1
  probability = count/10000.0
  print("P(a < x <= b) : {0:8.4f}".format(probability))


print ("\t case: \n"),sim([0.25 if random() < 0.8 else 1.5 for r in range(n)])
Run Code Online (Sandbox Code Playgroud)

到目前为止,我一直在尝试对以下内容进行修改,但是所有错误都与使用列表相关,例如"'int'对象是unsubscriptable"和"不支持的操作数类型+":'int'和'list' ".

def sim(y):
  c4 = sum([y for range(y) in range(len(y)) if 0.9 < y[i] <= 1.8])/10000
  print("P(a < x <= b) : {0:8.4f}".format(c4))
Run Code Online (Sandbox Code Playgroud)

目的是基本上将传递给sim()的参数传递给它并在其长度上迭代,同时仅增加1,因为只有那些在0.9和1.8之间的条件下找到的值为true.我正试图检查那个条件中的每个n个randoms.然后总结那些真实的.

顺便说一下,答案应该在0.2左右 - 如果你想检查一下,只考虑1.5是唯一适合0.9和1.8之间的方法.

我正在学习,感谢你的耐心等待.

python for-loop list-comprehension

5
推荐指数
1
解决办法
761
查看次数

Python Pollard P-1分解

我正在尝试在Python中实现Pollard的P-1因式分解。请注意,Rho方法有一些答案,但是此p-1是不同的,关于Wiki-1,我可以在这里给您提供的最好的是Wiki和Wolfram:

http://en.wikipedia.org/wiki/Pollard的s_p_%E2%88%92_1_algorithm

http://mathworld.wolfram.com/Pollardp-1FactorizationMethod.html

这是n中的一个因数,但始终找不到p。np和sp分别来自numpy和scipy。因此sp.uint64的内置函数是一个无符号的long 64 int(由于期望的整数的大小),np.prod(p)是列表p的累积乘积pi:

def pm1_attack(n,b):
  p = [2,3,5,7,11,13,17]; i=19; a=2
  while i<b:
    if is_prime(i,10): p.append(i)
    i+=2;
  k = sp.uint64(np.prod(p)); q = power2(a,k,n)
  g = euc_al_i((q-1),n)
  print "product pi: ",k
  print "q: ",q
  print "g: ",g
  #return a

print "pollard_pm1_attack(n,b): ",pollard_pm1_attack(n,2000)
Run Code Online (Sandbox Code Playgroud)

输出未找到p:

Python 2.7 (r27:82525, Jul  4 2010, 09:01:59) [MSC v.1500 32 bit (Intel)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> ================================ RESTART ================================
>>> 
p = 1300199 
q = 2063507 

euler_totient = …
Run Code Online (Sandbox Code Playgroud)

python primes prime-factoring factorization

2
推荐指数
1
解决办法
5644
查看次数

Python - 使用sympy求解的椭圆曲线的Matplotlib()

我画了一条椭圆曲线.我想沿着a画一条线P,Q,R(在哪里P并且Q将独立于这个问题确定).问题的主要问题P是,sympy solve()返回另一个等式,它需要返回一个值,以便可以用来绘制x值P.据我所知,solve()应该返回一个值,所以我在这里做错了,我只是完全没有看到.作为参考,这里P+Q=R应该看看:

在此输入图像描述

我一直在浏览文档和其他材料,这是因为我已经陷入麻烦了:

from mpl_toolkits.axes_grid.axislines import SubplotZero
from pylab import *
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.path import Path
import matplotlib.patches as patches
from matplotlib import rc
import random
from sympy.solvers import solve
from sympy import *


def plotGraph():
    fig = plt.figure(1)
    #ax = SubplotZero(fig, 111)
    #fig.add_subplot(ax)
    #for direction in ["xzero", "yzero"]:
        #ax.axis[direction].set_axisline_style("-|>")
        #ax.axis[direction].set_visible(True)
    #ax.axis([-10,10,-10,10])
    a = -2; b …
Run Code Online (Sandbox Code Playgroud)

matplotlib sympy elliptic-curve python-2.7 finite-field

2
推荐指数
1
解决办法
1240
查看次数

C++程序中不寻常的编译器错误.没有语法相关.Windows编程

我正在尝试在C++ MSVS2010中编译这个程序,并得到奇怪的编译器错误,如

 Error  12  error LNK1120: 1 unresolved externals   C:\Users\win7vm\Documents\Visual Studio 2010\Projects\WinDemo \Debug\WinDemo.exe    1.
Run Code Online (Sandbox Code Playgroud)

我也得到了

 Error  11  error LNK2019: unresolved external symbol "public: int __thiscall Dice::returnRoll(void)" (?returnRoll@Dice@@QAEHXZ) referenced in function "public: void __thiscall Dice::drawSpots(struct HDC__ *,int,int,int,int,int,int,int)" (?drawSpots@Dice@@QAEXPAUHDC__@@HHHHHHH@Z)    C:\Users\win7vm\Documents\Visual Studio 2010\Projects\WinDemo \WinDemo \Debug\WinDemo.exe   1\Dice.obj
Run Code Online (Sandbox Code Playgroud)

这两者似乎都与语法无关,我并没有完全理解它们.基本上,我们的想法是让switch语句显示从另一个函数传递给该函数的值.我几乎可以肯定这是一个简单的参考/指针问题,我完全不知道了.这个类有一个标题,一个windows.h(开箱即用的未修改,所以你可以在需要的时候查找它),以及带有主文件的函数(这里包含的函数和类).让我预先回答几乎肯定会出现的两个问题:a)是的,它绝对必须在c ++中使用windows.h文件.b)是的,我知道有一百个更好的库和语言用于这个问题,我在这里没有选择.有人也可能试图指出声明的全局变量.在对相对较短的代码块进行故障排除时,全局变量是暂时但必要的不便.我意识到你们中的许多人都非常擅长C++,但我要求你们耐心地用我的低级C++编程来解释你的答案.谢谢.:)

**//头文件

#include <windows.h>
#include <math.h>
#include <vector>
using namespace std;

int count=0;
int *result = &count;

class Dice
{
public:
    void drawSpots(HDC hdc, int x1,int y1, int x2,int y2, int r, int g,int b);
    int …
Run Code Online (Sandbox Code Playgroud)

c++ visual-c++

0
推荐指数
1
解决办法
352
查看次数

Python代码翻译问题或随机数生成中的语言差异

我是Python的新手,没有QBasic的经验.我在Python中运行一个模拟,它提出了理论上错误的值.然后我在QBasic中运行它并提出了理论预测值.

以下是测试用例.我只计算概率P(0.9 <%Y <= 1.8),因此计数必须落在这些值内.1-random.random()仅适用于那种情况,当我尝试在所有情况下使用它时,它们仍然提出了错误的值.这是理论结果,你可以看到它是如何不同的:

y~u(0,1)= 0.575

y~exp(2)= 0.3371

x1~u(0,1)x2~u(0,2)= 0.4475

P(y = 0.25)= 0.8 P(y = 1.5)= 0.2 = 0.32


在Python中,模拟代码是:

def test():
  x1,x2,c = 0.0,0.0,0.0
  for i in range(10000):
    if random.random()< 0.8:
      x1 += 0.25
    else:
      x2 += 1.5
    y = x1 + x2
    if y>0.9 and y<=1.8:
      c = c + 1
  return x1,x2,c

print "test: ",test()

def sim(a,b):
  #pyab1 = sum([a for a in a if a>0.9 and a<=1.8])/10000
  #pyab2 = sum([b for b in b …
Run Code Online (Sandbox Code Playgroud)

python simulation qbasic

0
推荐指数
1
解决办法
218
查看次数

Python - 使用try/exception和嵌套条件列表理解

此代码应在O(n)线性时间内找到列表的模式.我想把它变成一个列表理解,因为我在教自己Python,并且我正在努力提高我的列表理解能力.
这些都是提供信息,但没有真正回答我的问题:

将嵌套循环和条件转换为列表推导

列表理解条件中的`elif`

嵌套列表理解等效

我遇到的问题是嵌套if和try/except.我确信这是一个简单的问题,所以初级Python程序员可能很快得到答案.

def mode(L):
    # your code here
    d = {}; mode = 0; freq = 0
    for j in L:
        try:
            d[j] += 1
            if d[j] > freq:
                mode = j; freq = d[j]
        except(KeyError): d[j] = 1
    return mode
Run Code Online (Sandbox Code Playgroud)

请注意,L参数是这样的int列表:

L = [3,4,1,20,102,3,5,67,39,10,1,4,34,1,6,107,99]
Run Code Online (Sandbox Code Playgroud)

我想的是:

[try (d[j] += 1) if d[j] > freq (mode = j; freq = d[j]) except(KeyError): d[j] = 1 for j in L]
Run Code Online (Sandbox Code Playgroud)

但我没有足够的胶带来修复语法错误的程度.

python list-comprehension try-catch conditional-statements python-2.7

0
推荐指数
1
解决办法
1610
查看次数