Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Download
295 views
ubuntu2004
Kernel: Octave

Octave 7.1.0 on CoCalc Ubuntu 20.04

import matplotlib.pyplot as plt x = [1, 2, 3, 4, 5, 6, 7, 8, 9] y1 = [1, 3, 5, 3, 1, 3, 5, 3, 1] y2 = [2, 4, 6, 4, 2, 4, 6, 4, 2] plt.plot(x, y1, label="line L") plt.plot(x, y2, label="line H") plt.plot() plt.xlabel("x axis") plt.ylabel("y axis") plt.title("Line Graph Example") plt.legend() plt.show()
warning: using the gnuplot graphics toolkit is discouraged The gnuplot graphics toolkit is not actively maintained and has a number of limitations that are unlikely to be fixed. Communication with gnuplot uses a one-directional pipe and limited information is passed back to the Octave interpreter so most changes made interactively in the plot window will not be reflected in the graphics properties managed by Octave. For example, if the plot window is closed with a mouse click, Octave will not be notified and will not update its internal list of open figure windows. The qt toolkit is recommended instead. error: the import function is not yet implemented in Octave error: called from import at line 63 column 3 x = 1 2 3 4 5 6 7 8 9 y1 = 1 3 5 3 1 3 5 3 1 y2 = 2 4 6 4 2 4 6 4 2 error: 'plt' undefined near line 1, column 1 error: 'plt' undefined near line 1, column 1 error: 'plt' undefined near line 1, column 1 error: 'plt' undefined near line 1, column 1 error: 'plt' undefined near line 1, column 1 error: 'plt' undefined near line 1, column 1 error: 'plt' undefined near line 1, column 1 error: 'plt' undefined near line 1, column 1
version()
warning: using the gnuplot graphics toolkit is discouraged The gnuplot graphics toolkit is not actively maintained and has a number of limitations that are unlikely to be fixed. Communication with gnuplot uses a one-directional pipe and limited information is passed back to the Octave interpreter so most changes made interactively in the plot window will not be reflected in the graphics properties managed by Octave. For example, if the plot window is closed with a mouse click, Octave will not be notified and will not update its internal list of open figure windows. The qt toolkit is recommended instead. ans = 7.1.0
function sqs = squares(n) # Compute the squares of the numbers from 1 to n. ### BEGIN SOLUTION # Put correct code here. This code is removed for the student version, but is # used to confirm that your tests are valid. if (n <= 0) error("n must be positive") endif sqs = (1:n).^2; ### END SOLUTION endfunction
# [Modify the tests below for your own problem] # Check that squares returns the correct output for several inputs: assert(squares(1), [1]) assert(squares(2), [1 4]) # Check that squares raises an error for invalid input: number_of_errors = 0; for n = [0 -1] try squares(n); catch number_of_errors++; end_try_catch endfor assert(number_of_errors, 2) ### BEGIN HIDDEN TESTS # students will NOT see these extra tests assert(squares(10), [1 4 9 16 25 36 49 64 81 100]) ### END HIDDEN TESTS
function s = foo(a, b) # Compute the sum of a and b. ### BEGIN SOLUTION s = a + b; ### END SOLUTION endfunction
foo(23,23)
ans = 46
[2 3 4]' * [4 3 -1]
ans = 8 6 -2 12 9 -3 16 12 -4
x = rand(3,3)^3
x = 0.8138 0.2395 0.1643 0.8725 0.2436 0.1806 0.6201 0.2097 0.1537
save r-octave.mat x -7
scatter(sort(rand(1000, 1)), sort(randn(1000, 1)))
Image in a Jupyter notebook
i = 0:.1:2*pi; plot(i, sin(i))
Image in a Jupyter notebook
pkg load symbolic; syms x; f = sin(x); diff(f,x)
Symbolic pkg v2.9.0: /usr/local/lib/python3.8/dist-packages/sympy/__init__.py:672: SymPyDeprecationWarning: importing sympy.core.compatibility with 'from sympy import *' has been deprecated since SymPy 1.6. Use import sympy.core.compatibility instead. See https://github.com/sympy/sympy/issues/18245 for more info. self.Warn( Traceback (most recent call last): File "<stdin>", line 1, in <module> File "<stdin>", line 12, in octoutput_drv File "<stdin>", line 54, in octoutput File "<stdin>", line 55, in octoutput File "/usr/local/lib/python3.8/dist-packages/sympy/__init__.py", line 677, in __getattr__ return getattr(self.mod, name) AttributeError: module 'sympy.core.compatibility' has no attribute 'integer_types' Waiting................warning: readblock: timeout of 30 exceeded, breaking out warning: called from readblock at line 101 column 7 python_ipc_popen2 at line 99 column 16 python_ipc_driver at line 62 column 15 pycall_sympy__ at line 163 column 11 valid_sym_assumptions at line 38 column 10 assumptions at line 82 column 7 syms at line 97 column 13 no output so far error: ipc_popen2: something wrong? timed out starting python error: called from python_ipc_popen2 at line 101 column 7 python_ipc_driver at line 62 column 15 pycall_sympy__ at line 163 column 11 valid_sym_assumptions at line 38 column 10 assumptions at line 82 column 7 syms at line 97 column 13 error: diff: order K must be a scalar or []
pkg load symbolic; syms x f = 2 * (cos(x) + sin(x)^2) f1 = diff(f, x)
/usr/local/lib/python3.8/dist-packages/sympy/__init__.py:672: SymPyDeprecationWarning: importing sympy.core.compatibility with 'from sympy import *' has been deprecated since SymPy 1.6. Use import sympy.core.compatibility instead. See https://github.com/sympy/sympy/issues/18245 for more info. self.Warn( Traceback (most recent call last): File "<stdin>", line 4, in <module> File "<stdin>", line 12, in octoutput_drv File "<stdin>", line 55, in octoutput File "/usr/local/lib/python3.8/dist-packages/sympy/__init__.py", line 677, in __getattr__ return getattr(self.mod, name) AttributeError: module 'sympy.core.compatibility' has no attribute 'integer_types' error: Python exception: AttributeError: module 'sympy.core.compatibility' has no attribute 'integer_types' occurred while copying variables to Python. Try "sympref reset" and repeat your command? (consider filing an issue at https://github.com/cbm755/octsympy/issues) error: called from pycall_sympy__ at line 191 column 5 valid_sym_assumptions at line 38 column 10 assumptions at line 82 column 7 syms at line 97 column 13 f = 2.9837 2.4703 2.3462 2.9776 2.4955 2.3597 2.9693 2.3961 2.2882 error: diff: order K must be a scalar or []
xx = -10:0.1:10; plot(xx, f(xx))
warning: non-integer range used as index error: f(-10): subscripts must be either integers 1 to (2^63)-1 or logicals
pkg load image
a = ones(100, 100); b = ones(100, 100); b(3, 1) = .5; psnr(a, b)
ans = 46.021

