Vinnaren i pepparkakshustävlingen!
2013-04-12, 16:55
  #157
Medlem
Citat:
Ursprungligen postat av Enkan
Amen va fan. Tack så mycket! Det gjorde allt mycket enklare.
Inga problem, gl !
Citera
2013-04-16, 17:54
  #158
Medlem
Tjenare

Slitit mig i håret i två dagar strax och tänkte att det får fan räcka att försöka själv.
Har till uppgift att skapa en cirkel med hjälp av två inputs, den ena är arean för cirkeln och den andra är avståndet som cirkeln skall rotera runt från centrum på figuren. Alltså (0,0) och inputen är 5 för rotationsradien så skall cirkeln befinna sig 5 steg utåt. Här är den kod jag kommit fram med hittills men får fan inte skiten att rotera runt den radie jag själv sätter utan den snurrar runt sin egen satta cirkelpunkt. Att den bara snurrar runt sin egen axel kan jag förstå någorlunda på grund av cos och sin funktionen men vet inte hur jag ska lösa problemet.

function Lab9a_1(a,rotRad)
close all
[x,y] = meshgrid(-200:200);
circleRadius = a/pi;
radius = sqrt(circleRadius);

for j = 1:30

cx = x + cos(j*2*pi/30);
cy = y + sin(j*2*pi/30);
drawDisk(cx-rotRad,cy-rotRad,radius);
mov(j) = getframe;
end
movie(mov,10);
end

Min hjälpfunktion:
function drawDisk(cx,cy,radius)
[x,y] = meshgrid(-200:200);
circleImage = (cx).^2 + (cy).^2 < radius^2; % the disk
imagesc(x(:,1),y(:,1),circleImage);

Tack på förhand och trevlig eftermiddag!
Citera
2013-04-16, 19:31
  #159
Medlem
Tjena! Utgick inte så mycket från ditt lösningsförslag, utan från din problembeskrivning, så jag kan ha missat något. Gjorde den på ett lite annorlunda sätt dessutom. Men du kan ju kolla om det är något som skulle vara av intresse.

Btw, har du inte formulerat din radie lite fel? Om din variabel a var arean, så borde väl radien vara sqrt(a/pi) ?

%--------------

clc, clear variables, clf, close all
d = 4;
a = 12.5664;
r = sqrt(a/pi)

theta = linspace(0,2*pi);

% hold on
for i = 1:360

x = r.*cos(theta)+d.*cosd(i); %cosd och sind är samma, bara att
y = r.*sin(theta)+d.*sind(i); %deras argument är i grader istället för rad

plot(x,y)
axis([-10 10 -10 10])

pause(0.01)
end

%--------------
Citera
2013-04-17, 16:13
  #160
Medlem
Citat:
Ursprungligen postat av Rasnafd
Tjena! Utgick inte så mycket från ditt lösningsförslag, utan från din problembeskrivning, så jag kan ha missat något. Gjorde den på ett lite annorlunda sätt dessutom. Men du kan ju kolla om det är något som skulle vara av intresse.

Btw, har du inte formulerat din radie lite fel? Om din variabel a var arean, så borde väl radien vara sqrt(a/pi) ?

%--------------

clc, clear variables, clf, close all
d = 4;
a = 12.5664;
r = sqrt(a/pi)

theta = linspace(0,2*pi);

% hold on
for i = 1:360

x = r.*cos(theta)+d.*cosd(i); %cosd och sind är samma, bara att
y = r.*sin(theta)+d.*sind(i); %deras argument är i grader istället för rad

plot(x,y)
axis([-10 10 -10 10])

pause(0.01)
end

%--------------

Ja det är ju så funktionen skall vara, men skall skapa en bild och göra en film utav det med funktionerna imagesc och movie etc.
Citera
2013-04-18, 20:36
  #161
Medlem
Citat:
Ursprungligen postat av Rasnafd
Tjena! Utgick inte så mycket från ditt lösningsförslag, utan från din problembeskrivning, så jag kan ha missat något. Gjorde den på ett lite annorlunda sätt dessutom. Men du kan ju kolla om det är något som skulle vara av intresse.

Btw, har du inte formulerat din radie lite fel? Om din variabel a var arean, så borde väl radien vara sqrt(a/pi) ?

%--------------

clc, clear variables, clf, close all
d = 4;
a = 12.5664;
r = sqrt(a/pi)

theta = linspace(0,2*pi);

% hold on
for i = 1:360

x = r.*cos(theta)+d.*cosd(i); %cosd och sind är samma, bara att
y = r.*sin(theta)+d.*sind(i); %deras argument är i grader istället för rad

plot(x,y)
axis([-10 10 -10 10])

pause(0.01)
end

%--------------
Löste problemet, här kommer slutgiltiga koden.

function Lab9a_1(a,rotRad)
close all
circleRadius = sqrt(a/pi);

cx = 0;
cy = 0;

for j = 1:30
cx = rotRad*cos(j*2*pi/30);
cy = rotRad*sin(j*2*pi/30);
drawDisk(cx,cy,circleRadius);
mov(j) = getframe;
end
movie(mov,11,24);
end

