Vart blir det fel i min kod?
Jag håller på med en övningsuppgift på Yata där jag ska beräkna de första 100 punkterna av X_n och Y_n. Jag får ut värden men får ut fel värden enligt Yata. Min kod gör ju det den ska göra. Men varför får jag ut fel värden?
import numpy as np
# Create numpy arrays to save computed points
X_n = np.zeros(100)Y_n = np.zeros(100)
# Set seedseed = 64 # LÅT STÅ I YATA!
np.random.seed(seed)
# Define functions
def f_x(n, x_n):
Ux = np.random.rand() * 2
return x_n - ((2*np.pi/100) * np.sin(2*np.pi*n/100)) * Ux
def f_y(n, y_n):
Uy = np.random.rand() * 2
return y_n + ((2*np.pi/100) * np.cos(2*np.pi*n/100)) * Uy
#Starting values
X_n[0]=1
Y_n[0]=0
#Looping functions in range and takes previous coordinates in calculation
for k in range(1, 100):
X_n[k] = f_x(k, X_n[k-1])
Y_n[k] = f_y(k, Y_n[k-1])
#Prints the 100 first values of f(x) and f(y)
print(X_n)
print(Y_n)
Koden ser rätt ut för mig. Kanske något att göra med ditt seed, men annars vet jag verkligen inte.
väldigt märklig uppgift
Förstår inte vad du gör med Ux och Uy. Det ska ju vara slumpmässiga tal 0 till 2.
Den är ju en variabel Ux=np.random.rand()*2 blir ju samma sak om jag gångrar med np.random.rand() istället för Ux.
Vad blir fel?
Jag får ut fel värden. Argumenten är det fel på säger min lärare.
Vad får du för värden? Du kan klistra in alla hundra här.
[ 1. 0.99700873 0.98762824 0.97686678 0.96707458 0.94646351 0.91321419 0.88207026 0.88029785 0.87877776 0.86219976 0.81257709 0.80950866 0.78968129 0.70583093 0.64468661 0.62282039 0.52496789 0.48223564 0.4410454 0.39045036 0.32119244 0.24425575 0.22793041 0.10385285 0.01443352 0.00352901 -0.06348281 -0.16378774 -0.24838881 -0.36378549 -0.39198841 -0.46159537 -0.51283699 -0.55951045 -0.56610434 -0.59793642 -0.6220051 -0.6287376 -0.65161156 -0.72258069 -0.76321687 -0.82022707 -0.83764617 -0.85949909 -0.88113717 -0.89127681 -0.91004151 -0.91129221 -0.91813187 -0.91813187 -0.91337865 -0.90480759 -0.88738413 -0.88591301 -0.85381846 -0.85348753 -0.8094655 -0.77760461 -0.7455653 -0.73438701 -0.71005408 -0.67594388 -0.59971283 -0.53668271 -0.50170548 -0.43497828 -0.42808375 -0.40988823 -0.38966417 -0.30161033 -0.28570427 -0.18136316 -0.11499876 -0.10196198 -0.0257734 0.05480222 0.10082974 0.10195192 0.11731968 0.20369147 0.26385614 0.29233368 0.32029535 0.41659661 0.46871048 0.48004067 0.50124886 0.58145327 0.5883596 0.61818464 0.65843336 0.69313312 0.71723821 0.72744083 0.7383431 0.75374932 0.77075027 0.77771375 0.77809464]
[ 0. 0.07112303 0.12720821 0.16567774 0.20156678 0.24892058 0.31295918 0.33202175 0.3550084 0.42234823 0.46284204 0.4630307 0.49754647 0.53237238 0.5528561 0.56961578 0.58146117 0.62211805 0.6230805 0.63723708 0.6525411 0.67051615 0.67639741 0.68025727 0.68780815 0.68780815 0.68068452 0.67912617 0.66664498 0.65627356 0.64656093 0.6420752 0.61436833 0.56325904 0.50644459 0.4441053 0.40950033 0.35352616 0.3436749 0.33925946 0.33761615 0.26617744 0.18798751 0.17644001 0.14057028 0.10108726 -0.01812929 -0.14016305... -0.96350984 -0.95214857 -0.93950662 -0.92673563 -0.8880348 -0.86542495 -0.8488067 -0.79180151 -0.7411946 -0.72000215 -0.68451209 -0.68418552 -0.58292247 -0.50264773 -0.48922885 -0.44491767 -0.33911003 -0.32235363 -0.26708224 -0.18295967 -0.06080134 0.03529858]
Som jag läser uppgiften är det k-1 som skall in i funktionen tillsammans med X_n[k-1]. Det är ditt n som skall ge Xn+1 i retur. Sedan motsvarande för Y förstås.
X_n[k] = f_x(k-1, X_n[k-1])
Ja förstås det måste ju vara samma. Detta måste vara det.
Det stämde tack alla!