This plot shows the famous 3D sombrero.

A quadratic meshgrid of xx and yy coordinates is evaluated via x2+y2+ϵ\sqrt{x^2 + y^2} + \epsilon and the value rr is then the value plotted along the third dimension.

Reference: 3d plots

tx = ty = linspace (-8, 8, 41)'; [xx, yy] = meshgrid (tx, ty); r = sqrt (xx .^ 2 + yy .^ 2) + eps; tz = sin (r) ./ r; mesh (tx, ty, tz); xlabel ("tx"); ylabel ("ty"); zlabel ("tz"); title ("3-D Sombrero plot");
Image in a Jupyter notebook
[x,y] = meshgrid(-16:0.5:16); r = hypot(x,y)/2 + eps; figure; surf(sin(r)./r); colormap(jet);
Image in a Jupyter notebook

This draws the set of points, where the given equation is satisfied. Here, it shows a tilted ellipse.

x2+3(y−1)2+xy2=6x^2 + 3 (y-1)^2 + \frac{x y}{2} = 6

Reference: ezplot

ezplot (@(x, y) x.^2 + 3 * (y - 1).^2 + .5 * x .* y - 6)
Image in a Jupyter notebook

Imagine you want to evaluate a binary function f(x, y):=x+2yf(x,\,y) := x + 2 y.

For evaluating it in vectorized notation, you need a grid for the cartesian product of all xx and yy.

x = 0:3; y = 0:4; [xx, yy] = meshgrid(x, y); xx + 2*yy
ans = 0 1 2 3 2 3 4 5 4 5 6 7 6 7 8 9 8 9 10 11

dsolve and sympy in symbolic

pkg load symbolic syms y(x) de = diff(y) == x; f = dsolve(de, y(1) == 1)
Traceback (most recent call last): File "<stdin>", line 4, in <module> File "<stdin>", line 12, in octoutput_drv File "<stdin>", line 55, in octoutput File "/usr/local/lib/python3.8/dist-packages/sympy/__init__.py", line 677, in __getattr__ return getattr(self.mod, name) AttributeError: module 'sympy.core.compatibility' has no attribute 'integer_types' error: Python exception: AttributeError: module 'sympy.core.compatibility' has no attribute 'integer_types' occurred while copying variables to Python. Try "sympref reset" and repeat your command? (consider filing an issue at https://github.com/cbm755/octsympy/issues) error: called from pycall_sympy__ at line 191 column 5 valid_sym_assumptions at line 38 column 10 assumptions at line 82 column 7 syms at line 97 column 13 error: 'dsolve' undefined near line 1, column 1 'dsolve' is a method of class 'sym'; it must be called with a 'sym' argument (see 'help @sym/dsolve'). Please read <https://www.octave.org/missing.html> to learn how you can contribute missing functionality.

Octave's ODE PKG in Action

pkg load odepkg;
dxdt = @(t, x) - 0.24 * x.^2 + t; tsteps = [0:0.1:5]; [t, x] = ode45(dxdt, tsteps, [-1:0.5:3]); plot(t, x)
Image in a Jupyter notebook

You can run numerical optimizations via the optim package.

In this example we minimize the classical Rosenbrock function in 20 dimensions using BFGS.

pkg load optim; function [obj_value, gradient] = objective(theta, location) x = theta - location + ones(rows(theta),1); # move minimizer to "location" [obj_value, gradient] = rosenbrock(x); endfunction dim = 20; # dimension of Rosenbrock function theta0 = zeros(dim+1,1); # starting values location = (0:dim)/dim; # true values location = location'; control = {Inf,1}; # maxiters, verbosity bfgsmin("objective", {theta0, location}, control);
Picked up _JAVA_OPTIONS: -Djava.io.tmpdir=/home/user/tmp -Xms64m ------------------------------------------------ bfgsmin final results: 65 iterations function value: 2.17563e-16 STRONG CONVERGENCE Function conv 1 Param conv 1 Gradient conv 1 used numeric gradient param gradient (n) change 0.00000 0.00000 -0.00000 0.05000 -0.00000 0.00000 0.10000 0.00000 0.00000 0.15000 -0.00000 0.00000 0.20000 -0.00000 0.00000 0.25000 0.00000 0.00000 0.30000 -0.00000 0.00000 0.35000 -0.00000 0.00000 0.40000 -0.00000 0.00000 0.45000 0.00000 -0.00000 0.50000 0.00000 -0.00000 0.55000 -0.00000 0.00000 0.60000 0.00000 -0.00000 0.65000 0.00000 -0.00000 0.70000 -0.00000 0.00000 0.75000 -0.00000 0.00000 0.80000 0.00000 0.00000 0.85000 0.00000 0.00000 0.90000 0.00000 0.00000 0.95000 -0.00000 0.00000 1.00000 0.00000 0.00000

testing java support

__have_feature__ JAVA
ans = 1
javaclasspath
STATIC JAVA PATH - empty - DYNAMIC JAVA PATH - empty -
a = 1.001; b = javaObject ("java.math.BigDecimal", a);
isjava (b) b.toString()
ans = 1 ans = 1.000999999999999889865875957184471189975738525390625
b.add(b).toString()
ans = 2.001999999999999779731751914368942379951477050781250
[3 4 5]
ans = 3 4 5
randn(5)
ans = -0.942697 -0.918958 -0.773994 1.525281 -0.293934 0.785315 -0.110466 -1.004230 -1.230870 1.671303 0.715892 -1.477990 0.655675 0.209721 0.857702 1.417878 0.381071 0.755058 -0.022367 0.528578 0.345888 1.377642 0.830293 0.158387 -0.840260
javaObject('java.math.BigInteger','0')
ans = <Java object: java.math.BigInteger>
randn(6,6) \ randn(6,1)
Restarting kernel... Done!
[Errno 9] Bad file descriptor
randn(6,6)
41 \ 4