function drawDisk(cx,cy,radius)
[x,y] = meshgrid(-200:200);
circleImage = (x-cx).^2 + (y-cy).^2 < radius^2; % the disk
imagesc(x(:,1),y(:,1),circleImage);
Citera
2013-04-24, 18:09
  #162
Medlem
kvertys avatar
När man använder [V,D] = eig(A) får man ju som bekant en diagonal matris D och en matris V med normerade egenvektorer, som tillhör A's egenrum.

Kan man få icke-normerade egenvektorer istället, så man slipper decimaltalen?
Citera
2013-04-24, 18:22
  #163
Medlem
Citat:
Ursprungligen postat av kverty
När man använder [V,D] = eig(A) får man ju som bekant en diagonal matris D och en matris V med normerade egenvektorer, som tillhör A's egenrum.

Kan man få icke-normerade egenvektorer istället, så man slipper decimaltalen?

Jag tror inte man kan göra det, det är väl inte säkert att alla egenvektor kan representeras som heltal?
Citera
2013-04-24, 18:28
  #164
Medlem
kvertys avatar
Citat:
Ursprungligen postat av Stork123
Jag tror inte man kan göra det, det är väl inte säkert att alla egenvektor kan representeras som heltal?

Är väl bara skala med lämpligt tal? Om egenrummet som svarar mot λ är n-dimensionellt så innebär det ju att lösningen till (A - λI)v = 0 har n stycken fria variabler (t1, ... ,tn) som kan väljas lämpligt och på så viss få heltalsvektorer.

Min fråga är då om det finns något sätt att från dom normerade vektorerna skala om dom till heltalsvektorer.
Citera
2013-04-26, 11:23
  #165
Medlem
fittslems avatar
Konstruktion utav en ortonormerad bas i Matlab mha Gram-Schmidts metod

Just nu är e1 vinkelrät mot e2 och e3, men e2 = -e3. Vad kan vara fel?

Kod:
calca = [424 293 123; 431 258 109; 446 253 128];
origo = [400.6667  268.3333  121.0000; 431.3333  270.0000  125.0000];

% Gram-Schmidt

u1 = [calca(1,1,1) - origo(1,1) calca(1,2,1) - origo(1,2) calca(1,3,1) - origo(1,3)];


e1 = u1/norm(u1);

u2 = [calca(2,1,1) - origo(1,1) calca(2,2,1) - origo(1,2) calca(2,3,1) - origo(1,3)];


CosTheta = dot(u2,u1) / (norm(u1)*norm(u2));
u2proju1 = norm(u2)* CosTheta* e1;


v2 = u2 - u2proju1;

e2 = v2/norm(v2);


u3 = [calca(3,1,1) - origo(1,1) calca(3,2,1) - origo(1,2) calca(3,3,1) - origo(1,3)];

CosTheta = dot(u3,u1) / (norm(u1)*norm(u3));
u3proju1 = norm(u3)* CosTheta* e1;

CosTheta = dot(u3,u2) / (norm(u2)*norm(u3));
u3proju2 = norm(u3)* CosTheta* e2;


v3 = u3 - u3proju1 - u3proju2;

e3 = v3/norm(v3);
Citera
2013-05-09, 15:45
  #166
Medlem
infour.13s avatar
Matlab Tetraed Lösning

Lat T beteckna tetraedern vars horn ar punkterna (0; 0; 0), (a; 0; 0), (0; b; 0) och
(0; 0; c), dar a; b; c > 0.
(a) Bestam ekvationerna for de plan som utgor T:s randytor. (Denna uppgift kan
med fordel goras hemma.)
(b) Skriv en matlabfunktion vars forsta rad ar:
function [d n]=tetradist(x,y,z,a,b,c)
Om punkten (x; y; z) ligger inuti T ska de returnerande variablerna d och
n vara avstandet fran (x; y; z) till randen respektive enhetsnormalvektorn i
narmaste randpunkt som pekar mot (x; y; z). Om (x; y; z) ligger utanfor eller
pa randen till T returneras avstandet till det narmsta av tetraederns horn
(d) samt koordinaterna for det hornet (n).
2 (4)
(c) Visa att din kod verkligen fungerar genom att valja a = 1, b = 2, c = 3 och
minst tre punkter (x; y; z) varav en ligger inuti T, en ligger pa randen till T
och en ligger utanfor T.
Tips: Du kan anvanda foljande kod for att slumpa fram en punkt inuti T.
x=rand(1)*a, y=rand(1)*b*(1-x/a), z=rand(1)*c*(1-x/a-y/b)



Hjälp tack !!
Citera
2013-05-09, 17:20
  #167
Medlem
hur långt har du kommit, jag kommer bara ge dig svaret om du inte har en specik fråga.
Citera
2013-05-16, 16:12
  #168
Medlem
Liten fråga:

>> u = [8 3 -1 7];
>> x = linspace(-45,45);
>> v = polyval(u,x);
>> plot(x,v)

u är alltså vektorn som beskriver polynomet 8x^2 + 3x -x + 7

Fråga: Hur beskriver man sin(pi*x) i en vektoroperation? Eller för den delen e^x ?
Alltså om man då har sin(pi*x) + e^x hur avbildar man det polynomet som en vektor som i första exemplet?
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback